[Bf-blender-cvs] [33a9441] soc-2016-multiview: change iterating-all-windows-to-find-witness-clip
Tianwei Shen
noreply at git.blender.org
Mon Aug 8 05:21:28 CEST 2016
Commit: 33a9441946951fd49e25c8811bdaf23616fb9f31
Author: Tianwei Shen
Date: Sun Aug 7 12:43:20 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rB33a9441946951fd49e25c8811bdaf23616fb9f31
change iterating-all-windows-to-find-witness-clip
- Previously we need to iterate all windows to get witness clips, now we
don't need to do that because it can be accessed by secondary_clip
poitner in SpaceClip. Correspondence links are confined to
'correspondenc' mode.
- Restore 'synchronize two frame bars'
===================================================================
M source/blender/editors/space_clip/clip_ops.c
M source/blender/editors/space_clip/space_clip.c
M source/blender/editors/space_clip/tracking_ops_correspondence.c
===================================================================
diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c
index 876ef3e..a0790ec 100644
--- a/source/blender/editors/space_clip/clip_ops.c
+++ b/source/blender/editors/space_clip/clip_ops.c
@@ -1038,18 +1038,17 @@ static int change_frame_poll(bContext *C)
static void change_frame_apply(bContext *C, wmOperator *op)
{
- //Scene *scene = CTX_data_scene(C);
+ Scene *scene = CTX_data_scene(C);
/* set the new frame number */
- //CFRA = RNA_int_get(op->ptr, "frame");
- //FRAMENUMBER_MIN_CLAMP(CFRA);
- //SUBFRA = 0.0f;
+ CFRA = RNA_int_get(op->ptr, "frame");
+ FRAMENUMBER_MIN_CLAMP(CFRA);
+ SUBFRA = 0.0f;
/* do updates */
- //BKE_sound_seek_scene(CTX_data_main(C), scene);
- //WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene);
+ BKE_sound_seek_scene(CTX_data_main(C), scene);
+ WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene);
- // TODO(Tianwei): decouple frame for now, find a better way
SpaceClip *sc = CTX_wm_space_clip(C);
BKE_movieclip_user_set_frame(&sc->user, RNA_int_get(op->ptr, "frame"));
WM_event_add_notifier(C, NC_MOVIECLIP | ND_DISPLAY, NULL);
diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c
index e998cc7..207f19d 100644
--- a/source/blender/editors/space_clip/space_clip.c
+++ b/source/blender/editors/space_clip/space_clip.c
@@ -902,7 +902,7 @@ static void clip_refresh(const bContext *C, ScrArea *sa)
{
wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *window = CTX_wm_window(C);
- //Scene *scene = CTX_data_scene(C);
+ Scene *scene = CTX_data_scene(C);
SpaceClip *sc = (SpaceClip *)sa->spacedata.first;
ARegion *ar_main = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
ARegion *ar_tools = BKE_area_find_region_type(sa, RGN_TYPE_TOOLS);
@@ -1096,8 +1096,7 @@ static void clip_refresh(const bContext *C, ScrArea *sa)
ED_area_tag_redraw(sa);
}
- // TODO(tianwei): find a better way to decouple frames
- //BKE_movieclip_user_set_frame(&sc->user, scene->r.cfra);
+ BKE_movieclip_user_set_frame(&sc->user, scene->r.cfra);
}
/********************* main region ********************/
diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index 51ab371..1d20965 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -86,32 +86,22 @@ static MovieTrackingTrack *get_single_track(SpaceClip *sc, ListBase *tracksbase)
static int add_correspondence_exec(bContext *C, wmOperator *op)
{
SpaceClip *sc = CTX_wm_space_clip(C);
- ARegion *ar = CTX_wm_region(C);
- MovieClip *clip = ED_space_clip_get_clip_in_region(sc, ar);
+ /* get primary clip */
+ MovieClip *clip = ED_space_clip_get_clip(sc);
MovieTracking *tracking = &clip->tracking;
ListBase *tracksbase = BKE_tracking_get_active_tracks(tracking);
- // get one track from each clip and link them
+ /* get one track from each clip and link them */
MovieTrackingTrack *primary_track = NULL, *witness_track = NULL;
- // get a single selected tracks in the primary camera
+ /* get a single selected tracks in the primary camera */
primary_track = get_single_track(sc, tracksbase);
- // get a single selected tracks in the witness camera, only one witness camera is allowed
- wmWindow *window = CTX_wm_window(C);
- MovieClip *second_clip = NULL;
- for (ScrArea *sa = window->screen->areabase.first; sa != NULL; sa = sa->next) {
- if (sa->spacetype == SPACE_CLIP) {
- SpaceClip *second_sc = sa->spacedata.first;
- if (second_sc != sc && second_sc->view == SC_VIEW_CLIP) {
- second_clip = ED_space_clip_get_clip(second_sc);
- MovieTracking *second_tracking = &second_clip->tracking;
- ListBase *second_tracksbase = BKE_tracking_get_active_tracks(second_tracking);
- witness_track = get_single_track(second_sc, second_tracksbase);
- break;
- }
- }
- }
+ /* get a single selected tracks in the witness camera, only one witness camera is allowed */
+ MovieClip *second_clip = ED_space_clip_get_secondary_clip(sc);
+ MovieTracking *second_tracking = &second_clip->tracking;
+ ListBase *second_tracksbase = BKE_tracking_get_active_tracks(second_tracking);
+ witness_track = get_single_track(sc, second_tracksbase);
if (!primary_track || !witness_track) {
BKE_report(op->reports, RPT_ERROR, "Select exactly one track in each clip");
@@ -154,12 +144,12 @@ static int delete_correspondence_exec(bContext *C, wmOperator *UNUSED(op))
MovieTracking *tracking = &clip->tracking;
bool changed = false;
- /* Remove track correspondences from correspondence base
- */
+ /* Remove track correspondences from correspondence base */
ListBase *correspondence_base = &tracking->correspondences;
for (MovieTrackingCorrespondence *corr = correspondence_base->first;
corr != NULL;
- corr = corr->next) {
+ corr = corr->next)
+ {
MovieTrackingTrack *track;
track = corr->self_track;
if (TRACK_VIEW_SELECTED(sc, track)) {
@@ -222,7 +212,7 @@ static bool solve_multiview_initjob(bContext *C,
MovieTrackingObject *object = BKE_tracking_object_get_active(tracking);
int width, height;
- // count all clips number, primary clip will always be the first
+ /* count all clips number, primary clip will always be the first */
smj->clip_num = 1;
wmWindow *window = CTX_wm_window(C);
for (ScrArea *sa = window->screen->areabase.first; sa != NULL; sa = sa->next) {
@@ -237,7 +227,9 @@ static bool solve_multiview_initjob(bContext *C,
smj->clips = MEM_callocN(smj->clip_num * sizeof(MovieClip*), "multiview clip pointers");
smj->clips[0] = clip;
- // do multi-view reconstruction
+ /* do multi-view reconstruction
+ * TODO(tianwei): it can only count clip that are open?
+ * */
if (smj->clip_num > 1) {
int count = 1; // witness cameras start from 1
for (ScrArea *sa = window->screen->areabase.first; sa != NULL; sa = sa->next) {
More information about the Bf-blender-cvs
mailing list