Revision: 37883
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37883
Author: psy-fi
Date: 2011-06-28 02:09:42 +0000 (Tue, 28 Jun 2011)
Log Message:
-----------
smart welding - bug squashed
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-28 01:08:06 UTC (rev 37882)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c
2011-06-28 02:09:42 UTC (rev 37883)
@@ -1283,6 +1283,9 @@
* this too many times on the fly */
commonVertMaps = MEM_mallocN(state->em->totface*sizeof(UvMapVert *),
"commonVertMaps");
+ for(mapVert = vmap->buf, i = 0; i < state->vmap->numOfUVs; mapVert++,
i++){
+ mapVert->flag = 0;
+ }
if(state->mode == VERT_STITCH){
/* Count number of points/faces so that we allocate appropriate
buffer */
for(editFace = state->em->faces.first ; editFace;
editFace=editFace->next){
@@ -1307,14 +1310,11 @@
/* First we need the UVMapVert
that corresponds to our uv */
for(;mv_iter; mv_iter =
mv_iter->next)
{
- UvMapVert *sep;
- if(mv_iter->separate)
- sep = mv_iter;
/* Here we assume face
does not use the same vertex twice. */
if(faceArray[mv_iter->f] == editFace)
{
/* Assign first
UV coincident */
- mapVert = sep;
+ mapVert =
mv_iter;
averageIndex =
mapVert - vmap->buf;
}
}
@@ -1381,11 +1381,11 @@
mv_iter->flag
|= STITCH_STITCHABLE;
mv_iter->flag
|= STITCH_PROCESSED;
- /* += because
of a complex scenario involving */
-
uv_average[averageIndex2].count = uv_average[averageIndex].count;
-
uv_average[averageIndex2].uv[0] = uv_average[averageIndex].uv[0];
-
uv_average[averageIndex2].uv[1] = uv_average[averageIndex].uv[1];
+
uv_average[averageIndex2].count += uv_average[averageIndex].count;
+
uv_average[averageIndex2].uv[0] += uv_average[averageIndex].uv[0];
+
uv_average[averageIndex2].uv[1] += uv_average[averageIndex].uv[1];
+
if(efa->tmp.l
== -1)
{
if(efa->v4)
@@ -1403,12 +1403,12 @@
}
}
}
-
- MEM_freeN(commonVertMaps);
-
} else {
}
+
+ MEM_freeN(commonVertMaps);
+
if(!final)
{
/* Initialize the preview buffers */
@@ -1433,19 +1433,16 @@
for(mapVert = vmap->buf, i = 0; i < state->vmap->numOfUVs;
mapVert++, i++){
if(mapVert->flag & STITCH_STITCHABLE){
float uv[2];
- int averageBufIndex;
efa = faceArray[mapVert->f];
mt = CustomData_em_get(&state->em->fdata,
efa->data, CD_MTFACE);
- averageBufIndex = mapVert - vmap->buf;
- uv[0] =
uv_average[averageBufIndex].uv[0]/uv_average[averageBufIndex].count;
- uv[1] =
uv_average[averageBufIndex].uv[1]/uv_average[averageBufIndex].count;
+ uv[0] = uv_average[i].uv[0]/uv_average[i].count;
+ uv[1] = uv_average[i].uv[1]/uv_average[i].count;
preview->previewPoints[bufferIterator*2] =
mt->uv[mapVert->tfindex][0];
preview->previewPoints[bufferIterator*2 + 1] =
mt->uv[mapVert->tfindex][1];
/* stitchable uv's will be green,
non-stitchable red */
preview->previewPointColors[bufferIterator] =
0x0000FF00;
-
if(efa->v4){
preview->previewQuads[efa->tmp.l +
2*mapVert->tfindex] = uv[0];
preview->previewQuads[efa->tmp.l +
2*mapVert->tfindex + 1] = uv[1];
@@ -1476,14 +1473,12 @@
for(mapVert = vmap->buf, i = 0; i < state->vmap->numOfUVs;
mapVert++, i++){
if(mapVert->flag & STITCH_STITCHABLE){
float uv[2];
- int averageBufIndex;
efa = faceArray[mapVert->f];
mt = CustomData_em_get(&state->em->fdata,
efa->data, CD_MTFACE);
- averageBufIndex = mapVert - vmap->buf;
- uv[0] =
uv_average[averageBufIndex].uv[0]/uv_average[averageBufIndex].count;
- uv[1] =
uv_average[averageBufIndex].uv[1]/uv_average[averageBufIndex].count;
+ uv[0] = uv_average[i].uv[0]/uv_average[i].count;
+ uv[1] = uv_average[i].uv[1]/uv_average[i].count;
mt->uv[mapVert->tfindex][0] = uv[0];
mt->uv[mapVert->tfindex][1] = uv[1];
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs