diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-07-16 13:11:49 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-07-16 13:14:09 +0300 |
commit | efc92efec2cfeeb13d269bf82695994285aebb6a (patch) | |
tree | 07393706c523095ae2bb21dfc17eb117c5554165 /io_scene_gltf2 | |
parent | 2148877b455cb8fa41e322443db6b44228413574 (diff) |
Fix regression in glTF animation export
Diffstat (limited to 'io_scene_gltf2')
-rwxr-xr-x | io_scene_gltf2/__init__.py | 2 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py | 22 | ||||
-rw-r--r-- | io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py | 2 |
3 files changed, 21 insertions, 5 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index f3fd36b9..f85502f9 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": (0, 9, 35), + "version": (0, 9, 36), 'blender': (2, 80, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py index dcc1d7ad..f1fc31a2 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py @@ -30,8 +30,24 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.io.com import gltf2_io_extensions -@cached def gather_node(blender_object, blender_scene, export_settings): + # custom cache to avoid cache miss when called from animation + # with blender_scene=None + + # invalidate cache if export settings have changed + if not hasattr(gather_node, "__export_settings") or export_settings != gather_node.__export_settings: + gather_node.__cache = {} + gather_node.__export_settings = export_settings + + if blender_scene is None and blender_object.name in gather_node.__cache: + return gather_node.__cache[blender_object.name] + + node = __gather_node(blender_object, blender_scene, export_settings) + gather_node.__cache[blender_object.name] = node + return node + +@cached +def __gather_node(blender_object, blender_scene, export_settings): # If blender_scene is None, we are coming from animation export # Check to know if object is exported is already done, so we don't check # again if object is instanced in scene : this check was already done when exporting object itself @@ -72,12 +88,12 @@ def gather_node(blender_object, blender_scene, export_settings): def __filter_node(blender_object, blender_scene, export_settings): if blender_object.users == 0: return False - if export_settings[gltf2_blender_export_keys.SELECTED] and blender_object.select_get() is False: - return False if blender_scene is not None: instanced = any([blender_object.name in layer.objects for layer in blender_scene.view_layers]) if instanced is False: return False + if export_settings[gltf2_blender_export_keys.SELECTED] and blender_object.select_get() is False: + return False return True diff --git a/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py b/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py index c0450539..6ae48fff 100644 --- a/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py +++ b/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py @@ -159,7 +159,7 @@ def __traverse_node(node, f): f(node) if not (node.children is None): for child in node.children: - __traverse_node(child) + __traverse_node(child, f) def __compress_primitive(primitive, dll, export_settings): |