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
-
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.
-
Export the same model from Blender as DAE.
-
Export the same model from Blender as GLB/GLTF.
-
Upload/import both files into the viewer.
-
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.
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
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.
Export the same model from Blender as DAE.
Export the same model from Blender as GLB/GLTF.
Upload/import both files into the viewer.
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(replace100with the amount).🕵️♂️ If someone starts working on this issue to earn the rewards, they can comment
/tryto let everyone know!🙌 And when they open the PR, they can comment
/claim #5786either in the PR description or in a PR's comment.🪙 Also, everyone can tip any user commenting
/tip 20 @canny[bot](replace20with the amount, and@canny[bot]with the user to tip).📖 If you want to learn more, check out our documentation.