Can’t combine the animation with my glb model properly

Hi everyone, I am struggling with a problem about combining the animation with my glb model. :smiling_face_with_tear:

My 3D software is blender. The animation looked properly it.
I exported a fbx file with animation from blender and added it to the editor, but the model had a strange looking.
Because I am not familiar with 3D character animation, I have no idea about what’s going on

I take a guess that is this situation happened because I did not export fbx with right hierarchy?
Comparing the model downloaded from PlayCanvas example, the hierarchy looked same in viewer. (This model and animation can work properly.)

image:

There are two different when I open my model in viewer.

  1. My model doesn’t have the level named RootNote.
  2. There is an extra level in my fbx file.

I am curious why my model can’t work properly with animation?
I would be appreciate it if someone can give me some idea or the solution about this problem.

Thank you!

Here is my demo project !
https://playcanvas.com/project/985334/overview/model-viewer

The reason why it’s facing the floor is because the animation Armature node is rotated -90 degrees on the X axis.

So I changed the code to change the name of the entity that is created when loading from GLB and also changed the scales of entities to match the animation rig

GlbLodaer.prototype.loadAsset = function(asset) {
    // Delete everything below the entity 
    for (var i = 0; i < this.entity.children.length; ++i) {
        this.entity.children[i].destroy();
    }

     utils.loadGlbContainerFromAsset(asset, null, asset.name, function (err, asset) {
        if (err) {
            console.error(err);
            return;
        } 
        var renderRootEntity = asset.resource.instantiateRenderEntity();
        renderRootEntity.name = 'Armature';
        renderRootEntity.setLocalScale(100, 100, 100);
        this.entity.addChild(renderRootEntity);

        this.entity.fire('glbready');        
    }.bind(this));

};

Looking at the model GLB and animation GLB, I noticed that the model GLB is facing down the +Z axis but the animation is facing down the -Z axis and I think that’s why it looks like it does in the launch tab. I’m not 100% sure but there does look like to be some mismatch between the two

When running, the skeleton looks right from what I can see

But the mapping from the bone to the mesh seems to be wrong and I’m not sure where in the GLB asset the issue is or if there’s some sort of axis mismatch somewhere?

Thank you so much for your help!
I tried the code on the first reply and it made the model stand on the right direction.

I think it must mismatch someting when I export animation( or import this model ) from blender,
because even when I export a Tpose fbx from blender it still get wrong looking.

If I find any solution or somting new, I will update the result here.

Thank you!

1 Like

Hi, I am back to update the finding why the model look so strange on this project.
It is because I use “Blender” to make the animation :melting_face:

My original model is a VRM model. When I imported the original model to Blender, Blender changed not only the axis but also the rotation on each bone. The animation created from the wrong bone definitely can’t match to the original one.

We found that if you use Unity to import the VRM model and create animation, it will be correct.
It is quite strange, but It’s the way we get the animation work properly on the model.

Maybe the other 3D software will not have this problem.

Good investigation! I did think it was something related to the bone rotation but it was really hard to be sure

Blender has export settings for exporting in different spaces/axis. Maybe that will help?

1 Like