[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34742] trunk/blender/source/blender: fix [#25994] Meshes with no vertices gets NaN location on setting origin to geometry

Campbell Barton ideasman42 at gmail.com
Wed Feb 9 16:32:40 CET 2011


Revision: 34742
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34742
Author:   campbellbarton
Date:     2011-02-09 15:32:39 +0000 (Wed, 09 Feb 2011)
Log Message:
-----------
fix [#25994] Meshes with no vertices gets NaN location on setting origin to geometry

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/editors/object/object_transform.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2011-02-09 15:13:20 UTC (rev 34741)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2011-02-09 15:32:39 UTC (rev 34742)
@@ -1556,7 +1556,10 @@
 	for(mvert= me->mvert; i--; mvert++) {
 		add_v3_v3(cent, mvert->co);
 	}
-	mul_v3_fl(cent, 1.0f/(float)me->totvert);
+	/* otherwise we get NAN for 0 verts */
+	if(me->totvert) {
+		mul_v3_fl(cent, 1.0f/(float)me->totvert);
+	}
 
 	return (me->totvert != 0);
 }

Modified: trunk/blender/source/blender/editors/object/object_transform.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_transform.c	2011-02-09 15:13:20 UTC (rev 34741)
+++ trunk/blender/source/blender/editors/object/object_transform.c	2011-02-09 15:32:39 UTC (rev 34742)
@@ -744,7 +744,9 @@
 					total++;
 					add_v3_v3(cent, eve->co);
 				}
-				mul_v3_fl(cent, 1.0f/(float)total);
+				if(total) {
+					mul_v3_fl(cent, 1.0f/(float)total);
+				}
 			}
 			else {
 				for(eve= em->verts.first; eve; eve= eve->next) {
@@ -753,13 +755,15 @@
 				mid_v3_v3v3(cent, min, max);
 			}
 
-			for(eve= em->verts.first; eve; eve= eve->next) {
-				sub_v3_v3(eve->co, cent);
+			if(!is_zero_v3(cent)) {
+				for(eve= em->verts.first; eve; eve= eve->next) {
+					sub_v3_v3(eve->co, cent);
+				}
+
+				recalc_editnormals(em);
+				tot_change++;
+				DAG_id_tag_update(&obedit->id, OB_RECALC_DATA);
 			}
-
-			recalc_editnormals(em);
-			tot_change++;
-			DAG_id_tag_update(&obedit->id, OB_RECALC_DATA);
 			BKE_mesh_end_editmesh(me, em);
 		}
 	}




More information about the Bf-blender-cvs mailing list