[Bf-blender-cvs] [1dd6334] libmv_prediction: Libmv: Bring back track margin check
Sergey Sharybin
noreply at git.blender.org
Mon Oct 20 20:42:17 CEST 2014
Commit: 1dd633429e5e01c44c17751c78a07f4b1ce3e698
Author: Sergey Sharybin
Date: Tue Oct 21 00:41:58 2014 +0600
Branches: libmv_prediction
https://developer.blender.org/rB1dd633429e5e01c44c17751c78a07f4b1ce3e698
Libmv: Bring back track margin check
===================================================================
M source/blender/blenkernel/intern/tracking_auto.c
===================================================================
diff --git a/source/blender/blenkernel/intern/tracking_auto.c b/source/blender/blenkernel/intern/tracking_auto.c
index 140fa67..024f360 100644
--- a/source/blender/blenkernel/intern/tracking_auto.c
+++ b/source/blender/blenkernel/intern/tracking_auto.c
@@ -38,6 +38,7 @@
#include "BLI_threads.h"
#include "BLI_utildefines.h"
+#include "BLI_math.h"
#include "BKE_movieclip.h"
#include "BKE_tracking.h"
@@ -238,6 +239,37 @@ static bool check_track_trackable(MovieClip *clip,
return false;
}
+/* Returns false if marker crossed margin area from frame bounds. */
+static bool tracking_check_marker_margin(libmv_Marker *libmv_marker,
+ int margin,
+ int frame_width,
+ int frame_height)
+{
+ float patch_min[2], patch_max[2];
+ float margin_left, margin_top, margin_right, margin_bottom;
+
+ INIT_MINMAX2(patch_min, patch_max);
+ minmax_v2v2_v2(patch_min, patch_max, libmv_marker->patch[0]);
+ minmax_v2v2_v2(patch_min, patch_max, libmv_marker->patch[1]);
+ minmax_v2v2_v2(patch_min, patch_max, libmv_marker->patch[2]);
+ minmax_v2v2_v2(patch_min, patch_max, libmv_marker->patch[3]);
+
+ margin_left = max_ff(libmv_marker->center[0] - patch_min[0], margin);
+ margin_top = max_ff(patch_max[1] - libmv_marker->center[1], margin);
+ margin_right = max_ff(patch_max[0] - libmv_marker->center[0], margin);
+ margin_bottom = max_ff(libmv_marker->center[0] - patch_min[1], margin);
+
+ if (libmv_marker->center[0] < margin_left ||
+ libmv_marker->center[0] > frame_width - margin_right ||
+ libmv_marker->center[1] < margin_bottom ||
+ libmv_marker->center[1] > frame_height - margin_top)
+ {
+ return false;
+ }
+
+ return true;
+}
+
AutoTrackContext *BKE_autotrack_context_new(MovieClip *clip,
MovieClipUser *user,
const bool backwards,
@@ -353,6 +385,14 @@ bool BKE_autotrack_context_step(AutoTrackContext *context)
options->track_index,
&libmv_current_marker))
{
+ if (!tracking_check_marker_margin(&libmv_current_marker,
+ options->track->margin,
+ context->frame_width,
+ context->frame_height))
+ {
+ continue;
+ }
+
libmv_tracked_marker = libmv_current_marker;
libmv_tracked_marker.frame = frame + frame_delta;
More information about the Bf-blender-cvs
mailing list