Is it possible to share one skeleton between nodes?

Very often in blender people create a model that is made of separate nodes.
These nodes share one armature and when it moves - every node moves.

Is it possible in jme to share one skeleton between different nodes ?
And if yes then if I run animation on an object that has bones, will the movement of the bones also affect the other node ?

If such situation is not supported and only one skeleton for node is possible, then I will only log a warning and any other node attached to the skeleton beside the first found will be ignored.

What are you trying? having different models shaing the skeleton?
Or attaching stuff to the model, eg a gun to a hand?

Sharing the skeleton.

Kinda like this right?

So what the above video does i certainly doable, by creating a copycontroll, that applies the bone transformations of the common used bones to the other skeleton.

If you mean direct sharing of a skeleton, I don’t really see the usecase, as both would have the exact same keyframe then?

If I get the movie rigtht, it shows different instances of identical or very similar skeletons that share the same animation.

The problem I came accross was that two entirely different meshes use different parts of one skeleton.
In example if you have a mesh of the dog as one object and its eyeballs as the second object - they both use the same armature.
But the eyes will only use two bones that are responsible for eyes movement while all the rest will be used by the dog object.

And I wondered if I can do something like that. And if yes, then if I play the dog’s animation which will make the skeleton to move - will the eyes move as well ?

Ah ok, I think attachment points would be the solution for this. That way you can let the eye follow some point in the skeleton.
I’m not sure if there is another current solution to do this.

@Kaelthas, it’s already supported by the engine (at least if i correctly understand what you mean).
You can have a skeleton bind to several geometries (that can optionally be structured as a subgraph with nodes), but the controls (Animcontrol and SkeletonControl) has to be on the parent Node.
For example Sinbad has around 7 different geometries, but only one skeleton.

What you have to do is simply attach the controls to the parent Node and the skeleton control will gather underlying meshes upon initialization. Of course all meshes must have a BoneWeight and boneIndex buffer, with indices that are relevant to the skeleton, otherwise the results are unexpected.

2 Likes

OK thanks a lot :slight_smile:

I will take a look on Sinbad then and will try to implement it in the importer in the case where armature is shared between meshes.