[Bf-blender-cvs] [0570e5e] soc-2016-multiview: remove check for correspondence num and clip num

Tianwei Shen noreply at git.blender.org
Wed Jul 6 13:55:58 CEST 2016


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))
 	{




More information about the Bf-blender-cvs mailing list