diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2019-07-25 15:25:22 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2019-07-25 15:25:22 +0300 |
commit | 84516c806bae5f3fb82f6ccc1123bd1428298c2e (patch) | |
tree | 3451f6d874a70b120d8f47eb78471536b2008f65 /intern | |
parent | 2c6e50c6c0c77d42b59f6fb1f0b8bb2ae800534c (diff) | |
parent | bfe580642f46539ba85341fa8db451c52afd0cb4 (diff) |
Merge branch 'master' into sculpt-mode-features
Diffstat (limited to 'intern')
-rw-r--r-- | intern/libmv/intern/reconstruction.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/intern/libmv/intern/reconstruction.cc b/intern/libmv/intern/reconstruction.cc index e271d663c4a..64f00b19df0 100644 --- a/intern/libmv/intern/reconstruction.cc +++ b/intern/libmv/intern/reconstruction.cc @@ -264,15 +264,15 @@ libmv_Reconstruction *libmv_solveReconstruction( update_callback.invoke(0, "Selecting keyframes"); - selectTwoKeyframesBasedOnGRICAndVariance(tracks, + if (selectTwoKeyframesBasedOnGRICAndVariance(tracks, normalized_tracks, *camera_intrinsics, keyframe1, - keyframe2); - - /* so keyframes in the interface would be updated */ - libmv_reconstruction_options->keyframe1 = keyframe1; - libmv_reconstruction_options->keyframe2 = keyframe2; + keyframe2)) { + /* so keyframes in the interface would be updated */ + libmv_reconstruction_options->keyframe1 = keyframe1; + libmv_reconstruction_options->keyframe2 = keyframe2; + } } /* Actual reconstruction. */ @@ -283,7 +283,7 @@ libmv_Reconstruction *libmv_solveReconstruction( LG << "number of markers for init: " << keyframe_markers.size(); - if (keyframe_markers.size() < 8) { + if (keyframe_markers.size() < 16) { LG << "No enough markers to initialize from"; libmv_reconstruction->is_valid = false; return libmv_reconstruction; @@ -291,13 +291,18 @@ libmv_Reconstruction *libmv_solveReconstruction( update_callback.invoke(0, "Initial reconstruction"); - EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction); + if (!EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction)) { + LG << "Failed to initialize reconstruction"; + libmv_reconstruction->is_valid = false; + return libmv_reconstruction; + } + EuclideanBundle(normalized_tracks, &reconstruction); EuclideanCompleteReconstruction(normalized_tracks, &reconstruction, &update_callback); - /* Refinement/ */ + /* Refinement. */ if (libmv_reconstruction_options->refine_intrinsics) { libmv_solveRefineIntrinsics( tracks, |