diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-18 20:45:02 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-18 20:45:02 +0400 |
commit | 16ffa8e8f432ac2c0909117b48a98cb4b36eaff6 (patch) | |
tree | 6978d0fa33bdded2d4df12a72e3c150c5661293f /source/blender/editors/space_clip | |
parent | 6d0f27b727fed213e602dbd664934b1c5b9ea5e4 (diff) |
Curve points of tracking curves now can be grabbed to smooth spikes
Curve points of tracks curves now can be selected for X and Y channels
separately and can be moved along Y axis of curve viewer, points currently
can't change frame they belong to. This allows to smooth spikes caused by
unwanted marker jump.
Also fixed some mistakes in cancel transform in cases when locked tracks
were being trying to be moved; fixed incorrect calculation of marker speed
for curve drawing.
Diffstat (limited to 'source/blender/editors/space_clip')
4 files changed, 15 insertions, 9 deletions
diff --git a/source/blender/editors/space_clip/clip_graph_draw.c b/source/blender/editors/space_clip/clip_graph_draw.c index 9aba6db0c80..e913ae77f05 100644 --- a/source/blender/editors/space_clip/clip_graph_draw.c +++ b/source/blender/editors/space_clip/clip_graph_draw.c @@ -155,15 +155,16 @@ void tracking_segment_end_cb(void *UNUSED(userdata)) } static void tracking_segment_knot_cb(void *userdata, MovieTrackingTrack *track, - MovieTrackingMarker *marker, int UNUSED(coord), float val) + MovieTrackingMarker *marker, int coord, float val) { struct { MovieTrackingTrack *act_track; int sel; float xscale, yscale, hsize; } *data = userdata; - int sel= 0; + int sel= 0, sel_flag; if(track!=data->act_track) return; - sel= (marker->flag&MARKER_GRAPH_SEL) ? 1 : 0; + sel_flag= coord == 0 ? MARKER_GRAPH_SEL_X : MARKER_GRAPH_SEL_Y; + sel= (marker->flag & sel_flag) ? 1 : 0; if(sel == data->sel) { if(sel) UI_ThemeColor(TH_HANDLE_VERTEX_SELECT); diff --git a/source/blender/editors/space_clip/clip_graph_ops.c b/source/blender/editors/space_clip/clip_graph_ops.c index 08d6bcf47bc..8be5e520b1f 100644 --- a/source/blender/editors/space_clip/clip_graph_ops.c +++ b/source/blender/editors/space_clip/clip_graph_ops.c @@ -68,13 +68,13 @@ static void toggle_selection_cb(void *userdata, MovieTrackingMarker *marker) switch(data->action) { case SEL_SELECT: - marker->flag|= MARKER_GRAPH_SEL; + marker->flag|= (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y); break; case SEL_DESELECT: - marker->flag&= ~MARKER_GRAPH_SEL; + marker->flag&= ~(MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y); break; case SEL_INVERT: - marker->flag^= MARKER_GRAPH_SEL; + marker->flag^= (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y); break; } } @@ -177,7 +177,10 @@ static int mouse_select_knot(bContext *C, float co[2], int extend) clip_graph_tracking_iterate(sc, &selectdata, toggle_selection_cb); } - userdata.marker->flag|= MARKER_GRAPH_SEL; + if(userdata.coord==0) + userdata.marker->flag|= MARKER_GRAPH_SEL_X; + else + userdata.marker->flag|= MARKER_GRAPH_SEL_Y; return 1; } @@ -335,7 +338,7 @@ static int delete_knot_exec(bContext *C, wmOperator *UNUSED(op)) while(a<act_track->markersnr) { MovieTrackingMarker *marker= &act_track->markers[a]; - if(marker->flag&MARKER_GRAPH_SEL) + if(marker->flag & (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y)) clip_delete_marker(C, clip, tracksbase, act_track, marker); else a++; diff --git a/source/blender/editors/space_clip/clip_utils.c b/source/blender/editors/space_clip/clip_utils.c index 3ca8fc35c7f..46442d39a7b 100644 --- a/source/blender/editors/space_clip/clip_utils.c +++ b/source/blender/editors/space_clip/clip_utils.c @@ -95,7 +95,7 @@ void clip_graph_tracking_values_iterate_track(SpaceClip *sc, MovieTrackingTrack } /* value is a pixels per frame speed */ - val= (marker->pos[coord] - prevval) * ((i==0) ? (width) : (height)); + val= (marker->pos[coord] - prevval) * ((coord==0) ? (width) : (height)); val/= marker->framenr-prevfra; if(func) diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index 3d584378135..04871156412 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -545,6 +545,8 @@ static void clip_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", DELKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", XKEY, KM_PRESS, KM_SHIFT, 0); + + transform_keymap_for_space(keyconf, keymap, SPACE_CLIP); } const char *clip_context_dir[]= {"edit_movieclip", NULL}; |