Blending animations and procedural control

Hello! I was wondering what is the recommended practice to blend Actor animations with procedural control done through controlJoint. Apparently, when you take control over a joint the animations stop affecting it. Thanks!


Usually people solve this by introducing an intervening joint. Let the animation control joint A, and let your program control joint B. Joint A is connected to joint B, or vice-versa.


Right! So ideally you want to have jointB (procedural joint) as close as possible to length 0. Am I correct?


I guess that depends on precisely what effect you’re trying to achieve with your procedural control.

Sure. Thanks David!

I’m going to revive this thread because adding extra joints is just half of a solution.

To put it all in context… let say I have a procedural head-look controller and a regular idle animation. I want my character to smoothly look at the target, maintain a proper posture, and then go back to the idle pose. If the idle animation affects (eg.) head and neck rotation then the head-look motion will look unnatural.

The problem is that using extra joints for procedural control is equivalent to add the head-look motion over the idle animation. In our case the best solution is to override the idle animation with the head-look motion, so to get a proper posture guaranteed by the head-look controller.

As far as I can see, controlJoint shouldn’t prevent a joint to be updated by a regular animation, leaving to the programmer the decision on whether override or add motion to it.

Any chance to have this feature in Panda any time soon?


What other way could it possibly work? What does it mean if I control a joint and apply a custom transform, on top of the transform already applied by the animation?

If it means it should compose (multiply) the two transforms together, then this is precisely the same thing as inserting an intervening joint, because joints are transformed by their parent joints.

So I don’t see what the problem is.


If I understand correctly, you want to have either your own transform on the control joint or the transform from the animation, but not both at the same time. Is that right?
You can do this by making a second joint that you turn into a control joint as suggested, but then make the first joint a subpart using the Actor.makeSubpart command. Now you can stop the idle animation playing on that joint.