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) {
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs