From 5dbcd4a3889fd3f26d68270ef968efd9f8e6f99f Mon Sep 17 00:00:00 2001 From: Julien Duroure <julien.duroure@gmail.com> Date: Wed, 2 Nov 2022 19:03:45 +0100 Subject: [PATCH] glTF exporter: Non active action objects TRS is now restored at end of actions exports --- io_scene_gltf2/__init__.py | 2 +- .../blender/exp/gltf2_blender_gather_animations.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 948810194..9910ed978 100755 --- a/io_scene_gltf2/__init__.py +++ b/io_scene_gltf2/__init__.py @@ -4,7 +4,7 @@ bl_info = { 'name': 'glTF 2.0 format', 'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors', - "version": (3, 4, 41), + "version": (3, 4, 42), 'blender': (3, 3, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animations.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animations.py index cf067e531..318c0bcb5 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animations.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animations.py @@ -62,8 +62,14 @@ def gather_animations( obj_uuid: int, current_action = None + current_world_matrix = None if blender_object.animation_data and blender_object.animation_data.action: + # There is an active action. Storing it, to be able to restore after switching all actions during export current_action = blender_object.animation_data.action + elif len(blender_actions) != 0 and blender_object.animation_data is not None and blender_object.animation_data.action is None: + # No current action set, storing world matrix of object + current_world_matrix = blender_object.matrix_world.copy() + # Remove any solo (starred) NLA track. Restored after export solo_track = None if blender_object.animation_data: @@ -134,6 +140,9 @@ def gather_animations( obj_uuid: int, blender_object.animation_data.use_tweak_mode = restore_tweak_mode blender_object.animation_data.use_nla = current_use_nla + if current_world_matrix is not None: + blender_object.matrix_world = current_world_matrix + export_user_extensions('animation_switch_loop_hook', export_settings, blender_object, True) return animations, tracks -- GitLab