IK and Retargeting

Here’s a question from the chat with some videos I made. :smiling_face_with_three_hearts:

When I record my joints, it breaks IK.

I think I see what’s going on.

https://user-images.githubusercontent.com/2152766/151507582-198ba6ea-1424-4b1e-9e64-f70ed88ab181.mp4

In the above example, I’ve assigned markers onto the same joints that are driven by the IK Solver. Once I record, keyframes are put onto those joints; but that’s no good. They’re driven by IK (even though their channels show no signs of that… typical Maya).

So what should happen, is for recording to happen onto the ikHandle and pole vector (or any controls you have that in turn drive those). And that’s where Retargeting comes in.

https://user-images.githubusercontent.com/2152766/151507585-685bdd29-5ad9-4d3d-96af-24e49c904fde.mp4

So in this example, I retarget the marker from the joint onto the ikHandle and pole vector. For the root joint, I Untarget it, since I don’t want any keys recorded onto that joint. It’s handled by the IK solver. Every joint is in fact still handled by the IK Solver, with the IK Solver getting its ikHandle and pole vector from your newly recorded simulation.

Is it correct to delete the anim layer in the outliner, and hit ‘uncache’?

You could do this, yes. The layer can also be non-destructively disabled in the Anim Layer panel (bottom of the Channel Box). And once you record, the rSolver.cache attribute is enabled per default, so to re-simulate, you’ll want to turn this cache off. Either using Uncache or by flicking this attribute.

Also the only reason I used IK for this is because setting keyframes and animating the translate on the bone I care about didn’t seem to get considered by the ragdoll, so I suspect it only deals in rotations? Is that correct?

Yes and no;

  • Yes, the limbs are assumed to be connected, like physical human limbs. Your upper arm is connected to your torso, and doesn’t “translate” anywhere, it only rotates as a result of using your muscles.
  • No, you can tell e.g. the foot of your character to have a Pose Space = World which would include translation. There is individual control over translation vs. rotation under the Advanced Pose tab in the Attribute Editor of the Marker.
5 Likes