Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2019-01-24 20:58:30 +0300
committerJulien Duroure <julien.duroure@gmail.com>2019-01-24 20:59:02 +0300
commitdb31b91754359e5d6225f553477eed73fe5b6df2 (patch)
tree423f26d264abaf29fec0c049f6a52b0dbaaa1997
parent1e371d6d45c739b19527a61c56cd6f2280dd4a94 (diff)
glTF importer: fix bug when no InverseBindMatrices is provided
-rwxr-xr-xio_scene_gltf2/blender/imp/gltf2_blender_skin.py20
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()