Skip to content

Animated exports are incorrect in their static (non-animated) pose #2600

@TheRealANDREWQA

Description

@TheRealANDREWQA

Describe the bug
When converting meshes from other formats to .gltf/.glb using Blender, the original mesh static representation is not maintained in the export.

To Reproduce
Steps to reproduce the behavior:

  1. Import any of the attached meshes.
  2. Export the mesh to .gltf/.glb.
  3. View the mesh in the official Khronos web viewer or import the mesh inside Unreal Engine.
  4. Observe that the mesh plays normally if it is skinned, but if skinning is disabled, then it is "broken".

Expected behavior
The animations maintains its bind pose transform even when not skinned (for the meshes that I provided, this should be true, the static pose is the same as the bind pose).

Screenshots
Instead of screenshots, I will provide videos to showcase the issue.

.blend file/ .gltf (mandatory)
I will provide multiple .blend files each with its own mesh. One of the meshes in original (BrainStem) was already a glb mesh.

Version

  • OS: Windows-10-10.0.19045-SP0 64 Bits
  • Blender Version 4.5.3 LTS, branch: blender-v4.5-release, commit date: 2025-09-08 12:46, hash: 67807e1800cc

Additional context
(Side note, I am a programmer, I can answer more technical questions) The animated mesh doesn't have problems while animated inside Blender or outside it. The problem exists only when the export is loaded by other applications. I am going to use the official Khronos webviewer to showcase the states a mesh can be in. It has 3 modes:

  • animation enabled, the classic animation mode where the joints are animated
  • animation disabled, maintains the bind matrices applied to the mesh, but without playing the animation
  • skinning disabled, the static mode where skinning is disabled altogether and only the node transforms are used

The meshes that Blender exports are incorrect in that 3rd mode when loaded by other applications. My suspicion from what I've seen is that Blender parents some mesh nodes to armature nodes when in the original file they were not children, without performing any transform adjustments.

In the videos (I had to split them due to file size constraints), you can see the meshes in their 3 modes and how when you disable skinning that the mesh no longer is close to the bind pose. The brain stem (robot) mesh is the exception, but that one is incorrect, because the original GLB had the mesh upright and the animation staying in the same place, while in Blender's export, it is facing downards and the animation pulls the mesh back and up.

In Unreal, I placed the animated meshes and their static counterparts and there you can see how they are not even close. For 2 of the static meshes, I had to scale them by 20 to be even remotely visible.

meshes.zip

The last bit of information is from a screenshot from three.js where the fish was loaded and there you can see how the Blender export has the Guppie_Final mesh node parented to Armature, which has a rotation of 90 degrees on X and scale of 0.01, corroborating why the mesh looks rotated and scaled down in the static view.

The separate robot video is showcasing how the original robot should look like when exported from Blender.

https://github.com/user-attachments/assets/885b93fe-9b15-406d-a825-65b4ea749021
https://github.com/user-attachments/assets/9a546da1-9cd3-443b-91eb-658f4b275741
https://github.com/user-attachments/assets/4024095f-488f-4919-bc02-0099c8ec45f3

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions