// Examples of use:
// If your stepped blocking is getting out of sync, or you offset keys, this will re-key the objects
// To match your target object ( e.g, taking the misaligned animation of a hand and re-keying it so
// all its keys match the keys of the rest of the root - but still retain an approximation of the original motion )
//
// Its also possible to create an animation as a test, disregarding any organization of your key frames,
// then convert it to an animation that has keys on every controller ( e.g, a key for the whole body, on
// each pose ).. you can then analyse the key poses to see how you could create a similar animation using
// organized keyframing, and what kind of poses you would need to acheive the same look as your more
// layered or straight ahead approach ( this is kind of similar to baking the animation, say on each 4th
// frame, except that it has some logic to it concerning the timing of your keyframes on a top level object
// like the character's root )
// NOTE:
The script will only produce an "approximation" of the objects original animation, and is only as accurate
as the number of keys that you have on your master object. It is designed for working with stepped keys so does not try to reproduce tangent modifications...So if you have a hand animation with 20 keyposes and you are trying to align its keys to the 4 poses you have on the root, the result will not be accurate. The idea is that you can simply add keys to the root where you want detail in the hand animation, with the notion that the root animation is likely to be less complex and easier to manage ( polish ) despite the extra keys, and then at least you have a key on the whole body for every pose and your keyframes are more organized.
// Use:
// select the objects who's keys you want to "unify".. ( eg, the hand and fingers, head and torso etc, or whole rig )
// shift select the object who's keys you want to use as the target timing ( e.g the root )
// run "unifyKeys" from a shelf or hotkey.
// If a range is selected in the timeSlider, it will operate on that range, otherwise the whole range is used.
Please use the Feature Requests to give me ideas.
Please use the Support Forum if you have any questions or problems.
Please rate and review in the Review section.