Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-03-27 16:34:00 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-03-27 16:34:00 +0400
commitf71f09d71436c06c8d7cff0c578249a97b0ac03c (patch)
treec01d8ae1d7d7588610e00072a77309de35f2785a /source/blender/bmesh/operators/bmo_dupe.c
parent9c9745ef304f0a622de35e2446f062dc0e760a14 (diff)
Partial fix for bug 30695, "Array broke crease, weird visibility and slowdown"
* Array modifier creates BMesh from DM; add missing CD_CREASE layer for edge creases. * With a modifier stack like mirror+subsurf+array, face normals were wrong. Fix by removing CD_NORMAL layer from CCGDM output. Previously the elements in this layer were simply copied, so they did not reflect subdivision correctly. * Minor style fixes in bmo_dupe.c. Issues not yet addressed: * Subsurf's optimal draw setting for hiding subdivision edges is not respected by the array output. * Slowdown issue; array modifier is much slower than in 2.62.
Diffstat (limited to 'source/blender/bmesh/operators/bmo_dupe.c')
-rw-r--r--source/blender/bmesh/operators/bmo_dupe.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/source/blender/bmesh/operators/bmo_dupe.c b/source/blender/bmesh/operators/bmo_dupe.c
index 156725099a8..4c6ad7e268a 100644
--- a/source/blender/bmesh/operators/bmo_dupe.c
+++ b/source/blender/bmesh/operators/bmo_dupe.c
@@ -201,33 +201,34 @@ static void copy_mesh(BMOperator *op, BMesh *source, BMesh *target)
/* initialize pointer hashes */
vhash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh dupeops v");
ehash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh dupeops e");
-
+
+ /* duplicate flagged vertices */
for (v = BM_iter_new(&verts, source, BM_VERTS_OF_MESH, source); v; v = BM_iter_step(&verts)) {
if ( BMO_elem_flag_test(source, v, DUPE_INPUT) &&
!BMO_elem_flag_test(source, v, DUPE_DONE))
{
BMIter iter;
- int iso = 1;
+ int isolated = 1;
v2 = copy_vertex(source, v, target, vhash);
BM_ITER(f, &iter, source, BM_FACES_OF_VERT, v) {
if (BMO_elem_flag_test(source, f, DUPE_INPUT)) {
- iso = 0;
+ isolated = 0;
break;
}
}
- if (iso) {
+ if (isolated) {
BM_ITER(e, &iter, source, BM_EDGES_OF_VERT, v) {
if (BMO_elem_flag_test(source, e, DUPE_INPUT)) {
- iso = 0;
+ isolated = 0;
break;
}
}
}
- if (iso) {
+ if (isolated) {
BMO_slot_map_ptr_insert(source, op, "isovertmap", v, v2);
}