Thought I’d share how I have the body leaning setup as used in the Gifs I shared earlier.
How it was done:
First Step, getting the HMD, placed inside Character (Pawn). Fetch the values every tick and store them into local variables Head Rotation and Head Offset. Ignore Head velocity that is an experimental value used for determining jumping (kinda works :rolleyes:). Yaw offset is only used to account for misaligned camera/hmd.
Second Step, inside the animation blueprint Event Graph, grab the values found in the pawn rotate them to align with the local axis (they use Y as forward for some reason).
Third and Final Step, inside the animation blueprint Animation Graph, use the values with a combination of rotations and IK to adjust shoulder roll, leaning, and head rotation. The graph is pretty messy right now as it was used for a more of a proof of concept than a production environment, but it works. Note that the head rotation is split over two bones (neck and head at 30/70 split) to provide a more realistic head roll. The body leaning is not an ideal setup, but the values used here give a natural leaning by scaling the headoffset and forwarding that both as a Two Bone IK and a rotation for the spine_03 bone. Reach Rotation is used to add additional yaw rotation based on player trying to reach past current pose with their arms see this example use case.
It would be interesting to see how the setup can be improved upon as I’m using a lot of ‘feel good’ variables and I’m sure there is a more consistent approach.