diff options
Diffstat (limited to 'io_scene_gltf2/blender/imp/gltf2_blender_scene.py')
-rwxr-xr-x | io_scene_gltf2/blender/imp/gltf2_blender_scene.py | 22 |
1 files changed, 16 insertions, 6 deletions
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 |