[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41056] branches/soc-2011-onion-uv-tools/ source/blender/editors/uvedit/uvedit_ops.c: more edge stitch stuff, still no big function update

Antony Riakiotakis kalast at gmail.com
Sun Oct 16 16:55:19 CEST 2011


Revision: 41056
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41056
Author:   psy-fi
Date:     2011-10-16 14:55:18 +0000 (Sun, 16 Oct 2011)
Log Message:
-----------
more edge stitch stuff, still no big function update

Modified Paths:
--------------
    branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c

Modified: branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c	2011-10-16 14:45:38 UTC (rev 41055)
+++ branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c	2011-10-16 14:55:18 UTC (rev 41056)
@@ -2223,12 +2223,6 @@
 					}
 				}
 			}else{
-				int uniqueIndex;
-				/* if no limit exists all uvs are stitchable */
-				stitch_set_face_preview_buffer_position(element_iter->face, preview);
-
-				uniqueIndex = state->map[element_iter - state->elementMap->buf];
-
 				if(!(element_iter->flag & STITCH_STITCHABLE)){
 					element_iter->flag |= STITCH_STITCHABLE;
 					preview->numOfStitchable++;
@@ -2293,13 +2287,62 @@
 	}else{
 		/* Uv Edge case */
 		for(i = 0; i < state->selection_size; i++){
-			char stitchable1, stitchable2;
 			UvEdge *edge = (UvEdge *)state->selection_stack[i];
 
 			if(edge->flag & STITCH_BOUNDARY){
 				UvElement *element1 = state->uvs[edge->uv1];
 				UvElement *element2 = state->uvs[edge->uv2];
 
+				UvElement *element_iter1 = state->elementMap->vert[(*(&element1->face->v1 + element1->tfindex))->tmp.l];
+				UvElement *element_iter2 = state->elementMap->vert[(*(&element2->face->v1 + element2->tfindex))->tmp.l];
+
+				for(;element_iter1; element_iter1 = element_iter1->next){
+					if(element_iter1->separate){
+						for(;element_iter2; element_iter2 = element_iter2->next){
+							if(element_iter2->separate){
+								int uniqueIndex1;
+								int uniqueIndex2;
+								UvEdge tmp_edge, *edge;
+
+								if((element_iter1 == element1) && (element_iter2 == element2))
+									continue;
+
+								uniqueIndex1 = element_iter1 - state->elementMap->buf;
+								uniqueIndex2 = element_iter2 - state->elementMap->buf;
+
+								if(uniqueIndex2 > uniqueIndex1){
+									tmp_edge.uv1 = uniqueIndex1;
+									tmp_edge.uv2 = uniqueIndex2;
+								}else{
+									tmp_edge.uv1 = uniqueIndex2;
+									tmp_edge.uv2 = uniqueIndex1;
+								}
+
+								edge = (UvEdge *)BLI_ghash_lookup(state->edgeHash, &tmp_edge);
+
+								if(edge && (edge->flag & STITCH_BOUNDARY)){
+									if(state->use_limit){
+										MTFace *mtface_orig1 = CustomData_em_get(&state->em->fdata, element1->face->data, CD_MTFACE);
+										MTFace *mtface_iter1 = CustomData_em_get(&state->em->fdata, element_iter1->face->data, CD_MTFACE);
+
+										MTFace *mtface_orig2 = CustomData_em_get(&state->em->fdata, element1->face->data, CD_MTFACE);
+										MTFace *mtface_iter2 = CustomData_em_get(&state->em->fdata, element_iter1->face->data, CD_MTFACE);
+
+										if(fabs(mtface_orig1->uv[element1->tfindex][0] - mtface_iter1->uv[element_iter1->tfindex][0]) < state->limitDist
+										&& fabs(mtface_orig1->uv[element1->tfindex][1] - mtface_iter1->uv[element_iter1->tfindex][1]) < state->limitDist
+										&& fabs(mtface_orig2->uv[element2->tfindex][0] - mtface_iter2->uv[element_iter2->tfindex][0]) < state->limitDist
+										&& fabs(mtface_orig2->uv[element2->tfindex][1] - mtface_iter2->uv[element_iter2->tfindex][1]) < state->limitDist){
+											//success
+										}
+									}else{
+										//success
+									}
+								}
+							}
+						}
+					}
+				}
+
 				stitch_setup_face_preview_for_uv_group(element1, state, island_stitch_data);
 				stitch_setup_face_preview_for_uv_group(element2, state, island_stitch_data);
 
@@ -2469,8 +2512,6 @@
 				/* median result */
 				averageUvPosition[i].uv[0] /= averageUvPosition[i].count;
 				averageUvPosition[i].uv[1] /= averageUvPosition[i].count;
-
-				printf("number of stitchable %d\n", averageUvPosition[i].count);
 			}
 		}
 		/* Second pass, propagate changes to stitchable uvs */
@@ -2949,6 +2990,11 @@
 					for(i = 0; i < stitch_state->total_edges; i++){
 						UvEdge *edge = stitch_state->edges + i;
 
+						for(i = 0; i < stitch_state->selection_size; i++){
+							if(determine_uv_stitchability((UvElement *)stitch_state->selection_stack[i], stitch_state)){
+
+							}
+						}
 						if(stitch_state->uvs[edge->uv1]->flag & STITCH_SELECTED && stitch_state->uvs[edge->uv2]->flag & STITCH_SELECTED){
 							edge->flag |= STITCH_SELECTED;
 							new_selection[total_edges_selected++] = edge;
@@ -3034,15 +3080,15 @@
 						UvElement *element1 = get_uv_element(stitch_state->elementMap, hit.efa, hit.edge);
 						UvElement *element2 = get_uv_element(stitch_state->elementMap, hit.efa, (hit.edge+1)%nverts);
 
-						int uniqueIndex = stitch_state->map[element1 - stitch_state->elementMap->buf];
+						int uniqueIndex1 = stitch_state->map[element1 - stitch_state->elementMap->buf];
 						int uniqueIndex2 = stitch_state->map[element2 - stitch_state->elementMap->buf];
 
-						if(uniqueIndex2 > uniqueIndex){
-							tmp_edge.uv1 = uniqueIndex;
+						if(uniqueIndex2 > uniqueIndex1){
+							tmp_edge.uv1 = uniqueIndex1;
 							tmp_edge.uv2 = uniqueIndex2;
 						}else{
 							tmp_edge.uv1 = uniqueIndex2;
-							tmp_edge.uv2 = uniqueIndex;
+							tmp_edge.uv2 = uniqueIndex1;
 						}
 
 						edge = (UvEdge *)BLI_ghash_lookup(stitch_state->edgeHash, &tmp_edge);




More information about the Bf-blender-cvs mailing list