[Bf-extensions-cvs] [e4269fc7] master: glTF importer: bugfix when scene has no nodes

Julien Duroure noreply at git.blender.org
Wed Mar 11 06:45:34 CET 2020


Commit: e4269fc795cfbadf058a6315474cfc1443091922
Author: Julien Duroure
Date:   Wed Mar 11 06:45:07 2020 +0100
Branches: master
https://developer.blender.org/rBAe4269fc795cfbadf058a6315474cfc1443091922

glTF importer: bugfix when scene has no nodes

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

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/blender/imp/gltf2_blender_scene.py

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

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index c42cbc75..61ab3dc3 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, 2, 39),
+    "version": (1, 2, 40),
     'blender': (2, 82, 7),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
index 3c2a8619..691ced91 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
@@ -77,17 +77,27 @@ class BlenderScene():
         """Make the first root object from the default glTF scene active.
         If no default scene, use the first scene, or just any root object.
         """
-        if gltf.data.scenes:
-            pyscene = gltf.data.scenes[gltf.data.scene or 0]
-            vnode = gltf.vnodes[pyscene.nodes[0]]
-            if gltf.vnodes[vnode.parent].type != VNode.DummyRoot:
-                vnode = gltf.vnodes[vnode.parent]
+        vnode = None
 
-        else:
+        if gltf.data.scene is not None:
+            pyscene = gltf.data.scenes[gltf.data.scene]
+            if pyscene.nodes:
+                vnode = gltf.vnodes[pyscene.nodes[0]]
+
+        if not vnode:
+            for pyscene in gltf.data.scenes or []:
+                if pyscene.nodes:
+                    vnode = gltf.vnodes[pyscene.nodes[0]]
+                    break
+
+        if not vnode:
             vnode = gltf.vnodes['root']
             if vnode.type == VNode.DummyRoot:
                 if not vnode.children:
                     return  # no nodes
                 vnode = gltf.vnodes[vnode.children[0]]
 
+        if vnode.type == VNode.Bone:
+            vnode = gltf.vnodes[vnode.bone_arma]
+
         bpy.context.view_layer.objects.active = vnode.blender_object



More information about the Bf-extensions-cvs mailing list