Commit: 0570e5eeaba139a7da9b84601451a2f52af08577
Author: Tianwei Shen
Date:   Wed Jul 6 19:35:40 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rB0570e5eeaba139a7da9b84601451a2f52af08577

remove check for correspondence num and clip num

- fix bugs in BKE_tracking_correspondence_add:
  also check whether other_clip.other_track has been linked
  previously hasn't done that

- remove check for correspondence number and clip number, previously
  needs 8 correpondences and 2 clips to trigger multi-view
  reconstruction

- format code to conform google style and blender style

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

M       intern/libmv/intern/reconstructionN.cc
M       source/blender/blenkernel/BKE_tracking.h
M       source/blender/blenkernel/intern/tracking_correspondence.c
M       source/blender/blenkernel/intern/tracking_solver.c
M       source/blender/editors/space_clip/tracking_ops_correspondence.c

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

diff --git a/intern/libmv/intern/reconstructionN.cc 
b/intern/libmv/intern/reconstructionN.cc
index 7dbed86..e40aeb5 100644
--- a/intern/libmv/intern/reconstructionN.cc
+++ b/intern/libmv/intern/reconstructionN.cc
@@ -206,8 +206,7 @@ libmv_ReconstructionN** libmv_solveMultiviewReconstruction(
 
   Tracks all_normalized_tracks;        // normalized tracks of all clips
   all_normalized_tracks.SetClipNum(clip_num);
-  for(int i = 0; i < clip_num; i++)
-  {
+  for (int i = 0; i < clip_num; i++) {
     all_libmv_reconstruction[i] = LIBMV_OBJECT_NEW(libmv_ReconstructionN);
     Tracks &tracks = *((Tracks *) all_libmv_tracks[i]);                // 
Tracks are just a bunch of markers
 
@@ -221,8 +220,7 @@ libmv_ReconstructionN** libmv_solveMultiviewReconstruction(
     mv_getNormalizedTracks(tracks, *camera_intrinsics, &normalized_tracks);
     all_normalized_tracks.AddTracks(normalized_tracks);
 
-    if(i == 0)         // key frame from primary camera
-    {
+       if (i == 0) {                   // key frame from primary camera
       ///* keyframe selection. */
       keyframe1 = libmv_reconstruction_options->keyframe1;
          keyframe2 = libmv_reconstruction_options->keyframe2;
@@ -326,7 +324,7 @@ bool libmv_multiviewReconstructionIsValid(const int 
clip_num,
                                           const libmv_ReconstructionN 
**all_libmv_reconstruction)
 {
   bool valid_flag = true;
-  for(int i = 0; i < clip_num; i++)
+  for (int i = 0; i < clip_num; i++)
     valid_flag &= all_libmv_reconstruction[i]->is_valid;
   return valid_flag;
 }
diff --git a/source/blender/blenkernel/BKE_tracking.h 
b/source/blender/blenkernel/BKE_tracking.h
index 0d3487f..173b204 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -306,7 +306,7 @@ struct MovieMultiviewReconstructContext 
*BKE_tracking_multiview_reconstruction_c
                                                                                
            int width, int height);
 void BKE_tracking_multiview_reconstruction_context_free(struct 
MovieMultiviewReconstructContext *context);
 bool BKE_tracking_multiview_reconstruction_check(struct MovieClip **clips, 
struct MovieTrackingObject *object,
-                                                 int clip_num, char 
*error_msg, int error_size);
+                                                 char *error_msg, int 
error_size);
 bool BKE_tracking_multiview_reconstruction_finish(struct 
MovieMultiviewReconstructContext *context, struct MovieClip** clips);
 
 #define TRACK_SELECTED(track)               ((track)->flag & SELECT || 
(track)->pat_flag & SELECT || (track)->search_flag & SELECT)
diff --git a/source/blender/blenkernel/intern/tracking_correspondence.c 
b/source/blender/blenkernel/intern/tracking_correspondence.c
index bf0dab2..db29b65 100644
--- a/source/blender/blenkernel/intern/tracking_correspondence.c
+++ b/source/blender/blenkernel/intern/tracking_correspondence.c
@@ -98,22 +98,25 @@ MovieTrackingCorrespondence 
*BKE_tracking_correspondence_add(ListBase *corr_base
        // check duplicate correspondences or conflict correspondence
        for(corr = corr_base->first; corr != NULL; corr = corr->next)
        {
-               if (corr->self_clip == self_clip && corr->self_track == 
self_track)
-               {
+               if (corr->self_clip == self_clip && corr->self_track == 
self_track) {
                        // duplicate correspondences
-                       if (corr->other_clip == other_clip && corr->other_track 
== other_track)
-                       {
-                               BLI_strncpy(error_msg,
-                                           N_("This correspondence has been 
added"),
-                                           error_size);
+                       if (corr->other_clip == other_clip && corr->other_track 
== other_track) {
+                               BLI_strncpy(error_msg, N_("This correspondence 
has been added"), error_size);
                                return NULL;
                        }
                        // conflict correspondence
-                       else
-                       {
-                               BLI_strncpy(error_msg,
-                                           N_("Conflict correspondence, 
consider first deleting the old one"),
-                                           error_size);
+                       else {
+                               BLI_strncpy(error_msg, N_("Conflict 
correspondence, consider first deleting the old one"), error_size);
+                               return NULL;
+                       }
+               }
+               if (corr->other_clip == other_clip && corr->other_track == 
other_track) {
+                       if (corr->self_clip == self_clip && corr->self_track == 
self_track) {
+                               BLI_strncpy(error_msg, N_("This correspondence 
has been added"), error_size);
+                               return NULL;
+                       }
+                       else {
+                               BLI_strncpy(error_msg, N_("Conflict 
correspondence, consider first deleting the old one"), error_size);
                                return NULL;
                        }
                }
@@ -457,10 +460,7 @@ static void multiview_reconstruct_update_solve_cb(void 
*customdata, double progr
        BLI_snprintf(progressdata->stats_message, progressdata->message_size, 
"Solving cameras | %s", message);
 }
 
-/* TODO(tianwei): Solve camera/object motion and reconstruct 3D markers 
position
- * from a prepared reconstruction context from multiple views.
- *
- * stop is not actually used at this moment, so reconstruction
+/* stop is not actually used at this moment, so reconstruction
  * job could not be stopped.
  *
  * do_update, progress and stat_message are set by reconstruction
diff --git a/source/blender/blenkernel/intern/tracking_solver.c 
b/source/blender/blenkernel/intern/tracking_solver.c
index e54fe6e..3a2ce5b 100644
--- a/source/blender/blenkernel/intern/tracking_solver.c
+++ b/source/blender/blenkernel/intern/tracking_solver.c
@@ -586,30 +586,14 @@ void BKE_tracking_reconstruction_scale(MovieTracking 
*tracking, float scale[3])
 
 /* Perform early check on whether everything is fine to start reconstruction. 
*/
 bool BKE_tracking_multiview_reconstruction_check(MovieClip **clips, 
MovieTrackingObject *object,
-                                                 int clip_num, char 
*error_msg, int error_size)
+                                                 char *error_msg, int 
error_size)
 {
 #ifndef WITH_LIBMV
        BLI_strncpy(error_msg, N_("Blender is compiled without motion tracking 
library"), error_size);
        return false;
 #endif
-       // count number of open video clips
-       if (clip_num < 2) {
-               BLI_strncpy(error_msg,
-                           N_("At least 2 video clips are needed for 
multi-view reconstruction"),
-                           error_size);
-               return false;
-       }
        MovieClip *primary_clip = clips[0];
        MovieTracking *tracking = &primary_clip->tracking;
-       ListBase *correspondence = &tracking->correspondences;
-       // count number of correspondences
-       if(BLI_listbase_count(correspondence) < 8) {
-               BLI_strncpy(error_msg,
-                           N_("At least 8 correspondences need to be specified 
across two clips"),
-                           error_size);
-               return false;
-       }
-
        if (tracking->settings.motion_flag & TRACKING_MOTION_MODAL) {
                /* TODO: check for number of tracks? */
                return true;
diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c 
b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index b172a60..6c0de55 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -269,7 +269,6 @@ static bool solve_multiview_initjob(bContext *C,
 
        if (!BKE_tracking_multiview_reconstruction_check(smj->clips,
                                                         object,
-                                                        smj->clip_num,
                                                         error_msg,
                                                         max_error))
        {

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

Reply via email to