diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2020-02-22 10:20:26 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2020-02-22 10:20:26 +0300 |
commit | cc3e0cce4a53bc376cafd488d34580d90ff0ce6c (patch) | |
tree | 8b15ac1ea82d9f5651bbcc028ffcecc47ecf34fe /io_scene_gltf2 | |
parent | 22424950a3f61d81070fc0edf3773e7c4a4a1184 (diff) |
glTF exporter: fix bone caching issue
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_animation_channels.py | 3 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py | 12 |
3 files changed, 12 insertions, 5 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 78ba283c..c96740d7 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, 24), + "version": (1, 2, 25), 'blender': (2, 82, 7), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py index 8f515bcb..99a0ef91 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py @@ -21,6 +21,7 @@ from io_scene_gltf2.io.com import gltf2_io_debug from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached from io_scene_gltf2.blender.exp import gltf2_blender_gather_animation_samplers from io_scene_gltf2.blender.exp import gltf2_blender_gather_animation_channel_target +from io_scene_gltf2.blender.exp import gltf2_blender_gather_animation_sampler_keyframes from io_scene_gltf2.blender.exp import gltf2_blender_get from io_scene_gltf2.blender.exp import gltf2_blender_gather_skins from io_scene_gltf2.blender.exp import gltf2_blender_gather_drivers @@ -124,6 +125,8 @@ def gather_animation_channels(blender_action: bpy.types.Action, # resetting driver caches gltf2_blender_gather_drivers.get_sk_driver_values.reset_cache() gltf2_blender_gather_drivers.get_sk_drivers.reset_cache() + # resetting bone caches + gltf2_blender_gather_animation_sampler_keyframes.get_bone_matrix.reset_cache() return channels diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py index b41e400f..e82d5929 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py @@ -69,6 +69,13 @@ def cached(func): def bonecache(func): + def reset_cache_bonecache(): + func.__current_action_name = None + func.__current_armature_name = None + func.__bonecache = {} + + func.reset_cache = reset_cache_bonecache + @functools.wraps(func) def wrapper_bonecache(*args, **kwargs): if args[2] is None: @@ -78,9 +85,7 @@ def bonecache(func): pose_bone_if_armature = args[0].pose.bones[args[2]] if not hasattr(func, "__current_action_name"): - func.__current_action_name = None - func.__current_armature_name = None - func.__bonecache = {} + func.reset_cache() if args[6] != func.__current_action_name or args[0] != func.__current_armature_name: result = func(*args) func.__bonecache = result @@ -106,7 +111,6 @@ def skdriverdiscovercache(func): @functools.wraps(func) def wrapper_skdriverdiscover(*args, **kwargs): if not hasattr(func, "__current_armature_name") or func.__current_armature_name is None: - func.__current_armature_name = None func.reset_cache() if args[0] != func.__current_armature_name: |