glTF exporter: fix bone caching issue
This commit is contained in:
parent
22424950a3
commit
cc3e0cce4a
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue