[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17373] branches/projection-paint/source/ blender/src/imagepaint.c: triangles were could not be painted onto at all ( serves me right for testing with subsurf)
Campbell Barton
ideasman42 at gmail.com
Sun Nov 9 05:08:11 CET 2008
Revision: 17373
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17373
Author: campbellbarton
Date: 2008-11-09 05:08:08 +0100 (Sun, 09 Nov 2008)
Log Message:
-----------
triangles were could not be painted onto at all (serves me right for testing with subsurf)
Modified Paths:
--------------
branches/projection-paint/source/blender/src/imagepaint.c
Modified: branches/projection-paint/source/blender/src/imagepaint.c
===================================================================
--- branches/projection-paint/source/blender/src/imagepaint.c 2008-11-09 03:34:22 UTC (rev 17372)
+++ branches/projection-paint/source/blender/src/imagepaint.c 2008-11-09 04:08:08 UTC (rev 17373)
@@ -1335,7 +1335,7 @@
int i, j;
/* vars for getting uvspace bounds */
- float bucket_bounds_uv[2] [4][2]; /* bucket bounds in UV space so we can init pixels only for this face, */
+ float bucket_bounds_uv[4][2]; /* bucket bounds in UV space so we can init pixels only for this face, */
float w[3];
int i1,i2,i3;
@@ -1345,12 +1345,13 @@
ProjectScanline *sc;
int totscanlines; /* can only be 1 or 2, oh well */
#endif
+
i = mf->v4 ? 1:0;
do {
if (i==1) {
+ i1=0; i2=2; i3=3;
+ } else {
i1=0; i2=1; i3=2;
- } else {
- i1=0; i2=2; i3=3;
}
uv1co = tf->uv[i1];
@@ -1371,32 +1372,32 @@
uv[0] = bucket_bounds[PROJ_BUCKET_RIGHT];
uv[1] = bucket_bounds[PROJ_BUCKET_BOTTOM];
BaryCentricWeights2f(v1coSS, v2coSS, v3coSS, uv, w);
- bucket_bounds_uv[i][0][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
- bucket_bounds_uv[i][0][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
+ bucket_bounds_uv[0][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
+ bucket_bounds_uv[0][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
//uv[0] = bucket_bounds[PROJ_BUCKET_RIGHT]; // set above
uv[1] = bucket_bounds[PROJ_BUCKET_TOP];
BaryCentricWeights2f(v1coSS, v2coSS, v3coSS, uv, w);
- bucket_bounds_uv[i][1][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
- bucket_bounds_uv[i][1][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
+ bucket_bounds_uv[1][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
+ bucket_bounds_uv[1][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
uv[0] = bucket_bounds[PROJ_BUCKET_LEFT];
//uv[1] = bucket_bounds[PROJ_BUCKET_TOP]; // set above
BaryCentricWeights2f(v1coSS, v2coSS, v3coSS, uv, w);
- bucket_bounds_uv[i][2][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
- bucket_bounds_uv[i][2][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
+ bucket_bounds_uv[2][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
+ bucket_bounds_uv[2][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
//uv[0] = bucket_bounds[PROJ_BUCKET_LEFT]; // set above
uv[1] = bucket_bounds[PROJ_BUCKET_BOTTOM];
BaryCentricWeights2f(v1coSS, v2coSS, v3coSS, uv, w);
- bucket_bounds_uv[i][3][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
- bucket_bounds_uv[i][3][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
+ bucket_bounds_uv[3][0] = uv1co[0]*w[0] + uv2co[0]*w[1] + uv3co[0]*w[2];
+ bucket_bounds_uv[3][1] = uv1co[1]*w[0] + uv2co[1]*w[1] + uv3co[1]*w[2];
//printf("Bounds: %f | %f | %f | %f\n", bucket_bounds[0], bucket_bounds[1], bucket_bounds[2], bucket_bounds[3]);
if ( uv_image_rect(uv1co, uv2co, uv3co, NULL, min_px_tf, max_px_tf, ibuf->x, ibuf->y, 0) &&
- uv_image_rect(bucket_bounds_uv[i][0], bucket_bounds_uv[i][1], bucket_bounds_uv[i][2], bucket_bounds_uv[i][3], min_px_bucket[i], max_px_bucket[i], ibuf->x, ibuf->y, 1) )
+ uv_image_rect(bucket_bounds_uv[0], bucket_bounds_uv[1], bucket_bounds_uv[2], bucket_bounds_uv[3], min_px_bucket[i], max_px_bucket[i], ibuf->x, ibuf->y, 1) )
{
uvpixel_rect_intersect(min_px, max_px, min_px_bucket[i], max_px_bucket[i], min_px_tf, max_px_tf);
@@ -1410,7 +1411,7 @@
uv[0] = (((float)x)+0.5) / (float)ibuf->x;
/* test we're inside uvspace bucket and triangle bounds */
- if ( IsectPQ2Df(uv, bucket_bounds_uv[i][0], bucket_bounds_uv[i][1], bucket_bounds_uv[i][2], bucket_bounds_uv[i][3]) &&
+ if ( IsectPQ2Df(uv, bucket_bounds_uv[0], bucket_bounds_uv[1], bucket_bounds_uv[2], bucket_bounds_uv[3]) &&
IsectPT2Df(uv, uv1co, uv2co, uv3co) ) {
if (ps->projectIsOrtho) {
More information about the Bf-blender-cvs
mailing list