[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