I have been working on a way to add shapekeys to my model to get some quality deformations.
So far, I have had good luck adding those shapekeys to bones that rotate on a single axis,
such as knees, fingers and elbows. However, I am having issues on bones that rotate on multiple
axis like thighs, upper arms, feet and hands.
To illustrate my issue, I am linking a blend and a quick walk through to show the problem.
It has a simple base mesh rigged with Rigify.
Walk Through Instructions:
Open the blend. Select the left thigh fk bone and enter R,X,X, -90. Select the mesh. Under Shape Keys, you should see LegX-90.L with a value of 1.00. This will be Position-One. Now reselect the thigh bone and type, R,Z,Z,-90. This should point the leg to the side. Note the position of the thigh.fk.L bone. It should be W 0.500. X -0.500, Y -0.500, Z -0.500 This will be Position-Two. If you select the mesh, you will see that the LegX-90.L shapekey is still 1.00. This is what I want.
Clear the rotation on the thigh. Type R,Y,Y,-90. Then, R,X,X,-90. The thigh will now be in the same position as Position-Two in the first example. You can double check this in the N panel. (W-.5,X-.5,Y-.5,Z-.5) If you select the mesh now, the shapekey will show a value of 0.00.
This is my issue. I need to have predictability in the driver. You can see by rotating to the same position
with different means, there is a different result.
Clearly, my driver is wrong, but I can’t seam to get my head around what will work for this situation. I would guess
that the reason it does not work is because of the W component in quaternion rotations. There is not a way to track that
with the Transform Channel variable type.
Another quick explanation:
I would like the value of the driver to stay consistant when I raise the leg, regardless of other rotations. So if I lift the leg 45 degree, I want the shapekey value to be 0.5 and to stay there even if I rotate the leg from the front of the body, to the side.
Any help or hints on how to accomplish this will be greatly appreciated.