forked from bartvdbraak/blender
fix [#34805] Bake action ignores parent motion
in fact this is more feature request. add an option to bake a parented objects animation, then clear the parent and apply the action.
This commit is contained in:
parent
acac5b8402
commit
577a1b9239
@ -32,6 +32,7 @@ def bake_action(frame_start,
|
||||
do_pose=True,
|
||||
do_object=True,
|
||||
do_constraint_clear=False,
|
||||
do_parents_clear=False,
|
||||
do_clean=False,
|
||||
action=None,
|
||||
):
|
||||
@ -54,6 +55,8 @@ def bake_action(frame_start,
|
||||
:type do_object: bool
|
||||
:arg do_constraint_clear: Remove constraints (and do 'visual keying').
|
||||
:type do_constraint_clear: bool
|
||||
:arg do_parents_clear: Unparent after baking objects.
|
||||
:type do_parents_clear: bool
|
||||
:arg do_clean: Remove redundant keyframes after baking.
|
||||
:type do_clean: bool
|
||||
:arg action: An action to bake the data into, or None for a new action
|
||||
@ -77,8 +80,17 @@ def bake_action(frame_start,
|
||||
matrix[name] = pbone.matrix_basis.copy()
|
||||
return matrix
|
||||
|
||||
def obj_frame_info(obj, do_visual_keying):
|
||||
return obj.matrix_local.copy() if do_visual_keying else obj.matrix_basis.copy()
|
||||
if do_parents_clear:
|
||||
def obj_frame_info(obj, do_visual_keying):
|
||||
parent = obj.parent
|
||||
matrix = obj.matrix_local if do_visual_keying else obj.matrix_basis
|
||||
if parent:
|
||||
return parent.matrix_world * matrix
|
||||
else:
|
||||
return matrix.copy()
|
||||
else:
|
||||
def obj_frame_info(obj, do_visual_keying):
|
||||
return obj.matrix_local.copy() if do_visual_keying else obj.matrix_basis.copy()
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Setup the Context
|
||||
@ -192,6 +204,9 @@ def bake_action(frame_start,
|
||||
|
||||
obj.keyframe_insert("scale", -1, f, name, options)
|
||||
|
||||
if do_parents_clear:
|
||||
obj.parent = None
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Clean
|
||||
|
||||
|
@ -195,6 +195,11 @@ class BakeAction(Operator):
|
||||
description="Remove all constraints from keyed object/bones, and do 'visual' keying",
|
||||
default=False,
|
||||
)
|
||||
clear_parents = BoolProperty(
|
||||
name="Clear Parents",
|
||||
description="Bake animation onto the object then clear parents (objects only)",
|
||||
default=False,
|
||||
)
|
||||
bake_types = EnumProperty(
|
||||
name="Bake Data",
|
||||
description="Which data's transformations to bake",
|
||||
@ -216,6 +221,7 @@ class BakeAction(Operator):
|
||||
do_pose='POSE' in self.bake_types,
|
||||
do_object='OBJECT' in self.bake_types,
|
||||
do_constraint_clear=self.clear_constraints,
|
||||
do_parents_clear=self.clear_parents,
|
||||
do_clean=True,
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user