[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56726] trunk/blender/source/blender/ blenkernel/intern/tracking.c: Fix for keyed marker search not happening correct in some cases
Sergey Sharybin
sergey.vfx at gmail.com
Sun May 12 23:57:57 CEST 2013
Revision: 56726
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56726
Author: nazgul
Date: 2013-05-12 21:57:57 +0000 (Sun, 12 May 2013)
Log Message:
-----------
Fix for keyed marker search not happening correct in some cases
Was an heuristic failure writen for cases when there's no keyframe
in desired direction. Shall all be fine now.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/tracking.c
Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c 2013-05-12 19:05:45 UTC (rev 56725)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c 2013-05-12 21:57:57 UTC (rev 56726)
@@ -2488,8 +2488,9 @@
static MovieTrackingMarker *tracking_context_get_keyframed_marker(MovieTrackingTrack *track,
int curfra, bool backwards)
{
- MovieTrackingMarker *marker_keyed = BKE_tracking_marker_get(track, curfra);
- int a = marker_keyed - track->markers;
+ MovieTrackingMarker *marker_keyed = NULL;
+ MovieTrackingMarker *marker_keyed_fallback = NULL;
+ int a = BKE_tracking_marker_get(track, curfra) - track->markers;
while (a >= 0 && a < track->markersnr) {
int next = backwards ? a + 1 : a - 1;
@@ -2500,11 +2501,18 @@
if (next >= 0 && next < track->markersnr)
next_marker = &track->markers[next];
- /* if next mrker is disabled, stop searching keyframe and use current frame as keyframe */
- if (next_marker && next_marker->flag & MARKER_DISABLED)
- is_keyframed = true;
+ if ((cur_marker->flag & MARKER_DISABLED) == 0) {
+ /* If it'll happen so we didn't find a real keyframe marker,
+ * fallback to the first marker in current tracked segment
+ * as a keyframe.
+ */
+ if (next_marker && next_marker->flag & MARKER_DISABLED) {
+ if (marker_keyed_fallback == NULL)
+ marker_keyed_fallback = cur_marker;
+ }
- is_keyframed |= (cur_marker->flag & MARKER_TRACKED) == 0;
+ is_keyframed |= (cur_marker->flag & MARKER_TRACKED) == 0;
+ }
if (is_keyframed) {
marker_keyed = cur_marker;
@@ -2515,6 +2523,9 @@
a = next;
}
+ if (marker_keyed == NULL)
+ marker_keyed = marker_keyed_fallback;
+
return marker_keyed;
}
More information about the Bf-blender-cvs
mailing list