Seeking Better Solution for IK Wrist Joint Euler Problem

by Mauriello posted 1146 days ago | 2 comments

I have a 3 joint ik chain for a left arm. Primary axis is X, Secondary is Z pointing Z+. The ik wrist joint has a Euler hiccup on Y occasionally. That joint is ultimately driving forearm twist so the hiccup causes the forearm to candy wrapper. My hack fix is to create a keyable switch that will add or subtract 360 to the Y offset of its orient constraint (constrained by the ik controller).

What's a better way?

by SplineO posted 1145 days ago

Couldn't you just follow Voxels answer here?

Other than that, I normally use a nonRoll setup for the Wrist and one for the Forearm. The nonroll being a copy of my forearm and wrist joint, with an IK RP Solver going from forearm to wrist and the polevectors on the ikHandle set to 0 on xyz and the ikHandle parented to the mein forearm joint. (This basically aims to the wrist but ignores twist). I then do the same setup from wrist to wristEnd with the ikHandle parented to the main wrist. Finally I parent a copy of my nonRoll Wrist under the nonRoll wrist(hope that makes sense) and aimConstrain it to the nonRoll end with the actual Wrist being the upvector.

Feels pretty stable to me most of the time!

I really wish I could find a clever and efficient way to do the nonRoll part with nodes only! Plus an aimConstraint maybe .. getting rid of all those constraints.

by chalk posted 1110 days ago

+1 anything that negates the x spin is what you need. The 180 flip will always be there unless you wind up the spin and then devolve it back. That has more issue interns of keyframe data, scrubbing, caching etc. Our wrists, shoulder, hips and ankles are amazing things as they are built not to pop out and this has an uncanny resemblance to a angleAxis i.e a human representation of a quaternion - An aim and a spin about it. It has infinite spin about a hemisphere - i.e. 90 degrees. A Maya aimConstraint with no world up is identical to it - it will use the parent space to control the spin about the axis its aiming at.