Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2020-02-22 10:20:26 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-02-22 10:20:26 +0300
commitcc3e0cce4a53bc376cafd488d34580d90ff0ce6c (patch)
tree8b15ac1ea82d9f5651bbcc028ffcecc47ecf34fe
parent22424950a3f61d81070fc0edf3773e7c4a4a1184 (diff)
glTF exporter: fix bone caching issue
-rwxr-xr-xio_scene_gltf2/__init__.py2
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py3
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py12
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: