Hi,
I’ve got a game rig set up in Maya. Joints in one single hierarchy, controls in a separate one. The problem i’m running into is that if something is orient constrained and a parent of that node is non-uniform scaled, the orient constraint gives off the wrong values and the child of the scaling node starts rotating when it shouldn’t.
Now I’ve gone down the path of trying to mimic an orient constraint using my own nodes/connections just to get around this… but that seems crazy. Does anyone have any insight on non-uniform scale causing problems with orient constraints?
I should mention this is only a problem for an Arm IK setup I’m doing. If the arm is stretched and the body is moved, the wrist starts rotating when it should be staying put.
It was awesome meeting some of you at GDC, BTW.
Nevermind. Found a workaround.
[QUOTE=SuppleTeet;5648]Nevermind. Found a workaround.[/QUOTE]
Right on! Can you post your solution so the rest of us can see what you came up with, just in case anyone else runs into a similar issue?
Yeah no problem… well no problem if I can explain this clearly enough.
It turned out it was because I was orient constraining my joints to the IK joint chain, then orient constraining that to my IK/FK controls. Instead of constraining like this:
IK/FK Ctrl -> IK Joint -> Joint(used for deforming)
I did it like this:
IK/FK Ctrl -> IK Joint
IK/FK Ctrl -> Joint(used for deforming)
Which seemed to fix it. Not 100% sure why that works… I guess the final deforming joint is just getting a more solid set of WS rotate values.
The problem is orient constraint does not take into account inverseScale attribute of joint(or the Segment Scale Compensation). I think it’s similar to adding a group node on top of wrist joint and then constraint that group instead of wrist joint.