diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-01-24 20:58:30 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-01-24 20:59:02 +0300 |
commit | db31b91754359e5d6225f553477eed73fe5b6df2 (patch) | |
tree | 423f26d264abaf29fec0c049f6a52b0dbaaa1997 | |
parent | 1e371d6d45c739b19527a61c56cd6f2280dd4a94 (diff) |
glTF importer: fix bug when no InverseBindMatrices is provided
-rwxr-xr-x | io_scene_gltf2/blender/imp/gltf2_blender_skin.py | 20 |
1 files changed, 12 insertions, 8 deletions
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() |