[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45970] trunk/blender/source/blender/bmesh /operators/bmo_inset.c: bmesh: inset tool depth used bad normals for edge verts.
Campbell Barton
ideasman42 at gmail.com
Thu Apr 26 05:40:15 CEST 2012
Revision: 45970
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45970
Author: campbellbarton
Date: 2012-04-26 03:40:10 +0000 (Thu, 26 Apr 2012)
Log Message:
-----------
bmesh: inset tool depth used bad normals for edge verts.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/operators/bmo_inset.c
Modified: trunk/blender/source/blender/bmesh/operators/bmo_inset.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_inset.c 2012-04-26 03:11:15 UTC (rev 45969)
+++ trunk/blender/source/blender/bmesh/operators/bmo_inset.c 2012-04-26 03:40:10 UTC (rev 45970)
@@ -495,8 +495,6 @@
BM_face_copy_shared(bm, f);
}
- MEM_freeN(edge_info);
-
/* we could flag new edges/verts too, is it useful? */
BMO_slot_buffer_from_enabled_flag(bm, op, "faceout", BM_FACE, ELE_NEW);
@@ -505,6 +503,28 @@
float (*varr_co)[3];
BMOIter oiter;
+ /* we need to re-calculate tagged normals, but for this purpose we can copy tagged verts from the
+ * faces they inset from, */
+ for (i = 0, es = edge_info; i < edge_info_len; i++, es++) {
+ zero_v3(es->e_new->v1->no);
+ zero_v3(es->e_new->v2->no);
+ }
+ for (i = 0, es = edge_info; i < edge_info_len; i++, es++) {
+ float *no = es->l->f->no;
+ add_v3_v3(es->e_new->v1->no, no);
+ add_v3_v3(es->e_new->v2->no, no);
+ }
+ for (i = 0, es = edge_info; i < edge_info_len; i++, es++) {
+ /* annoying, avoid normalizing twice */
+ if (len_squared_v3(es->e_new->v1->no) != 1.0f) {
+ normalize_v3(es->e_new->v1->no);
+ }
+ if (len_squared_v3(es->e_new->v2->no) != 1.0f) {
+ normalize_v3(es->e_new->v2->no);
+ }
+ }
+ /* done correcting edge verts normals */
+
/* untag verts */
BM_mesh_elem_hflag_disable_all(bm, BM_VERT, BM_ELEM_TAG, FALSE);
@@ -537,4 +557,6 @@
}
MEM_freeN(varr_co);
}
+
+ MEM_freeN(edge_info);
}
More information about the Bf-blender-cvs
mailing list