diff options
-rw-r--r-- | release/scripts/ui/properties_animviz.py | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawanimviz.c | 27 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_action_types.h | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_animviz.c | 5 |
4 files changed, 31 insertions, 5 deletions
diff --git a/release/scripts/ui/properties_animviz.py b/release/scripts/ui/properties_animviz.py index 3e9c2158cb7..9eb046cc2c8 100644 --- a/release/scripts/ui/properties_animviz.py +++ b/release/scripts/ui/properties_animviz.py @@ -61,6 +61,8 @@ class MotionPathButtonsPanel(bpy.types.Panel): col.label(text="Display:") col.prop(mps, "show_frame_numbers", text="Frame Numbers") col.prop(mps, "highlight_keyframes", text="Keyframes") + if bones: + col.prop(mps, "search_all_action_keyframes", text="+ Non-Grouped Keyframes") col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers") diff --git a/source/blender/editors/space_view3d/drawanimviz.c b/source/blender/editors/space_view3d/drawanimviz.c index 0a8f19493fa..1bc51de4471 100644 --- a/source/blender/editors/space_view3d/drawanimviz.c +++ b/source/blender/editors/space_view3d/drawanimviz.c @@ -199,6 +199,21 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, glVertex3fv(mpv->co); glEnd(); + /* Draw big green dot where the current frame is */ + // NOTE: only do this when drawing keyframes for now... + if (avs->path_viewflag & MOTIONPATH_VIEW_KFRAS) { + UI_ThemeColor(TH_CFRAME); + glPointSize(6.0f); + + glBegin(GL_POINTS); + mpv = mpv_start + (CFRA - sfra); + glVertex3fv(mpv->co); + glEnd(); + + glPointSize(1.0f); + UI_ThemeColor(TH_TEXT_HI); + } + /* Draw frame numbers at each framestep value */ if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) { for (i=0, mpv=mpv_start; i < len; i+=stepsize, mpv+=stepsize) { @@ -220,9 +235,9 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, } } } - + /* Keyframes - dots and numbers */ - if (avs->path_viewflag & MOTIONPATH_VIEW_KFNOS) { + if (avs->path_viewflag & MOTIONPATH_VIEW_KFRAS) { AnimData *adt= BKE_animdata_from_id(&ob->id); DLRBT_Tree keys; @@ -230,8 +245,10 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, BLI_dlrbTree_init(&keys); if (adt) { - /* for now, it is assumed that keyframes for bones are all grouped in a single group */ - if (pchan) { + /* it is assumed that keyframes for bones are all grouped in a single group + * unless an option is set to always use the whole action + */ + if ((pchan) && (avs->path_viewflag & MOTIONPATH_VIEW_KFACT)==0) { bActionGroup *agrp= action_groups_find_named(adt->action, pchan->name); if (agrp) { @@ -261,7 +278,7 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, glPointSize(1.0f); /* Draw frame numbers of keyframes */ - if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) { + if (avs->path_viewflag & MOTIONPATH_VIEW_KFNOS) { for (i=0, mpv=mpv_start; i < len; i++, mpv++) { float mframe= (float)(sfra + i); diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 181ab6f0afa..210bb6a9af0 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -154,6 +154,8 @@ typedef enum eMotionPaths_ViewFlag { MOTIONPATH_VIEW_KFRAS = (1<<1), /* show keyframe/frame numbers */ MOTIONPATH_VIEW_KFNOS = (1<<2), + /* find keyframes in whole action (instead of just in matching group name) */ + MOTIONPATH_VIEW_KFACT = (1<<3), } eMotionPath_ViewFlag; /* bAnimVizSettings->path_bakeflag */ diff --git a/source/blender/makesrna/intern/rna_animviz.c b/source/blender/makesrna/intern/rna_animviz.c index ff8c452e3ac..985521fe2c6 100644 --- a/source/blender/makesrna/intern/rna_animviz.c +++ b/source/blender/makesrna/intern/rna_animviz.c @@ -264,6 +264,11 @@ static void rna_def_animviz_paths(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Show Keyframe Numbers", "Show frame numbers of Keyframes on Motion Paths"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + prop= RNA_def_property(srna, "search_all_action_keyframes", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_KFACT); + RNA_def_property_ui_text(prop, "All Action Keyframes", "For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower)"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + prop= RNA_def_property(srna, "frame_step", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "path_step"); RNA_def_property_range(prop, 1, 100); |