Swapping Skeleton / Adding bones to a hierarchy and sharing animation


I have a couple different models, and I want them to share animations.

I've successfully been able to transport an animation from one model to another by calling the model.fbx (for the model without animation) and model@animation (for the animations).

Suppose all my characters share a basic bone structure, but they each have unique bones added onto the basic hierarchy. Let's say they're all humanoid, but some might have a tail, wings or like an extra pair of arms or something.

These additions do not interrupt the basic hierarchy. (By this I mean I'm not sticking anything between say Spine1 and Spine 2. Instead I'll put the new bone as a child of Spine1)

When I put a group between the hierarchy, the interesting thing is that the animation did come over...but only up to the point where I interrupted the hierarchy.

For example, I animated a guy walking on a regular skeleton (Like Hip -> Spine -> etc). Then I created a new model, with empty groups between the hierarchy (Hip -> SpineGroup -> Spine). When I brought it into Unity, and tried to use the walk on the new model, it animated correctly, but only up to the point where I'd interrupted the hierarchy. So my model's legs were moving, but everything past the first spine joint (arms, etc) weren't animating anymore.

Anyone have any idea how I'd do this?

The reason for doing this is because I'm thinking it will save resources. I'm assuming if you have one basic animation, it's going to be lighter than having the same animation on all the different characters. Is this correct?

Thanks in advance

Ok, I got it working. I thought I'd share what I learned here in case anyone were interested.

So what I did was create a rig using nodes between the joints (like a maya group or a unity game object). This node receives no animation, so it's unaffected when you bring in an animation. This lets me tweak and adjust animations if needed.

As for getting these animations onto a different rig, here's what I did. The "unique joints" (those different from the base hierarchy) were all placed in their own group. This group was parented under another group from the original hierarchy. Since none of these are getting animation, they don't get in the way of the base animation.

(for example, you could take a humanoid animation and place it on winged angel. The angel would move like the human, but the wings wouldn't do anything because they're not getting animation)

Thanks a lot for the comment felix, it came in pretty handy for some other things.

One thing which will probably work would be to change your animation's import settings to "Store in nodes" instead of "store in root". This will distribute your animation to every bone which is actually animated. (http://unity3d.com/support/documentation/Components/class-Mesh.html - Import Settings)

It will probably get rid of your animation stopping at the changed bone, but you will have much more to do to get this animation over to another character.

I would really appreciate it if someone else has a better solution to this.