diff options
author | Joshua Leung <aligorith@gmail.com> | 2011-03-24 06:02:34 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2011-03-24 06:02:34 +0300 |
commit | eef811a0954ad67a4667592c85cd95822d15e17c (patch) | |
tree | 43c252be6af9cd5c01595de87b2e148c3124de56 /source/blender/editors/animation | |
parent | c210b3991a074f27af80178c85d0658c4041480b (diff) |
Animation Tool: Propagate Pose
This tool automates the process of copying a pose to successive
keyframes, making it easier for animators to go back and change the
pose for some controls which remain "static" for periods of time.
Previously, animators would need to do a "{Ctrl-Pageup Ctrl-V} *
number_of_static_keyframes" dance for each set of controls that this
happened on, which is not too good ergonomically speaking.
There are two modes exposed via the menu (Pose->Propagate):
- "Pose Propagate" - also known as the 'WHILE_HELD' mode, which
propagates to all keyframes that are holding the same value
- "To Next Keyframe" - which only propagates the pose to the closest
keyframe in the occurring after (but not including) the current frame
Additionally, there are a few other modes that can be used, though
they are less useful for direct use from the UI, though they can be
used via the PyAPI as need be.
---
Also, I did some cleanups in the "Pose" menu to bring it more into
line with the Object mode one. There are some more tweaks that could
still be done here, such as bringing the keyframing operator entries
under a submenu too (as in the Object mode version) to get the length
of this under control.
Diffstat (limited to 'source/blender/editors/animation')
-rw-r--r-- | source/blender/editors/animation/keyframes_draw.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index aab38790687..3f8f8dc1e84 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -80,7 +80,7 @@ /* ActKeyColumns (Keyframe Columns) ------------------------------------------ */ /* Comparator callback used for ActKeyColumns and cframe float-value pointer */ -// NOTE: this is exported to other modules that use the ActKeyColumns for finding keyframes +/* NOTE: this is exported to other modules that use the ActKeyColumns for finding keyframes */ short compare_ak_cfraPtr (void *node, void *data) { ActKeyColumn *ak= (ActKeyColumn *)node; @@ -311,6 +311,23 @@ static BezTriple *abk_get_bezt_with_value (ActBeztColumn *abk, float value) /* ActKeyBlocks (Long Keyframes) ------------------------------------------ */ +/* Comparator callback used for ActKeyBlock and cframe float-value pointer */ +/* NOTE: this is exported to other modules that use the ActKeyBlocks for finding long-keyframes */ +short compare_ab_cfraPtr (void *node, void *data) +{ + ActKeyBlock *ab= (ActKeyBlock *)node; + float *cframe= data; + + if (*cframe < ab->start) + return -1; + else if (*cframe > ab->start) + return 1; + else + return 0; +} + +/* --------------- */ + /* Create a ActKeyColumn for a pair of BezTriples */ static ActKeyBlock *bezts_to_new_actkeyblock(BezTriple *prev, BezTriple *beztn) { |