diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2022-11-02 21:03:45 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2022-11-02 21:03:45 +0300 |
commit | 5dbcd4a3889fd3f26d68270ef968efd9f8e6f99f (patch) | |
tree | eaa652ac4c22c2de55fb51108bc6896192bf6123 | |
parent | 05f475f231abce2701b7424ed6b8231dadc64da8 (diff) |
glTF exporter: Non active action objects TRS is now restored at end of actions exports
-rwxr-xr-x | io_scene_gltf2/__init__.py | 2 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_animations.py | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 94881019..9910ed97 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 cf067e53..318c0bcb 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 |