Getting the rotation around the vector3.up.

Quaternion target = new Quaternion(transform.rotation.x, (LeftController.rotation.y + RightController.rotation.y)/2,transform.rotation.z, (LeftController.rotation.w + RightController.rotation.w)/2);
transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * 1.5f);

This is my method for guessing body rotation in VR it kind of works but has weird rotation at specific angles. I use the W and Y components of a Quaternion.

I am trying to find the “universal” vertical axis of the controller regardless of its other local axis’s.
Now i’m aware that not everyone will understand what I mean when I say this, so I have drawn up a quick representation for what I mean when I say “universal” axis and local axis.

I believe I have solved my problem with this helpful link
Yaw from quaternion