Composable body parts with skeleton and animations

High council,

I find my self here again, surrounded by skeletons, yet also in November, so we should be free of skeletons by virtue of Halloween being over.

I am without a doubt, unqualified to be doing the stuff I’m doing, and I’ve trawled some really great posts in the forum that have got me closer to what I’m trying to achieve.

The goal was to create an animated avatar form separate head, arm and leg meshes.

We have a skeleton and animations, that existing in 1 GLB.

We have 3 other GLBs containing the head, body and feet.

I know about animation group retargeting, I’ve got that bit down.

I also get that I can set the linked transform on the bone.

I’ve even done the whole copy weights and indices kinds to the meshes.

Earlier it felt like I had a bit of success by shipping the whole skeleton with each mesh, and then retargeting the linked transform to the right transform and setting the skeleton to be the one from the skeleton and animations GLB. I’ll need a sort of index to say where to look for the right transform if I’m going to do it that way.

I tried to ship the meshes with just the part of the Skelton for say, the feet, but that causes all sorts of clone ripley in alien 4 problems.

What should be the right approach for composition, use a whole skeleton, use separate skeletons in lock step?

Ship the meshes with a copy of the entire skeleton, keep the transforms and remove the skeleton, and use the donor skeleton.

I’ve tried all this stuff and I think my mental model is off somewhere.

Do I need to reparent the transforms of the component parts? Is that the missing step?

Again, apologies for end up seeking wisdom once again.

Also thank you @PatrickRyan , and answer to a previous post helped with regard to workflow and pipelines, the only thing I wasn’t clear on was ship a whole skeleton for each component part or part of the skeleton.

Thank you again high council.

Another Humble Potato here :slight_smile:

I am working on this from the art perspective so to give context on what I have done my side for this experiment:

Shipping Whole Skeletons:

Create a base glb that acts as the dummy and also contains the full mesh and all associated vertex groupings and armature from Blender. The armature has had the transforms applied in Blender for both the rig and mesh, so they are all normalised.

Then for the individual parts using the base glb I have then created 3 separate glb’s for each body part (Head, Body, Feet) and for this I kept the whole skeleton in place but removed the mesh parts I didn’t need for that part fo the avatar. The armature and all the vertex groups remain, on reflection not sure if I should also be removed the unassociated vertex groups here too?

Specific Skeleton Parts:

For this one, I followed roughly the same process but this time I removed all parts of the armature that were not related to the part I was creating e.g. Head, Body and Feet. I also removed all of the vertex groups that were not associated with the part I was exporting as well.

Just to not that all the separate avatar parts also contain no animations.

I am unsure if I am missing something on the art side to get this over the line, not sure if when creating the separate parts if I should be using full or part skeletons or leaving in full or part vertex groupings?

Would be great to get some professional eyes across this as I am sure we are just missing a step or understanding here. Also, let me know if I need to share any screenshots from the art side.

Thanks for reading this and supporting our learning and efforts

I think we’ve all been there… Best way to use additive animations effectively - #12 by Panuchka

Is there a reason why you need to chop off the head, arms and legs? I’ve been trying to get a following workflow myself:

  • Model the character
  • Rig the character (I’ve now used autorig pro)
  • Parent the model to the rig
  • Add 10000 animations from Mixamo to the rig using autorig pro retargetting
  • Export glb

The only thing I haven’t figured out is in the thread that I posted… But I hope it will be a bit silver bulletish solution, at least for my problems. We will see :smiley: The main takeaway is that I store the skeleton and the animations and the mesh itself in single file. I do also have clothing, and separated body parts that can be chopped off if they are under clothing and not seen :slight_smile:

The chopping off was really about shipping as smaller units of data as we could; we found that the GLTF exporter wasn’t exporting the indices and weights and transforms without shipping the skeleton.

We also wanted to say… load the mesh for robocops body, and then add the arm of Pikachu (I promise never to do this, just a wild example)

I guess what we’re not clear on is everyone shipping the entire skeleton with each arm mesh or leg mesh?

My working theory and wilds assumptions…, and I have to fess up about knowing nothing about this other than what I’ve learned from the forums and other posts are these:

As long as the mesh was animated using the same skeleton, it should animate just the same in Babylon.

I thought that I could just import the 3 meshes, parent them, set the skeleton on each, and retarget the linkedTransform for each bone, depending on if it was a head, body, or feet transform in the first place…this kind of work by didn’t, animations seemed out of sync. That makes sense because each mesh has an entire set of transforms to represent the skeleton, and I’m only using a couple of them.

Tomorrow I’m going to try reparenting the transforms where we only shipped the arm and the arms skeleton for example, and see if that works.

But ultimately, the goal was to ship smaller files, to be able to mix and match in character creation and do the animation once like you said and ship the skeleton and animations together in one file, separate from the meshes.

1 Like

So, I think we ended out figuring this out:
Ship skeleton and animations and transforms in one GLB
then add the meshes from other GLBs into a hierarchy that largely mirrors what you’re shipping in the skeleton GLB.
assign skeleton to meshes.
retarget animation groups.
partial skeletons seem to fly two you. ← not true, we made a lot of changes and we are shipping partial skeletons rather than the whole skeleton with meshes.
I don’t know what the heartache is with getting weights and indices out of blender without the skelly, but I think I might be able to ship the GLTF and strip back anything not needed in the pipeline and then GLB the GLTF…maybe