[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14203] trunk/blender/source/blender/ blenkernel/intern/modifier.c: added camera shiftx/ y for the UVProject modifier

Campbell Barton ideasman42 at gmail.com
Fri Mar 21 22:03:33 CET 2008


Revision: 14203
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14203
Author:   campbellbarton
Date:     2008-03-21 22:03:31 +0100 (Fri, 21 Mar 2008)

Log Message:
-----------
added camera shiftx/y for the UVProject modifier

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/modifier.c

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-03-21 17:37:24 UTC (rev 14202)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-03-21 21:03:31 UTC (rev 14203)
@@ -3218,12 +3218,12 @@
 	for(i = 0; i < num_projectors; ++i) {
 		float tmpmat[4][4];
 		float offsetmat[4][4];
-
+		Camera *cam = NULL;
 		/* calculate projection matrix */
 		Mat4Invert(projectors[i].projmat, projectors[i].ob->obmat);
 
 		if(projectors[i].ob->type == OB_CAMERA) {
-			Camera *cam = (Camera *)projectors[i].ob->data;
+			cam = (Camera *)projectors[i].ob->data;
 			if(cam->type == CAM_PERSP) {
 				float perspmat[4][4];
 				float xmax; 
@@ -3273,6 +3273,20 @@
 		Mat4One(offsetmat);
 		Mat4MulFloat3(offsetmat[0], 0.5);
 		offsetmat[3][0] = offsetmat[3][1] = offsetmat[3][2] = 0.5;
+		
+		if (cam) {
+			if (umd->aspectx == umd->aspecty) { 
+				offsetmat[3][0] -= cam->shiftx;
+				offsetmat[3][1] -= cam->shifty;
+			} else if (umd->aspectx < umd->aspecty)  {
+				offsetmat[3][0] -=(cam->shiftx * umd->aspecty/umd->aspectx);
+				offsetmat[3][1] -= cam->shifty;
+			} else {
+				offsetmat[3][0] -= cam->shiftx;
+				offsetmat[3][1] -=(cam->shifty * umd->aspectx/umd->aspecty);
+			}
+		}
+		
 		Mat4MulMat4(projectors[i].projmat, tmpmat, offsetmat);
 
 		/* calculate worldspace projector normal (for best projector test) */





More information about the Bf-blender-cvs mailing list