From 36898304849fb9d29b189f0b0a7e6931492efcc1 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sun, 13 Nov 2011 17:16:04 +0000 Subject: Camera solving: fixed incorrect warnings about failure of solving some frames Error was caused y not very accurate calculating which frames should be solved. --- source/blender/blenkernel/intern/tracking.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 65b27f725bc..d65840720cd 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -1289,8 +1289,27 @@ static int retrieve_libmv_reconstruct(MovieTracking *tracking, struct libmv_Reco } if(track->markersnr) { - if(track->markers[0].framenrmarkers[0].framenr; - if(track->markers[track->markersnr-1].framenr>efra) efra= track->markers[track->markersnr-1].framenr; + int first= 0, last= track->markersnr; + MovieTrackingMarker *first_marker= &track->markers[0]; + MovieTrackingMarker *last_marker= &track->markers[track->markersnr-1]; + + /* find first not-disabled marker */ + while(firstmarkersnr-1 && first_marker->flag&MARKER_DISABLED) { + first++; + first_marker++; + } + + /* find last not-disabled marker */ + while(last>=0 && last_marker->flag&MARKER_DISABLED) { + last--; + last_marker--; + } + + if(firstmarkersnr-1) + sfra= MIN2(sfra, first_marker->framenr); + + if(last>=0) + efra= MAX2(efra, last_marker->framenr); } track= track->next; -- cgit v1.2.3