[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39275] branches/soc-2011-tomato/source/ blender/editors/space_clip/clip_draw.c: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Wed Aug 10 23:14:12 CEST 2011


Revision: 39275
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39275
Author:   nazgul
Date:     2011-08-10 21:14:12 +0000 (Wed, 10 Aug 2011)
Log Message:
-----------
Camera tracking integration
===========================

Make calibration grid "outer" boundaries always be inside frame.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-08-10 20:37:57 UTC (rev 39274)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-08-10 21:14:12 UTC (rev 39275)
@@ -937,9 +937,9 @@
 static void draw_distortion(SpaceClip *sc, ARegion *ar, MovieClip *clip, int width, int height, float zoomx, float zoomy)
 {
 	float x, y;
-	const int n= 9;
-	int i, j;
-	float pos[2], grid[10][10][2];
+	const int n= 10;
+	int i, j, a;
+	float pos[2], tpos[2], grid[11][11][2];
 	float dx= (float)width/n, dy= (float)height/n;
 	MovieTracking *tracking= &clip->tracking;
 
@@ -959,16 +959,34 @@
 
 	/* grid */
 	if(sc->flag&SC_SHOW_GRID) {
-		float min[2], max[2], tpos[2];
+		float val[4][2], idx[4][2];
+		float min[2], max[2];
 
-		INIT_MINMAX2(min, max);
+		for(a=0; a<4; a++) {
+			if(a<2) val[a][a%2]= FLT_MAX;
+			else val[a][a%2]= -FLT_MAX;
+		}
 
 		zero_v2(pos);
 		for(i= 0; i<=n; i++) {
 			for(j= 0; j<=n; j++) {
-				BKE_tracking_apply_intrinsics(tracking, pos, tpos);
-				DO_MINMAX2(tpos, min, max);
+				if(i==0 || j==0 || i==n || j==n) {
+					BKE_tracking_invert_intrinsics(tracking, pos, tpos);
 
+					for(a=0; a<4; a++) {
+						int ok;
+
+						if(a<2) ok= tpos[a%2] < val[a][a%2];
+						else ok= tpos[a%2] > val[a][a%2];
+
+						if(ok) {
+							copy_v2_v2(val[a], tpos);
+							idx[a][0]= j;
+							idx[a][1]= i;
+						}
+					}
+				}
+
 				pos[0]+= dx;
 			}
 
@@ -976,6 +994,17 @@
 			pos[1]+= dy;
 		}
 
+		INIT_MINMAX2(min, max);
+
+		for(a= 0; a<4; a++) {
+			pos[0]= idx[a][0]*dx;
+			pos[1]= idx[a][1]*dy;
+
+			BKE_tracking_apply_intrinsics(tracking, pos, tpos);
+
+			DO_MINMAX2(tpos, min, max);
+		}
+
 		copy_v2_v2(pos, min);
 		dx= (max[0]-min[0])/n;
 		dy= (max[1]-min[1])/n;
@@ -1029,7 +1058,7 @@
 					if(stroke->flag&GP_STROKE_2DSPACE && stroke->totpoints>1) {
 						glBegin(GL_LINE_STRIP);
 							for(i= 0; i<stroke->totpoints-1; i++) {
-								float npos[2], dpos[2], tpos[2], len;
+								float npos[2], dpos[2], len;
 								int steps;
 
 								pos[0]= stroke->points[i].x*width;




More information about the Bf-blender-cvs mailing list