Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-07-05 03:52:02 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-05 03:52:02 +0400
commit7132bfe66440c66ba494cbea7c4f1bca8e983f4e (patch)
tree7ee866abd2c45705922174225f3d782ab0ce900f /release/scripts/modules/bpy_extras
parent9747e63094f6de2a37900d5ea0075427cae8605e (diff)
fix [#35977] Bake Action doesn't work properly
there are cases where you want to use visual-keying but not remove constraints, also it wasnt obvious that clearing constraints used a different method of keyframing. So split these into 2 options.
Diffstat (limited to 'release/scripts/modules/bpy_extras')
-rw-r--r--release/scripts/modules/bpy_extras/anim_utils.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/release/scripts/modules/bpy_extras/anim_utils.py b/release/scripts/modules/bpy_extras/anim_utils.py
index c9ed91d3a83..d87c207e2d0 100644
--- a/release/scripts/modules/bpy_extras/anim_utils.py
+++ b/release/scripts/modules/bpy_extras/anim_utils.py
@@ -31,6 +31,7 @@ def bake_action(frame_start,
only_selected=False,
do_pose=True,
do_object=True,
+ do_visual_keying=True,
do_constraint_clear=False,
do_parents_clear=False,
do_clean=False,
@@ -53,7 +54,9 @@ def bake_action(frame_start,
:type do_pose: bool
:arg do_object: Bake objects.
:type do_object: bool
- :arg do_constraint_clear: Remove constraints (and do 'visual keying').
+ :arg do_visual_keying: Use the final transformations for baking ('visual keying')
+ :type do_visual_keying: bool
+ :arg do_constraint_clear: Remove constraints after baking.
:type do_constraint_clear: bool
:arg do_parents_clear: Unparent after baking objects.
:type do_parents_clear: bool
@@ -83,14 +86,14 @@ def bake_action(frame_start,
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
+ matrix = obj.matrix_local if do_visual_keying else obj.matrix_local
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()
+ return obj.matrix_local.copy() if do_visual_keying else obj.matrix_local.copy()
# -------------------------------------------------------------------------
# Setup the Context
@@ -118,10 +121,11 @@ def bake_action(frame_start,
for f in frame_range:
scene.frame_set(f)
+ scene.update()
if do_pose:
- pose_info.append(pose_frame_info(obj, do_constraint_clear))
+ pose_info.append(pose_frame_info(obj, do_visual_keying))
if do_object:
- obj_info.append(obj_frame_info(obj, do_constraint_clear))
+ obj_info.append(obj_frame_info(obj, do_visual_keying))
# -------------------------------------------------------------------------
# Create action