[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