From e8244eb4d7c62feea91706436afc9eeacd494a27 Mon Sep 17 00:00:00 2001
From: Julien Duroure <julien.duroure@gmail.com>
Date: Sat, 4 Jun 2022 08:59:13 +0200
Subject: [PATCH] glTF exporter: Fix only def bone export when parent are
 different (def -> nondef -> def)

---
 io_scene_gltf2/__init__.py                                     | 2 +-
 .../blender/exp/gltf2_blender_gather_animation_samplers.py     | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 5e3dce0fe..cbd3bee22 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -4,7 +4,7 @@
 bl_info = {
     'name': 'glTF 2.0 format',
     'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (3, 2, 39),
+    "version": (3, 2, 40),
     'blender': (3, 1, 0),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_samplers.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_samplers.py
index 143fcceac..1ee98a29f 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_samplers.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_samplers.py
@@ -391,8 +391,9 @@ def __gather_output(channels: typing.Tuple[bpy.types.FCurve],
                 parent_uuid = export_settings['vtree'].nodes[export_settings['vtree'].nodes[blender_obj_uuid].bones[bone.name]].parent_uuid
                 if parent_uuid is not None and export_settings['vtree'].nodes[parent_uuid].blender_type == VExportNode.BONE:
                     # export bone is not at root of armature neither
+                    blender_bone_parent = export_settings['vtree'].nodes[parent_uuid].blender_bone
                     correction_matrix_local = (
-                        bone.parent.bone.matrix_local.inverted_safe() @
+                        blender_bone_parent.bone.matrix_local.inverted_safe() @
                         bone.bone.matrix_local
                     )
                 else:
-- 
GitLab