Revision: 37974
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37974
Author: psy-fi
Date: 2011-06-30 03:04:51 +0000 (Thu, 30 Jun 2011)
Log Message:
-----------
smart stitch - at last edge stitch working and is now default. Still getting
some mysterious crashes, will investigate, but at least behavior is as expected
for now
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
Modified: branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-06-30 03:04:39 UTC (rev 37973)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-06-30 03:04:51 UTC (rev 37974)
@@ -1401,7 +1401,8 @@
UvElement *el_iter,
*element2, *el_sep1, *el_sep2, *iter_sep1, *iter_sep2;
float uv1[2][2];
int nverts, stack_iter;
- int stackSize = 0;
+ int stackSize1 = 0;
+ int stackSize2 = 0;
int index1, index2;
UVVertAverage
uv_average_tmp[2];
/* need another one of
these for each of the 2 verts*/
@@ -1489,7 +1490,8 @@
}
else {
/* Stitchable case, do the necessary stuff */
-
UvElement *el_iter2;
+
UvElement *el_iter2, *tmp_iter;
+
element->flag |= STITCH_STITCHABLE;
element2->flag |= STITCH_STITCHABLE;
@@ -1503,21 +1505,23 @@
/* We need the UvMapVert of the other uv too. */
for(el_iter2 = vmap->vert[v2->tmp.l]; el_iter2; el_iter2 = el_iter2->next){
if(el_iter2->separate)
-
iter_sep2 = el_iter;
+
iter_sep2 = el_iter2;
if(el_iter2->face == efa)
break;
}
/* push coincident uv's to the stack to be updated */
-
/*for(el_iter2 = vmap->vert[v2->tmp.l]; el_iter2; el_iter2 = el_iter2->next){
-
if(el_iter2->separate && el_iter2 != iter_sep)
+
for(tmp_iter = iter_sep1; tmp_iter; tmp_iter = tmp_iter->next){
+
if(tmp_iter->separate && tmp_iter != iter_sep1)
break;
+
commonVertMaps[stackSize1++] = tmp_iter;
+
}
+
for(tmp_iter = iter_sep2; tmp_iter; tmp_iter = tmp_iter->next){
+
if(tmp_iter->separate && tmp_iter != iter_sep2)
+
break;
+
commonVertMaps2[stackSize2++] = tmp_iter;
+
}
-
}*/
-
commonVertMaps[stackSize] = el_iter;
-
commonVertMaps2[stackSize] = el_iter2;
-
-
stackSize++;
if(vertCheck)
{
/* convention is to use the vertex at the beginning of the edge. This
avoids ambiguity
@@ -1555,25 +1559,41 @@
}
}
- for(stack_iter
= 0; stack_iter < stackSize; stack_iter++)
- {
-
- index1
= commonVertMaps[stack_iter] - vmap->buf, index2 = commonVertMaps2[stack_iter]
- vmap->buf;
+ for(stack_iter
= 0; stack_iter < stackSize1; stack_iter++){
+ index1
= commonVertMaps[stack_iter] - vmap->buf,
efa =
commonVertMaps[stack_iter]->face;
commonVertMaps[stack_iter]->flag |= STITCH_STITCHABLE;
-
commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
uv_average[index1].count += uv_average_tmp[0].count;
uv_average[index1].uv[0] += uv_average_tmp[0].uv[0];
uv_average[index1].uv[1] += uv_average_tmp[0].uv[1];
+
+
preview->numOfOrig++;
+
+
if(efa->tmp.l == -1)
+ {
+
if(efa->v4)
+
{
+
efa->tmp.l = preview->numOfQuads*8;
+
preview->numOfQuads++;
+
} else {
+
efa->tmp.l = preview->numOfTris*6;
+
preview->numOfTris++;
+
}
+ }
+ }
+ for(stack_iter
= 0; stack_iter < stackSize2; stack_iter++){
+ index2
= commonVertMaps2[stack_iter] - vmap->buf;
+ efa =
commonVertMaps[stack_iter]->face;
+
+
commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
+
uv_average[index2].count += uv_average_tmp[1].count;
uv_average[index2].uv[0] += uv_average_tmp[1].uv[0];
uv_average[index2].uv[1] += uv_average_tmp[1].uv[1];
-
preview->numOfOrig++;
-
if(efa->tmp.l == -1)
{
if(efa->v4)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs
