[Bf-extensions-cvs] [cc3e0cce] master: glTF exporter: fix bone caching issue

Julien Duroure noreply at git.blender.org
Sat Feb 22 08:20:42 CET 2020


Commit: cc3e0cce4a53bc376cafd488d34580d90ff0ce6c
Author: Julien Duroure
Date:   Sat Feb 22 08:20:26 2020 +0100
Branches: master
https://developer.blender.org/rBAcc3e0cce4a53bc376cafd488d34580d90ff0ce6c

glTF exporter: fix bone caching issue

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

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py

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

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:



More information about the Bf-extensions-cvs mailing list