[Bf-extensions-cvs] [a1dbf26e] master: glTF importer: check that primitive exists (some invalid glTF files don't have any)
Julien Duroure
noreply at git.blender.org
Tue Oct 8 22:03:36 CEST 2019
Commit: a1dbf26e376ce6b7772c46eb68365008ec144bf9
Author: Julien Duroure
Date: Tue Oct 8 22:02:44 2019 +0200
Branches: master
https://developer.blender.org/rBAa1dbf26e376ce6b7772c46eb68365008ec144bf9
glTF importer: check that primitive exists (some invalid glTF files don't have any)
===================================================================
M io_scene_gltf2/__init__.py
M io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
===================================================================
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 6bd62dd5..8fe1a4c5 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
bl_info = {
'name': 'glTF 2.0 format',
'author': 'Julien Duroure, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
- "version": (1, 0, 1),
+ "version": (1, 0, 2),
'blender': (2, 81, 6),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py b/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
index 6d2181fc..5904a974 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_gltf.py
@@ -282,27 +282,29 @@ class BlenderGlTF():
mesh.shapekey_names = []
used_names = set()
- for sk, target in enumerate(mesh.primitives[0].targets or []):
- if 'POSITION' not in target:
- mesh.shapekey_names.append(None)
- continue
+ # Some invalid glTF files has empty primitive tab
+ if len(mesh.primitives) > 0:
+ for sk, target in enumerate(mesh.primitives[0].targets or []):
+ if 'POSITION' not in target:
+ mesh.shapekey_names.append(None)
+ continue
- # Check if glTF file has some extras with targetNames. Otherwise
- # use the name of the POSITION accessor on the first primitive.
- shapekey_name = None
- if mesh.extras is not None:
- if 'targetNames' in mesh.extras and sk < len(mesh.extras['targetNames']):
- shapekey_name = mesh.extras['targetNames'][sk]
- if shapekey_name is None:
- if gltf.data.accessors[target['POSITION']].name is not None:
- shapekey_name = gltf.data.accessors[target['POSITION']].name
- if shapekey_name is None:
- shapekey_name = "target_" + str(sk)
-
- shapekey_name = BlenderGlTF.find_unused_name(used_names, shapekey_name)
- used_names.add(shapekey_name)
-
- mesh.shapekey_names.append(shapekey_name)
+ # Check if glTF file has some extras with targetNames. Otherwise
+ # use the name of the POSITION accessor on the first primitive.
+ shapekey_name = None
+ if mesh.extras is not None:
+ if 'targetNames' in mesh.extras and sk < len(mesh.extras['targetNames']):
+ shapekey_name = mesh.extras['targetNames'][sk]
+ if shapekey_name is None:
+ if gltf.data.accessors[target['POSITION']].name is not None:
+ shapekey_name = gltf.data.accessors[target['POSITION']].name
+ if shapekey_name is None:
+ shapekey_name = "target_" + str(sk)
+
+ shapekey_name = BlenderGlTF.find_unused_name(used_names, shapekey_name)
+ used_names.add(shapekey_name)
+
+ mesh.shapekey_names.append(shapekey_name)
@staticmethod
def find_unused_name(haystack, desired_name):
More information about the Bf-extensions-cvs
mailing list