basic hand to steering wheel IK setup: shoulder and elbow bones are too far inward

I have a basic “hand to steering wheel IK” setup here. unfortunately, the shoulder and elbow bones are too far inward into the driver’s body. This undesirable effect is especially apparent while turning.

Is there anyway to expand those bone positions/rotations more outward while retaining the original IK transforms?

Appreciate any potential answers!

Based on steering angle you can add a procedural Yaw upper body rotation ( distributed between spine01 and spine03/05 ) so that it’ll compensate for the arm length.

If this isn’t enough you could also add a procedural forward Pitch rotation, that will add compensation for the arm length.

are you able to demonstrate how this would look in a anim graph?

apologies, i’m relatively new to animations in general!

In AnimBP plug your driving pose into a Control Rig Node.
Feed also the steering value as well.

Inside Control Rig instead of using a steering value, I created a control that can rotate, which is basically the steering wheel.

First I’m getting the array of joints from spine_01 to spine_05, and doing a ForEach I’m getting each joint rotation quat.

I then use ToEuler to get XYZ rotation and add on Z, while plugging the other values into the From Euler node.

Below you’ll see a Get Transform, which is the steering wheel, where I also get the rotation by using the ToEuler node.

In this case I’m using absolute, since I just need the steering value clamped from 0 to 90, which I then remap to be 0 to 10.

By doing so if I rotate either left or right, the value I get is max 10.

I then use set Rotation, where the item is the array.

One important thing is to get the ratio from forEach, since it’ll distribute the rotation along the joints that are within the Item Array, otherwise you’ll end up with the same rotation for each joint.

Then I just use two simple BasicIK nodes.

One thing that I also did is to have two controls which are child of the steering wheel, that are basically where the hands shoould be attached.

So then I feed those control transform to the BasicIK node, so that when it turns, the IK will also drive the hands accordingly.

The result is something like this.
In my previous message I also mention that you can rotate the spine left/right, so if you want to do that you can use a similar setup that you see in the picture, just applied to the Y axis.