[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36381] branches/bmesh/blender/source/ blender: =bmesh= made connected PET work better
Joseph Eagar
joeedh at gmail.com
Fri Apr 29 19:32:42 CEST 2011
Revision: 36381
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36381
Author: joeedh
Date: 2011-04-29 17:32:42 +0000 (Fri, 29 Apr 2011)
Log Message:
-----------
=bmesh= made connected PET work better
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2011-04-29 06:59:18 UTC (rev 36380)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2011-04-29 17:32:42 UTC (rev 36381)
@@ -1042,7 +1042,7 @@
int v1, v2;
v1 = mloop[b].v;
- v2 = mloop[(b+1)%mpoly->loopstart].v;
+ v2 = mloop[(b+1)%mpoly->totloop].v;
mloop[b].e = GET_INT_FROM_POINTER(BLI_edgehash_lookup(hash, v1, v2));
}
}
Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c 2011-04-29 06:59:18 UTC (rev 36380)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c 2011-04-29 17:32:42 UTC (rev 36381)
@@ -145,7 +145,8 @@
for (block=me->key->block.first, j=0; block; block=block->next, j++) {
float *co = CustomData_bmesh_get_n(&bm->vdata, v->head.data,
CD_SHAPEKEY, j);
- VECCOPY(co, ((float*)block->data)+3*i);
+ if (co)
+ VECCOPY(co, ((float*)block->data)+3*i);
}
}
}
Modified: branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c 2011-04-29 06:59:18 UTC (rev 36380)
+++ branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c 2011-04-29 17:32:42 UTC (rev 36381)
@@ -1832,7 +1832,7 @@
SmallHash svisit, *visit=&svisit;
BMVert *v;
BMIter viter;
- int i;
+ int i, start;
i = 0;
BM_ITER(v, &viter, em->bm, BM_VERTS_OF_MESH, NULL) {
@@ -1841,66 +1841,61 @@
i++;
}
+ BLI_smallhash_init(visit);
+
BM_ITER(v, &viter, em->bm, BM_VERTS_OF_MESH, NULL) {
- BMVert *v2;
- int start;
-
if (BM_TestHFlag(v, BM_SELECT)==0 || BM_TestHFlag(v, BM_HIDDEN))
continue;
- BLI_smallhash_init(visit);
-
- BLI_array_empty(queue);
+
+ BLI_smallhash_insert(visit, (uintptr_t)v, NULL);
BLI_array_append(queue, v);
BLI_array_append(dqueue, 0.0f);
dists[BMINDEX_GET(v)] = 0.0f;
+ }
+
+ start = 0;
+ while (start < BLI_array_count(queue)) {
+ BMIter eiter;
+ BMEdge *e;
+ BMVert *v3, *v2;
+ float d, vec[3];
- BLI_smallhash_insert(visit, (uintptr_t)v, NULL);
- start = 0;
+ v2 = queue[start];
+ d = dqueue[start];
- while (start < BLI_array_count(queue)) {
- BMIter eiter;
- BMEdge *e;
- BMVert *v3;
- float d, d2, vec[3];
+ BM_ITER(e, &eiter, em->bm, BM_EDGES_OF_VERT, v2) {
+ float d2;
+ v3 = BM_OtherEdgeVert(e, v2);
- v2 = queue[start];
- d = dqueue[start];
+ if (BM_TestHFlag(v3, BM_SELECT) || BM_TestHFlag(v3, BM_HIDDEN))
+ continue;
- BM_ITER(e, &eiter, em->bm, BM_EDGES_OF_VERT, v2) {
- float d2;
- v3 = BM_OtherEdgeVert(e, v2);
-
- if (BM_TestHFlag(v3, BM_SELECT) || BM_TestHFlag(v3, BM_HIDDEN))
- continue;
-
- sub_v3_v3v3(vec, v2->co, v3->co);
- mul_m3_v3(mtx, vec);
-
- d2 = d + len_v3(vec);
-
- if (BLI_smallhash_haskey(visit, (uintptr_t)v3))
- continue;
-
- if (dists[BMINDEX_GET(v3)] != FLT_MAX)
- dists[BMINDEX_GET(v3)] += d2;
- else
- dists[BMINDEX_GET(v3)] = d2;
-
- tots[BMINDEX_GET(v3)]++;
-
- if (!BLI_smallhash_haskey(visit, (uintptr_t)v3))
- BLI_smallhash_insert(visit, (uintptr_t)v3, NULL);
-
- BLI_array_append(queue, v3);
- BLI_array_append(dqueue, d2);
- }
+ sub_v3_v3v3(vec, v2->co, v3->co);
+ mul_m3_v3(mtx, vec);
- start++;
- }
+ d2 = d + len_v3(vec);
+
+ if (dists[BMINDEX_GET(v3)] != FLT_MAX)
+ dists[BMINDEX_GET(v3)] = MIN2(d2, dists[BMINDEX_GET(v3)]);
+ else
+ dists[BMINDEX_GET(v3)] = d2;
+
+ tots[BMINDEX_GET(v3)] = 1;
- BLI_smallhash_release(visit);
+ if (BLI_smallhash_haskey(visit, (uintptr_t)v3))
+ continue;
+
+ BLI_smallhash_insert(visit, (uintptr_t)v3, NULL);
+
+ BLI_array_append(queue, v3);
+ BLI_array_append(dqueue, d2);
+ }
+
+ start++;
}
+
+ BLI_smallhash_release(visit);
for (i=0; i<em->bm->totvert; i++) {
if (tots[i])
More information about the Bf-blender-cvs
mailing list