[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38627] branches/soc-2011-onion/source/ blender/editors/uvedit/uvedit_ops.c: smart stitch

Antony Riakiotakis kalast at gmail.com
Sat Jul 23 00:11:53 CEST 2011


Revision: 38627
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38627
Author:   psy-fi
Date:     2011-07-22 22:11:52 +0000 (Fri, 22 Jul 2011)
Log Message:
-----------
smart stitch
============================
- smart stitch: Hoping this is the last bug to squash in stitch operator (yeah, right :) ). Edge seaming would fail sometimes if uv was shared by different stitchable islands.

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-07-22 21:57:04 UTC (rev 38626)
+++ branches/soc-2011-onion/source/blender/editors/uvedit/uvedit_ops.c	2011-07-22 22:11:52 UTC (rev 38627)
@@ -1698,40 +1698,55 @@
 						}
 						if(element->flag & STITCH_STITCHABLE &&
 						element2->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];
 
+							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];
+
 							/* update uv's on the update stack */
 							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;
+							}
+							for(stack_iter = 0; stack_iter < stackSize2; stack_iter++){
+								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];
+							for(el_iter = vmap->vert[v1->tmp.l]; el_iter; el_iter = el_iter->next){
+								if(el_iter->flag & STITCH_STITCHABLE){
+									int index = el_iter - vmap->buf;
+									efa = el_iter->face;
 
-								if(state->snapIslands){
-									island_stitch_data[commonVertMaps[stack_iter]->island].addedForPreview = 1;
+									uv_average[index].count = uv_average[index1].count;
+									uv_average[index].uv[0] = uv_average[index1].uv[0];
+									uv_average[index].uv[1] = uv_average[index1].uv[1];
+
+									if(state->snapIslands){
+										island_stitch_data[el_iter->island].addedForPreview = 1;
+									}
+									else {
+										stitch_update_face_preview_index(efa, preview);
+									}
 								}
-								else {
-									stitch_update_face_preview_index(efa, preview);
-								}
 							}
-							for(stack_iter = 0; stack_iter < stackSize2; stack_iter++){
-								index2 = commonVertMaps2[stack_iter] - vmap->buf;
-								efa = commonVertMaps2[stack_iter]->face;
+							for(el_iter = vmap->vert[v2->tmp.l]; el_iter; el_iter = el_iter->next){
+								if(el_iter->flag & STITCH_STITCHABLE){
+									int index = el_iter - vmap->buf;
+									efa = el_iter->face;
 
-								commonVertMaps2[stack_iter]->flag |= STITCH_STITCHABLE;
+									uv_average[index].count = uv_average[index2].count;
+									uv_average[index].uv[0] = uv_average[index2].uv[0];
+									uv_average[index].uv[1] = uv_average[index2].uv[1];
 
-								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];
-								if(state->snapIslands){
-									island_stitch_data[commonVertMaps2[stack_iter]->island].addedForPreview = 1;
+									if(state->snapIslands){
+										island_stitch_data[el_iter->island].addedForPreview = 1;
+									}
+									else {
+										stitch_update_face_preview_index(efa, preview);
+									}
 								}
-								else {
-									stitch_update_face_preview_index(efa, preview);
-								}
 							}
 						}
 						MEM_freeN(commonVertMaps2);




More information about the Bf-blender-cvs mailing list