Skip to content

GLTF inverse bind matrix remapping (bind poses) not fully supported #5786

Description

@canny

Summary

GLB/GLTF uploads can produce different rigged mesh deformation than DAE uploads from the same source model when the model uses a bind pose that differs from the viewer skeleton rest pose.

Context

Bind pose support is not directly exposed by Blender itself, although other tools such as Maya support this workflow. Both Collada/DAE and GLB/GLTF can represent bind-posed models through inverse bind matrices.

The Avastar Blender add-on explicitly adds bind pose support and collada support to Blender-5, so this issue can be reproduced and tested using Blender-5 with Avastar.

Steps to Reproduce in Blender

  1. In Blender, create or open a rigged mesh that uses a bind pose different from the default viewer skeleton rest pose. typical use case: A-posed models with A-Pose as restpose.

  2. Export the same model from Blender as DAE.

  3. Export the same model from Blender as GLB/GLTF.

  4. Upload/import both files into the viewer.

  5. Compare the imported results at the vertex/deformation level.

Actual Result

The GLB/GLTF import can deform differently from the DAE import, even though both files were exported from the same source model.

Visible differences can include child joint twists.

Expected Result

DAE and GLB/GLTF exports from the same bind-posed source model should import with equivalent vertex-level deformation.

Mesh edges may differ depending on exporter triangulation, but the rigged vertex positions and deformation should match.

Test Notes

This was tested with Blender using Avastar bind pose support by exporting the same bind-posed model as both DAE and GLB/GLTF, then comparing the uploaded viewer results.

https://secondlife.canny.io/admin/feedback/bug-reports/p/gltf-inverse-bind-matrix-remapping-bind-poses-not-fully-supported


This repo is using Opire - what does it mean? 👇
💵 Everyone can add rewards for this issue commenting /reward 100 (replace 100 with the amount).
🕵️‍♂️ If someone starts working on this issue to earn the rewards, they can comment /try to let everyone know!
🙌 And when they open the PR, they can comment /claim #5786 either in the PR description or in a PR's comment.

🪙 Also, everyone can tip any user commenting /tip 20 @canny[bot] (replace 20 with the amount, and @canny[bot] with the user to tip).

📖 If you want to learn more, check out our documentation.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Fields

No fields configured for Bug.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions