Rotational values offset or jump at random points

Hey all,

I’m a little bit stumped. Whenever I record a sim, the keys are a complete mess. I’m not really sure how to solve this problem.

This is the graph of one controller, and a lot of ctrls have the same problem where the keys are offset randomly. I tried using Euler filter and Smart Euler (from AnimBot) and either nothing changed or things got worse.

I also tried offsetting some of the values by 180 or 360, but the animation result looks a lot different than its original.

I need the curves to be as clean as possible because I’m trying to use anim-layer weights to blend between two simulations.


This is what the recorded graph looks like on a character’s leg.

When I try to offset it by 180, the Y values are the only ones that seem to have a problem.

I bring the Y-value kinks up by 90 but there’s a visible jump in the graph editor and in the animation. I’m not sure how I can fix this without manually fixing them frame by frame. There are at least 8 more controllers that has these “rotation offsets” more severe than this example.

Hey WangChoBo,

It is hard to say without seeing the file.
Are you baking a Joint or a control?
is it happening on a FK control or IK control?
Is the control properly oriented? (HIP /COG)?
Is it the tight, calf or ankle?

I would suggest:
1- make sure your controls are properly aligned and oriented with respect to a “COG/GLOBAL or master” also, rotation order could help to improve.
From what I can think, if the control orientation is correct to its father and the father is also involved on the SIM (HIP- FK Upper tight- FK calf- FK ankle) then it should not be .
if controls are IK, make sure the space where they are moving make sense “it is clean” XYZ …

Hope that helps !

Hey thanks for the quick reply!

To answer your questions:
They are all FK controls. I’m not the brightest when it comes to rigging but I’m sure they are all properly oriented in a rigging standpoint.

The joints that are suffering from these problems are:
root hip control, both shoulder controls, one arm control, one thigh control, and two additional controllers for a spear going through the character.

But I’ve encountered the same problems on other rigs that I am using currently and I know they are set up correctly/have proper orientations (like the Jason rig or the Dude rig).

If we’re talking about orienting within the plugin, then I’m afraid I’m a bit lost.

The Euler Filter can help keep rotations from alternating between -180 and +180, but sometimes the problem is a lack of available options for rotations. Sometimes a particular orientation simply isn’t possible without making big sweeping changes to all rotate channels.

Consider this example.

Here, the controls start out in a gimbal lock. To rotate either of these boxes around the global Y axis, you would need to tweak all axes at once. Ragdoll would too.

If the problem was solvable with lower rotation values, the Euler Filter or Quaternion Filter would find it. To ensure that isn’t the case, try this.


I can think of two options here.

  1. Give your axes more room
  2. Prevent limited axes from changing

Let’s have a look at option (1), which involves changing the Rotation Order.

  1. Select a problematic control
  2. In the Attribute Editor, find a suitable Rotation Order

Sometimes, Maya is able to make the transition without altering the current orientation of your control. Sometimes it does not, which you can spot in this video where the control changes as I change the order.

The end result is more opportunity for both you and Ragdoll to manipulate each rotation axis.

Alternatively, you can tell Ragdoll to avoid using one of more axes, by locking them. This is akin to locking a channel in Maya.

  1. Run the Manipulator
  2. Select a Marker
  3. Find which axis to lock
  4. Click the Lock icon

This would make available channels more capable of reaching any given rotation.

1 Like

awesome @marcus you rock man ! thanks