Commit: 59b5bdbb7cb868467a978c9e8ce13b892a0edefe
Author: Tianwei Shen
Date:   Tue Aug 16 17:20:29 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rB59b5bdbb7cb868467a978c9e8ce13b892a0edefe

now multi-view can work with more than 2 cameras

solve the camera number limitation by iterating over main->movieclip.

===================================================================

M       source/blender/editors/space_clip/tracking_ops_correspondence.c

===================================================================

diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c 
b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index 208ea0d..555575d 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -223,23 +223,18 @@ 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
-        * TODO(tianwei): it cannot count clip other than primary and secondary 
clips.
-        * */
-       //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) {
-       //              if (sa->spacetype == SPACE_CLIP) {
-       //                      SpaceClip *other_sc = sa->spacedata.first;
-       //                      if (other_sc != sc && other_sc->view == 
SC_VIEW_CLIP) {
-       //                              MovieClip *other_clip;
-       //                              other_clip = 
ED_space_clip_get_clip(other_sc);
-       //                              smj->clips[count++] = other_clip;
-       //                      }
-       //              }
-       //      }
-       //}
-       smj->clips[1] = ED_space_clip_get_secondary_clip(sc);
+       /* do multi-view reconstruction, fill in witness clips from 
Main.movieclip */
+       int mc_counter = 1;
+       for (Link *link = main->movieclip.first;
+            link != NULL;
+            link = link->next)
+       {
+               MovieClip *mc_link = (MovieClip*) link;
+               if (mc_link != smj->clips[0]) {
+                       smj->clips[mc_counter++] = mc_link;
+               }
+       }
+       BLI_assert(mc_counter == smj->clip_num);
 
        if (!BKE_tracking_multiview_reconstruction_check(smj->clips,
                                                         object,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to