Fix #35671: automatic armature weights assignment crashed with an empty mesh.
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Sat, 8 Jun 2013 17:56:45 +0000 (17:56 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Sat, 8 Jun 2013 17:56:45 +0000 (17:56 +0000)
source/blender/editors/armature/meshlaplacian.c

index 3ac514f14650069c0877a3d437664bef4ba60f12..25a7eedfb8ce25f0c10e4adcdd9cbd8d97e3f7bc 100644 (file)
@@ -659,6 +659,17 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource,
 
        *err_str = NULL;
 
+       /* bone heat needs triangulated faces */
+       BKE_mesh_tessface_ensure(me);
+
+       for (tottri = 0, a = 0, mf = me->mface; a < me->totface; mf++, a++) {
+               tottri++;
+               if (mf->v4) tottri++;
+       }
+
+       if (tottri == 0)
+               return;
+
        /* count triangles and create mask */
        if ((use_face_sel = ((me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0)) ||
            (use_vert_sel = ((me->editflag & ME_EDIT_PAINT_VERT_SEL) != 0)))
@@ -686,14 +697,6 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource,
                }
        }
 
-       /* bone heat needs triangulated faces */
-       BKE_mesh_tessface_ensure(me);
-
-       for (tottri = 0, a = 0, mf = me->mface; a < me->totface; mf++, a++) {
-               tottri++;
-               if (mf->v4) tottri++;
-       }
-
        /* create laplacian */
        sys = laplacian_system_construct_begin(me->totvert, tottri, 1);