[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