Unexpected Skeleton/Bones from exported Blender file

I copied skeletons over for each of the body parts.
https://www.babylonjs-playground.com/#D9U0UW#18

Is it working?? I think it might be! But hard to tell. Testing more…

Nope, darnit. They’re still separate animations on separate models.
https://www.babylonjs-playground.com/#D9U0UW#19

Removed the body from one to make it more clear what’s going on.
Here, if everything was working, we would have copied over the animation data from the body-less character onto the character that is currently doing the “Jab” - and both animations would then be attached to a single character (as if they were combined in the original source file).

What is weird is that we definitely see that hairs are animated and it does not seem random

Also can you try to make a far simpler scene? like just a node with a dead simple animation? I’m sure we will find a way to make it work as you want :wink:

Sorry, the hair was confusing things… (i did that on purpose). Less confusion here, where you can see the models acting separately: https://www.babylonjs-playground.com/#D9U0UW#18

I can/will make a simpler scene. However, I’m not sure the problem will be solved with a simpler scene (since it may not work for Mixamo-exported files).

The big opportunity here, in my opinion, is to be able to build a very light library of animation data files that can be loaded easily into a scene - and applied to a humanoid skeleton using the mixamo rig. It would make animating a character 1000x more accessible to people using BJS.

So, where you could load up a model that you’ve designed using Mixamo or Fuse. And then do something like:
mymodel.animationAdd(‘Jab’)
And it loads in the keyframe data and appends it to your model.

I agree :slight_smile:
But here there is something I do not understand yet:
https://www.babylonjs-playground.com/#D9U0UW#20

What we see is just the regular loaded meshes with no skeleton shared

Yep we are not targeting the right meshes ;D

https://www.babylonjs-playground.com/#D9U0UW#21

lol…look at the console :slight_smile:

Right. That was just a fix of the scale issue you mentioned earlier… but the PG still has 2 models with one animation each, instead of 1 model with 2 animations.

Hey, is it possible/easy to use the Json data instead? That would really clarify things… if we could just load the animation from JSON and then add it to the single loaded model?

https://bjs-playground.s3.amazonaws.com/anim.idle.justdata.json
(note that this json file has the scale issue, so i’d need to fix that if this route is viable)

It works here:
https://www.babylonjs-playground.com/#D9U0UW#22

We have two meshes animated with the same skeleton. So if you hide the second loaded models you have the first model animated with loaded data !!

Added tops:
https://www.babylonjs-playground.com/#D9U0UW#23

And shoes: https://www.babylonjs-playground.com/#D9U0UW#24

And only original mesh: https://www.babylonjs-playground.com/#D9U0UW#25

Trying to follow.
If we hide the 2nd loaded model, we have the 1st model animated with data from the 2nd model. That’s cool!

But, to play the first animation (“Yelling”), we would do what?

(sorry, i’m not 100% following what you’re doing yet… i was conceiving of it differently… i was thinking that we’d be using one mesh - and then loading in new data for it… whereas i think you’re using the mesh of the 2nd loaded model, right? But I think that means that the “animation files” would need to have all of the same body parts as “character”… versus simply sharing a rig/skeleton? Not sure that achieves the goal of being able to load in light mesh-agnostic animation data files. Unless I’m just missing something!)

Actually, scratch that comment about body parts… I think that all mixamo models share the same body parts, so that’s probably a non issue.

Ok, followed what you did. In sum:

  • Load base character model
    • Create variables for each mesh (each body part)
  • Load 2nd model (source of animation data)
    • Create variables for each mesh (body part) from 2nd model
    • Disable meshes from 2nd model
  • Assign skeletons from the 2nd model to the meshes (body parts) of the character model
    • Character model can now play the animation from the 2nd model

That’s it right? So, if I were to remove all but a single vertex from the 2nd model’s mesh, it would achieve the goal of being able to load in a very light animation file, right?

But is it possible to play that 1st animation again? Or to load in multiple sequential animations and have them all on hand to play/blend etc?

This is going to be super cool if it works.
Made a PG with a brand new character - so that we can really see the effect… loading one character with a kick animation. And then loading the character we’ve been using to date with the “Jab” animation. And copying that Jab animation to the new character.
https://www.babylonjs-playground.com/#D9U0UW#26
Not quite all there… but close. Right before the anim starts playing, you can see that the jab pose that the character adopts is correct…

1 Like

This looks like incompatible meshes (like the skeleton is not identical)

Thanks @bigrig for the invite.

I think I try to build a KeyFrameFactory(), for bones. : )


Will try to move the KeyFrame~Workflow into BABYLON (with custom GUI).

:eagle: : )

1 Like

That CHARACTER is really awesome!
Nice fabrics!
Realistic Jab (anim).