(Solved) Binding different models into Character

I would like some help on how I can combine multiple models into one character.

I have a rigged human model in Blender with one animation, the different body parts are different objects. When I export the model, the different objects are in separate .mesh.xml like

Arms.mesh.xml
UpperBody.mesh.xml
Pelvis.mesh.xml
Legs.mesh.xml
Hands.mesh.xml
Feet.mesh.xml
Head.mesh.xml

How do I bind these all together in JME3 so it looks normal?

This is an easy fix in Blender. Switch into object mode, select all of the separate objects with A, and merge them into a single mesh with Ctrl J.

Yeah, but I want them to be separate objects, so then I can, for instance, load IronGauntlets.mesh.xml instead of Hands.mesh.xml and my character will be wearing Iron Gloves

If the character was one model, I don’t know how I could bind the gloves to his hands and make them play the animation, you know what I mean?

Ah, I see. What you want to use are attachment nodes. Basically you create an extraneous bone in your mesh, and use this in Jmonkey to attach different models to, I.E. gloves on a hand. The same bone is implemented in your glove model, and the two pair at the same location.

Do the gloves need to have the animation in it’s skeleton for that? Because only the UpperBody model has the animated skeleton, the other models have the exact same skeleton but just no animations

Shouldn’t be a problem, as long as the bone it attaches to is one that deforms with the animation. The glove ‘follows’ the animation path, as it essentially parents itself to the bone. Than something like this to implement

rig.getControl(SkeletonControl.class).getAttachmentsNode(“name_of_attachment_bone”).attachChild(whatever_your_attaching);

Okay, so I made the character one whole object, and the two gloves are one object. And now when I try to add the gloves this happens

I see what you did. The gloves themselves shouldn’t have a copy of the meshes skeleton. I found a video that shows the concept pretty well :smiley:

Just attach them all to one node and make a Control that executes the animations on all at once.

Okay, I see what you mean, but the fingers in the animation move and rotate, but from the looks of this video, the attached object is static (The gloves don’t contain the animation themselves).

[quote=“normen, post:9, topic:32843, full:true”]
Just attach them all to one node and make a Control that executes the animations on all at once.
[/quote] The gloves don’t have the animation though.

So add the animation, the engine can’t magically apply some animation to another mesh. It doesn’t know what a glove is.

Right, but I have more than just one pair of gloves, and it would be annoying to add the animation to every pair of gloves, and boots and stuff for every animation I have for my character. The gloves have the exact same skeleton as the character, can’t I do something with that?

Well unless you make your animations completely procedural there won’t be any way around that. Applying the animation in blender will certainly be easier.

I’d create a skeletal rig for the hands that sits inside the glove, and have it play its own animations (such as make_fist, point_finger) while the object sits on the character’s skeleton. Than just share the skeleton for every glove you make. This is a bit cumbersome in that you need to skin it to each glove model type in blender, yet you can share the xml file for the .skeleton between each model. I can’t think of a more efficient solution…

as @normen said putting everything in the same node works (for me at least).

I need something called “Animation Re-targeting” I think. And that isn’t in jME3 ;(

To retarget an animation it would have to be there in the first place… Theres no way around making these animations, making vertex groups etc.

But the character has the animation, and I need to re-target it to the glove. The glove is rigged for animation, it just has none.

I’m not sure about what you mean by “animation re-targeting” but can’t you just add the gloves to the character in blender (or anything else) and “parent” them to the skeleton, just like the rest ?

The intent though is to be able to dynamically load different meshes, so the character can be wearing either leather gloves or iron gauntlets, without having separate models.