[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39521] branches/soc-2011-tomato/source/ blender/blenkernel/intern/tracking.c: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Thu Aug 18 14:25:50 CEST 2011


Revision: 39521
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39521
Author:   nazgul
Date:     2011-08-18 12:25:50 +0000 (Thu, 18 Aug 2011)
Log Message:
-----------
Camera tracking integration
===========================

Auto-disable marker in mid-shot.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-08-18 12:20:10 UTC (rev 39520)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-08-18 12:25:50 UTC (rev 39521)
@@ -485,6 +485,8 @@
 	MovieClipUser user;
 	MovieClip *clip;
 
+	int first_time;
+
 	TrackContext *track_context;
 	int num_tracks;
 
@@ -507,6 +509,7 @@
 	context->backwards= backwards;
 	context->hash= BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "tracking trackHash");
 	context->sync_frame= user->framenr;
+	context->first_time= 1;
 
 	/* count */
 	track= tracking->tracks.first;
@@ -982,6 +985,27 @@
 			}
 
 			if(tracked) {
+				if(context->first_time) {
+					int prevframe;
+
+					if(context->backwards) prevframe= curfra+1;
+					else prevframe= curfra-1;
+
+					/* check if there's no keyframe/tracked markers before tracking marker.
+					    if so -- create disabled marker before currently tracking "segment" */
+					if(!BKE_tracking_has_marker(track, prevframe)) {
+						marker_new= *marker;
+						marker_new.framenr= prevframe;
+
+						marker_new.flag|= MARKER_DISABLED;
+
+						#pragma omp critical
+						{
+							BKE_tracking_insert_marker(track, &marker_new);
+						}
+					}
+				}
+
 				memset(&marker_new, 0, sizeof(marker_new));
 				marker_new.pos[0]= (origin[0]+x2)/ibuf_new->x;
 				marker_new.pos[1]= (origin[1]+y2)/ibuf_new->y;
@@ -1015,6 +1039,7 @@
 	}
 
 	IMB_freeImBuf(ibuf_new);
+	context->first_time= 0;
 
 	return ok;
 }




More information about the Bf-blender-cvs mailing list