diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_clip.py | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 11 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_dopesheet_draw.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_dopesheet_ops.c | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_tracking_types.h | 2 |
5 files changed, 22 insertions, 6 deletions
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index 5c98cafb732..8d55d678c5d 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -62,7 +62,7 @@ class CLIP_HT_header(Header): r = active_object.reconstruction if r.is_valid and sc.view == 'CLIP': - layout.label(text="Average solve error: %.4f" % + layout.label(text="Solve error: %.4f" % (r.average_error)) elif sc.view == 'GRAPH': layout.prop(sc, "view", text="", expand=True) @@ -89,9 +89,9 @@ class CLIP_HT_header(Header): row.prop(dopesheet, "show_only_selected", text="") row.prop(dopesheet, "show_hidden", text="") - layout.label(text="Sort by:") - layout.prop(dopesheet, "sort_method", text="") - layout.prop(dopesheet, "use_invert_sort", text="Invert") + row = layout.row(align=True) + row.prop(dopesheet, "sort_method", text="") + row.prop(dopesheet, "use_invert_sort", text="Invert", toggle=True) else: layout.prop(sc, "view", text="", expand=True) diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index f1b251f54dd..57983062e3f 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -3587,7 +3587,9 @@ void BKE_tracking_dopesheet_update(MovieTracking *tracking) MovieTrackingObject *object = BKE_tracking_active_object(tracking); MovieTrackingDopesheet *dopesheet = &tracking->dopesheet; MovieTrackingTrack *track; + MovieTrackingReconstruction *reconstruction; ListBase *tracksbase = BKE_tracking_object_tracks(tracking, object); + short sort_method = dopesheet->sort_method; short inverse = dopesheet->flag & TRACKING_DOPE_SORT_INVERSE; short sel_only = dopesheet->flag & TRACKING_DOPE_SELECTED_ONLY; @@ -3598,6 +3600,8 @@ void BKE_tracking_dopesheet_update(MovieTracking *tracking) tracking_dopesheet_free(dopesheet); + reconstruction = BKE_tracking_object_reconstruction(tracking, object); + for (track = tracksbase->first; track; track = track->next) { MovieTrackingDopesheetChannel *channel; @@ -3610,6 +3614,13 @@ void BKE_tracking_dopesheet_update(MovieTracking *tracking) channel = MEM_callocN(sizeof(MovieTrackingDopesheetChannel), "tracking dopesheet channel"); channel->track = track; + if (reconstruction->flag & TRACKING_RECONSTRUCTED) { + BLI_snprintf(channel->name, sizeof(channel->name), "%s (%.4f)", track->name, track->error); + } + else { + BLI_strncpy(channel->name, track->name, sizeof(channel->name)); + } + channels_segments_calc(channel); BLI_addtail(&dopesheet->channels, channel); diff --git a/source/blender/editors/space_clip/clip_dopesheet_draw.c b/source/blender/editors/space_clip/clip_dopesheet_draw.c index 2ce0e13b8bd..361a3a7d906 100644 --- a/source/blender/editors/space_clip/clip_dopesheet_draw.c +++ b/source/blender/editors/space_clip/clip_dopesheet_draw.c @@ -313,10 +313,10 @@ void clip_draw_dopesheet_channels(const bContext *C, ARegion *ar) else UI_ThemeColor(TH_TEXT); - font_height = BLF_height(fontid, track->name); + font_height = BLF_height(fontid, channel->name); BLF_position(fontid, v2d->cur.xmin + CHANNEL_PAD, y - font_height / 2.0f, 0.0f); - BLF_draw(fontid, track->name, strlen(track->name)); + BLF_draw(fontid, channel->name, strlen(channel->name)); } /* adjust y-position for next one */ diff --git a/source/blender/editors/space_clip/clip_dopesheet_ops.c b/source/blender/editors/space_clip/clip_dopesheet_ops.c index 914e82472bb..744c7ba46fd 100644 --- a/source/blender/editors/space_clip/clip_dopesheet_ops.c +++ b/source/blender/editors/space_clip/clip_dopesheet_ops.c @@ -76,8 +76,10 @@ static int dopesheet_select_channel_exec(bContext *C, wmOperator *op) SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); MovieTracking *tracking = &clip->tracking; + MovieTrackingObject *object = BKE_tracking_active_object(tracking); MovieTrackingDopesheet *dopesheet = &tracking->dopesheet; MovieTrackingDopesheetChannel *channel; + ListBase *tracksbase = BKE_tracking_object_tracks(tracking, object); float location[2]; int extend = RNA_boolean_get(op->ptr, "extend"); int current_channel_index = 0, channel_index; @@ -96,6 +98,7 @@ static int dopesheet_select_channel_exec(bContext *C, wmOperator *op) if (track->flag & TRACK_DOPE_SEL) { tracking->act_track = track; + BKE_tracking_select_track(tracksbase, track, TRACK_AREA_ALL, TRUE); } } else if (!extend) diff --git a/source/blender/makesdna/DNA_tracking_types.h b/source/blender/makesdna/DNA_tracking_types.h index 4eb1626f1cb..e1e7408fe14 100644 --- a/source/blender/makesdna/DNA_tracking_types.h +++ b/source/blender/makesdna/DNA_tracking_types.h @@ -232,6 +232,8 @@ typedef struct MovieTrackingDopesheetChannel { MovieTrackingTrack *track; /* motion track for which channel is created */ int pad; + char name[64]; /* name of channel */ + int tot_segment; /* total number of segments */ int *segments; /* tracked segments */ int max_segment, total_frames; /* longest segment length and total number of tracked frames */ |