Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-07-23 16:09:30 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-07-23 16:12:35 +0300
commit4cf8f35cc161b3eed3426adca5a4eeb5bb3d8a7c (patch)
tree67feb01d662f49dd807529744f586b23ad1e04e7 /source/blender/blenkernel/intern/tracking_solver.c
parent7d65827980e72750d0c58de9e6865e8d32a7a90c (diff)
Tracking: Give more reasonable error message directly in the interface
Before this the message could be too generic which was simply saying that console is to be checked. This isn't very useful in cases when we know that reconstruction is failed because of lack of good keyframes or failure of initial reconstruction if there is no enough parallax on the selected keyframes.
Diffstat (limited to 'source/blender/blenkernel/intern/tracking_solver.c')
-rw-r--r--source/blender/blenkernel/intern/tracking_solver.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/tracking_solver.c b/source/blender/blenkernel/intern/tracking_solver.c
index cfa41cb7d92..7e7a839b645 100644
--- a/source/blender/blenkernel/intern/tracking_solver.c
+++ b/source/blender/blenkernel/intern/tracking_solver.c
@@ -65,6 +65,9 @@ typedef struct MovieReconstructContext {
TracksMap *tracks_map;
int sfra, efra;
+
+ /* Details about reconstruction error, reported by Libmv. */
+ char error_message[1024];
} MovieReconstructContext;
typedef struct ReconstructProgressData {
@@ -426,9 +429,26 @@ MovieReconstructContext *BKE_tracking_reconstruction_context_new(MovieClip *clip
context->keyframe2 = keyframe2;
context->refine_flags = reconstruct_refine_intrinsics_get_flags(tracking, object);
+ context->error_message[0] = '\0';
+
return context;
}
+void BKE_tracking_reconstruction_report_error_message(MovieReconstructContext *context,
+ const char *error_message)
+{
+ if (context->error_message[0]) {
+ /* Only keep initial error message, the rest are inducted ones. */
+ return;
+ }
+ BLI_strncpy(context->error_message, error_message, sizeof(context->error_message));
+}
+
+const char *BKE_tracking_reconstruction_error_message_get(const MovieReconstructContext *context)
+{
+ return context->error_message;
+}
+
/* Free memory used by a reconstruction process. */
void BKE_tracking_reconstruction_context_free(MovieReconstructContext *context)
{
@@ -534,7 +554,8 @@ bool BKE_tracking_reconstruction_finish(MovieReconstructContext *context, MovieT
MovieTrackingObject *object;
if (!libmv_reconstructionIsValid(context->reconstruction)) {
- printf("Failed solve the motion: most likely there are no good keyframes\n");
+ BKE_tracking_reconstruction_report_error_message(
+ context, "Failed to solve the motion: most likely there are no good keyframes");
return false;
}