Fix T93209: FBX export error if there is an action in NLA tweakmode
Code tried to set the action to None, but in this case, the action is read-only. If we find such a case, now set tweakmode to False temporarily and restore after actions have been processed. Maniphest Tasks: T93209 Differential Revision: https://developer.blender.org/D13286
This commit is contained in:
parent
13ecbb8fee
commit
162cba016c
Notes:
blender-bot
2023-02-14 18:29:14 +01:00
Referenced by issue blender/blender#88449: Blender LTS: Maintenance Task 2.93 Referenced by issue blender/blender#77348: Blender LTS: Maintenance Task 2.83 Referenced by issue blender/blender#88449, Blender LTS: Maintenance Task 2.93 Referenced by issue blender/blender#77348, Blender LTS: Maintenance Task 2.83 Referenced by issue #93209, FBX export error if there is an action in NLA tweakmode
|
@ -21,7 +21,7 @@
|
|||
bl_info = {
|
||||
"name": "FBX format",
|
||||
"author": "Campbell Barton, Bastien Montagne, Jens Restemeier",
|
||||
"version": (4, 26, 0),
|
||||
"version": (4, 27, 0),
|
||||
"blender": (2, 90, 0),
|
||||
"location": "File > Import-Export",
|
||||
"description": "FBX IO meshes, UV's, vertex colors, materials, textures, cameras, lamps and actions",
|
||||
|
|
|
@ -2091,8 +2091,14 @@ def fbx_animations(scene_data):
|
|||
ob = ob_obj.bdata # Back to real Blender Object.
|
||||
if not ob.animation_data:
|
||||
continue
|
||||
|
||||
# Some actions are read-only, one cause is being in NLA tweakmode
|
||||
restore_use_tweak_mode = ob.animation_data.use_tweak_mode
|
||||
if ob.animation_data.is_property_readonly('action'):
|
||||
ob.animation_data.use_tweak_mode = False
|
||||
|
||||
# We have to remove active action from objects, it overwrites strips actions otherwise...
|
||||
ob_actions.append((ob, ob.animation_data.action))
|
||||
ob_actions.append((ob, ob.animation_data.action, restore_use_tweak_mode))
|
||||
ob.animation_data.action = None
|
||||
for track in ob.animation_data.nla_tracks:
|
||||
if track.mute:
|
||||
|
@ -2113,8 +2119,9 @@ def fbx_animations(scene_data):
|
|||
for strip in strips:
|
||||
strip.mute = False
|
||||
|
||||
for ob, ob_act in ob_actions:
|
||||
for ob, ob_act, restore_use_tweak_mode in ob_actions:
|
||||
ob.animation_data.action = ob_act
|
||||
ob.animation_data.use_tweak_mode = restore_use_tweak_mode
|
||||
|
||||
# All actions.
|
||||
if scene_data.settings.bake_anim_use_all_actions:
|
||||
|
|
Loading…
Reference in New Issue