[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45899] trunk/blender/source/blender/bmesh : fix own error with subdivision (broke icosphere), also noticed icosphere vanished at subd-5 which didnt happen before bmesh.

Campbell Barton ideasman42 at gmail.com
Tue Apr 24 01:01:03 CEST 2012


Revision: 45899
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45899
Author:   campbellbarton
Date:     2012-04-23 23:01:03 +0000 (Mon, 23 Apr 2012)
Log Message:
-----------
fix own error with subdivision (broke icosphere), also noticed icosphere vanished at subd-5 which didnt happen before bmesh.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-04-23 22:56:34 UTC (rev 45898)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2012-04-23 23:01:03 UTC (rev 45899)
@@ -484,12 +484,14 @@
 BLI_INLINE void bmesh_quick_edgedraw_flag(MEdge *med, BMEdge *e)
 {
 	/* this is a cheap way to set the edge draw, its not precise and will
-	 * pick the first 2 faces an edge uses */
+	 * pick the first 2 faces an edge uses.
+	 * The dot comparison is a little arbitrary, but set so that a 5 subd
+	 * IcoSphere won't vanish but subd 6 will (as with pre-bmesh blender) */
 
 
 	if ( /* (med->flag & ME_EDGEDRAW) && */ /* assume to be true */
 	     (e->l && (e->l != e->l->radial_next)) &&
-	     (dot_v3v3(e->l->f->no, e->l->radial_next->f->no) > 0.998f))
+	     (dot_v3v3(e->l->f->no, e->l->radial_next->f->no) > 0.9995f))
 	{
 		med->flag &= ~ME_EDGEDRAW;
 	}

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-23 22:56:34 UTC (rev 45898)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-23 23:01:03 UTC (rev 45899)
@@ -109,7 +109,11 @@
 	copy_v3_v3(co, v->co);
 	copy_v3_v3(prev_co, co);
 
-	if (params->use_smooth) {
+	if (UNLIKELY(params->use_sphere)) { /* subdivide sphere */
+		normalize_v3(co);
+		mul_v3_fl(co, params->smooth);
+	}
+	else if (params->use_smooth) {
 		/* we calculate an offset vector vec1[], to be added to *co */
 		float len, nor[3], nor1[3], nor2[3], smooth = params->smooth;
 
@@ -134,10 +138,6 @@
 
 		add_v3_v3(co, tvec);
 	}
-	else if (params->use_sphere) { /* subdivide sphere */
-		normalize_v3(co);
-		mul_v3_fl(co, params->smooth);
-	}
 
 	if (params->use_fractal) {
 		float len = len_v3v3(vsta->co, vend->co);




More information about the Bf-blender-cvs mailing list