Hello guys, i have been struggling to attempt using quaternion rotation in a simple shape key setup, in this case we are going to take as example a hand/wrist bone; so, this is my workflow:
-
Setup keyed poses of the hand in the timeline/dope sheet all in one action or separate actions per pose to begin the corrections of those deformations.
-
Start adding 4 empty shape keys (and later 4 more for separating them in .R .L sides) and then make one corrective shape key for each symmetrical pose to correct its deformation in sculpt/edit mode. Also the Hand bone is being rotated in its local coordinates and set as Euler rotation mode temporally for easier reading of the transformation applied but later converting that into quaternions (or not necessary at all if you know what values you did setup and or instead wrote down in case you forget) or also instead of that what i did was to simply store that information in the names of each pose action with the specified values setup, e.g. wrist-up-60deg.R or just the number without deg knowing is obviously already posed in degrees anyways or also without .R/L suffix taking into account the pose actions are already keyed symmetrically, and the suffix only matters for the shape keys that would be separated by .R/L out of a single symmetrical shape key created per each corrective pose.
-
Test animated poses and see how it interacts with every shape key and corresponding pose to find any issues or do more tweaks to the deformation.
-
Start adding the first driver: using a single variable set as average value and the single variable is either one x/y/z rotation input (here is missing the W input since i don’t know how to use it for a quaternions setup) of the Hand bone and then is tweaked the values of the linear curves (or non-linear if you want that kind of output) in the drivers graph editor. And repeat for X/Z rotations in their positive and negative directions (up/down and left/right, and the Y axis usually used for Twist deformation is not being used here)
-
Pose hand bone in its local rotation in its rest pose, drivers execute and works as expected in their specified values from its graph editor…except one problem occurs; when the Hand bone is rotated 90 degrees in the Y axis, the drivers fail because of the change of local orientation, and the values flip in their opposite directions: the up/down direction triggers instead left/right drivers and left/right direction triggers instead up/down drivers…
So how do how i make the drivers have a second variable or other workaround that still triggers the poses properly as if it was in rest pose but in 90 degrees orientation in the Y rotation that is ignored of course, because it flips the driver values and changes how the drivers work…
Thanks in advance for any help given, fellow blenderheads