|08 August 2013||#1|
Join Date: Dec 2004
I'm working with some mocap files, and any of them doesn't have animation on root, but client ask me to make root moving with character. I can't parent it to anything, rig is going to be messed up, is there any way to make it move?
|08 August 2013||#2|
Senior Technical Animator
San Francisco, USA
Join Date: May 2004
Sure. You should use constraints.
Go to the Asset Browser, then select Templates > Constraints. You'll see a list of all the available constraints. You need to choose the right type of constraint, then click and drag it into the scene. For your case you'll probably need a Parent/Child constraint, or possibly just a Position constraint.
If you have the Navigator tab open when you drag the constraint into the scene, the navigator will automatically pop to the constraint and display the constraint settings. If not, you can find the newly added constraint in the Navigator Tab under Constraints.
You need to then go to the Viewer and select the object that you want to be the parent, say for example the hips of your character, and then hold Alt, click in the Viewer, and then drag to the box in the Constraint Settings window to the right of where it says "Source (Parent) 1" (under Objects). Then you do the same with the child object, in your case the root object: Select it in the Viewer and then Alt-drag into the box to the right of where it says "Constrained Object (Child)".
There are different ways to activate constraints that give different effects, but to keep it simple and make it so that the root follows the hips exactly, click on "Zero" in the Constraint settings. This will snap the root object Position and Rotation so that it follows the hips. You then select the root object and then in Key Controls, click the Animation drop down, and click Plot Selected (All Properties). Then go back to the Constraint Settings window and unclick the "Active" check box to turn off the constraint.
At this point the root object is moving with it's own animation, so you can now manipulate the keys as you would with any other object. You'll probably want to make it run along the floor, so if you select the root object and then select Y translation in the FCurves window, you can flatten all those keys to zero. You'll also probably want to flatten all but one axis of rotation.
If you have a lot of takes in the same file and they all need the root to follow the character, it's a lot of work to have to manually adjust and flatten keyframes for every take after you plot the animation, so here's a tip...
Select the root object, and then select the Properties tab in the resources window. Open the Degrees of Freedom rollout, then the Translation rollout. Check the "Enable Translation DOF" check box and then under the Min T and Max T rollouts, check Enable Min Y and Enable Max Y. Make sure that Min Freedom and Max Freedom are all set to 0.00, 0.00, 0.00.
What this does is constrains the movement of the object in a specific axis. Regardless of what you now try to do to that object, it won't move at all in the Y axis. This means that when you constrain the root object to the hips, it will follow the hips as before, but it will stay locked to the ground.
You can do the same with rotation DOF if you only want the root to rotate in one axis, but it's a little more complicated and depends on the root object.
|08 August 2013||#3|
Director / Animation Director
Join Date: Mar 2004
This is an alternative approach to the good suggestion above, and may or may not help depending on your existing hierarchy.
Determine the animation channels the client requires on the root - whether it's T or T&R.
We will produce a new character asset with the root joint required. Then it's a simple matter of retargeting from character to character. If the root is setup correctly you should obtain a 1:1 match between the source and target.
This is useful if you have a lot of animation done on one skeleton and now need to change the output. You can batch process all your existing anims with this.
Put the character into it's stance pose,
Save the characterisation (if not done already),
Add a skeleton joint & name it appropriately,
Position and orient it to match the whatever is the current 'root' joint (or where it needs to be),
Parent the existing hierarchy to that root.
In the characterisation tab, you can add the new root as Hips Translation (if only T is required)
If it needs to be T&R, it has to go into the Hips slot and you can re-order the spine links or omit the current root.
Activate the Characterisation and change the character name.
Change/Add a new namespace to the hierarchy - this will prevent naming clashes etc. on import.
Now you can select your existing animation as a source and the new skeleton as the target. if you set it up precisely, you should see a 100% match between the source and target.
Plot character to character and verify that you have the required motion channels on the root.
|Thread Closed share thread|