I thought I would share some info on the Ik Spline Advanced Twist Controls since I found a few questions about it online and also our new riggers were kind of confused about it
There are many ways to setup the twist along a spline IK joint chain.. Based on the character you are rigging you can choose what is best for you.
This tutorial assumes you are already familiar with the spline Ik setup and will be focusing only on the advanced twist settings.
First of all, if your aim axis along the joint chain is not “X”.. forget about this twist setup. you can see in the up Vector settings in the advanced twist controls in the attribute editor that the X axis is not supported, because it assumes X is the aim axis.
I did not investigate why this is the case since I usually use X as the aim axis in all of my rigs. “If you have a different experience or know why this is the case please share here I would love to know :)”
Proceeding forward with X aiming along the joint chain, you will likely want to distribute the twist between the start and end controllers for example: hips and chest controllers.
To achieve this result set the world Up Type to object Rotation Up(start/end).
Now set the World Up Object to the controller the is driving the first joint of the chain. The start controller for example: hips controller.
Set the World Up Object 2 to be the end controller for example: the chest controller.
“The Up Axis attribute specifies what local joint axis is aligned with the Up Object vectors specified in the Up Vector fields” . Sounds more complicated than what it really is.
All what you need to do is to choose which local joint axis to be your Up Axis.
In the Up vector fields you need to give the corresponding controller’s local axis to that Up Axis.
The Up Vector field is where you specify the start controller local rotation axis that corresponds to the joints Up Axis.
The Up Vector2 field is where you specify the end controller local rotation axis that corresponds to the joints Up Axis.
In my example scene, I chose positive Y to be my Up axis and the corresponding start controller’s local axis to that is positive Z.
so now the joints local axis Y is constrained to the controllers local axis Z.
Here is the final result with the above settings.
HINT: It will not make a difference for example if you chose your Up Axis to be positive Z, but then you have to change the Up Vectors fields to correspond to that, which in my example case is positive X.
I hope this was useful to you and provided more insight on the advanced Twist Controls settings. Cheers :)