diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2020-03-11 08:45:07 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2020-03-11 08:45:07 +0300 |
commit | e4269fc795cfbadf058a6315474cfc1443091922 (patch) | |
tree | 603aab5e9bdaed483cd166a14e8a9e8023009b7b | |
parent | 65bad4212eb91b45e82da82be1ca71b3dcd5f16e (diff) |
glTF importer: bugfix when scene has no nodes
-rwxr-xr-x | io_scene_gltf2/__init__.py | 2 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/imp/gltf2_blender_scene.py | 22 |
2 files changed, 17 insertions, 7 deletions
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 |