[Bf-extensions-cvs] [db31b917] master: glTF importer: fix bug when no InverseBindMatrices is provided

Julien Duroure noreply at git.blender.org
Thu Jan 24 18:59:09 CET 2019


Commit: db31b91754359e5d6225f553477eed73fe5b6df2
Author: Julien Duroure
Date:   Thu Jan 24 18:58:30 2019 +0100
Branches: master
https://developer.blender.org/rBAdb31b91754359e5d6225f553477eed73fe5b6df2

glTF importer: fix bug when no InverseBindMatrices is provided

===================================================================

M	io_scene_gltf2/blender/imp/gltf2_blender_skin.py

===================================================================

diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_skin.py b/io_scene_gltf2/blender/imp/gltf2_blender_skin.py
index db0e50f9..bfe713a8 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_skin.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_skin.py
@@ -52,15 +52,19 @@ class BlenderSkin():
         # Set bone bind_pose by inverting bindpose matrix
         if node_id in pyskin.joints:
             index_in_skel = pyskin.joints.index(node_id)
-            inverse_bind_matrices = BinaryData.get_data_from_accessor(gltf, pyskin.inverse_bind_matrices)
-            # Needed to keep scale in matrix, as bone.matrix seems to drop it
-            if index_in_skel < len(inverse_bind_matrices):
-                pynode.blender_bone_matrix = matrix_gltf_to_blender(
-                    inverse_bind_matrices[index_in_skel]
-                ).inverted()
-                bone.matrix = pynode.blender_bone_matrix
+            if pyskin.inverse_bind_matrices is not None:
+                inverse_bind_matrices = BinaryData.get_data_from_accessor(gltf, pyskin.inverse_bind_matrices)
+                # Needed to keep scale in matrix, as bone.matrix seems to drop it
+                if index_in_skel < len(inverse_bind_matrices):
+                    pynode.blender_bone_matrix = matrix_gltf_to_blender(
+                        inverse_bind_matrices[index_in_skel]
+                    ).inverted()
+                    bone.matrix = pynode.blender_bone_matrix
+                    print(pynode.blender_bone_matrix)
+                else:
+                    gltf.log.error("Error with inverseBindMatrix for skin " + pyskin)
             else:
-                gltf.log.error("Error with inverseBindMatrix for skin " + pyskin)
+                pynode.blender_bone_matrix = Matrix() # 4x4 identity matrix
         else:
             print('No invBindMatrix for bone ' + str(node_id))
             pynode.blender_bone_matrix = Matrix()



More information about the Bf-extensions-cvs mailing list