Bugfix #3153
Subdivide didn't correctly calculate new UV or vertexcolor yet.
This commit is contained in:
@@ -1373,9 +1373,10 @@ static void set_uv_vcol(EditFace *efa, float *co, float *uv, char *col)
|
|||||||
/* interpolate */
|
/* interpolate */
|
||||||
l= 1.0+u+v;
|
l= 1.0+u+v;
|
||||||
/* outside triangle? */
|
/* outside triangle? */
|
||||||
// printf("l: %f\n",l);
|
/* printf("l: %f u %f v %f\n",l,u,v); */
|
||||||
if(efa->v4 && l >= 0.5) {
|
|
||||||
// printf("outside\n");
|
if(efa->v4 && (v>0.001f)) { /* only check for positive v is OK, that's the diagonal */
|
||||||
|
/* printf("outside\n"); */
|
||||||
/* do it all over, but now with vertex 2 replaced with 4 */
|
/* do it all over, but now with vertex 2 replaced with 4 */
|
||||||
|
|
||||||
/* calculate u and v */
|
/* calculate u and v */
|
||||||
@@ -1404,10 +1405,9 @@ static void set_uv_vcol(EditFace *efa, float *co, float *uv, char *col)
|
|||||||
cp1= (char*)&(efa->tf.col[3]);
|
cp1= (char*)&(efa->tf.col[3]);
|
||||||
cp2= (char*)&(efa->tf.col[2]);
|
cp2= (char*)&(efa->tf.col[2]);
|
||||||
|
|
||||||
|
|
||||||
for(i=0; i<4; i++) {
|
for(i=0; i<4; i++) {
|
||||||
fac= (int)(l*cp2[i] - u*cp0[i] - v*cp1[i]);
|
fac= (int)(l*cp2[i] - u*cp0[i] - v*cp1[i]);
|
||||||
col[i]= CLAMPIS(fac, 0, 255);
|
col[i]= CLAMPIS(fac, 0, 255);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// printf("inside\n");
|
// printf("inside\n");
|
||||||
@@ -1420,8 +1420,8 @@ static void set_uv_vcol(EditFace *efa, float *co, float *uv, char *col)
|
|||||||
cp2= (char*)&(efa->tf.col[2]);
|
cp2= (char*)&(efa->tf.col[2]);
|
||||||
|
|
||||||
for(i=0; i<4; i++) {
|
for(i=0; i<4; i++) {
|
||||||
fac= (int)(l*cp2[i] - u*cp0[i] - v*cp1[i]);
|
fac= (int)(l*cp2[i] - u*cp0[i] - v*cp1[i]);
|
||||||
col[i]= CLAMPIS(fac, 0, 255);
|
col[i]= CLAMPIS(fac, 0, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user