[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