[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13458] trunk/blender/source/blender/ blenkernel:
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Jan 29 20:49:03 CET 2008
Revision: 13458
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13458
Author: blendix
Date: 2008-01-29 20:49:03 +0100 (Tue, 29 Jan 2008)
Log Message:
-----------
Fix for bug #7965:
Array modifier could generate edges with twice the same vertex, fix
provided by Ken, thanks.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_mesh.h
trunk/blender/source/blender/blenkernel/intern/mesh.c
trunk/blender/source/blender/blenkernel/intern/modifier.c
Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h 2008-01-29 19:25:10 UTC (rev 13457)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h 2008-01-29 19:49:03 UTC (rev 13458)
@@ -64,7 +64,7 @@
void tex_space_mesh(struct Mesh *me);
float *get_mesh_orco_verts(struct Object *ob);
void transform_mesh_orco_verts(struct Mesh *me, float (*orco)[3], int totvert, int invert);
-void test_index_face(struct MFace *mface, struct CustomData *mfdata, int mfindex, int nr);
+int test_index_face(struct MFace *mface, struct CustomData *mfdata, int mfindex, int nr);
struct Mesh *get_mesh(struct Object *ob);
void set_mesh(struct Object *ob, struct Mesh *me);
void mball_to_mesh(struct ListBase *lb, struct Mesh *me);
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2008-01-29 19:25:10 UTC (rev 13457)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2008-01-29 19:49:03 UTC (rev 13458)
@@ -530,7 +530,7 @@
/* rotates the vertices of a face in case v[2] or v[3] (vertex index) is = 0.
this is necessary to make the if(mface->v4) check for quads work */
-void test_index_face(MFace *mface, CustomData *fdata, int mfindex, int nr)
+int test_index_face(MFace *mface, CustomData *fdata, int mfindex, int nr)
{
/* first test if the face is legal */
if(mface->v3 && mface->v3==mface->v4) {
@@ -572,6 +572,8 @@
CustomData_swap(fdata, mfindex, corner_indices);
}
}
+
+ return nr;
}
Mesh *get_mesh(Object *ob)
Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c 2008-01-29 19:25:10 UTC (rev 13457)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c 2008-01-29 19:49:03 UTC (rev 13458)
@@ -937,6 +937,8 @@
count - 1);
}
+ if(med.v1 == med.v2) continue;
+
if (initFlags) {
med.flag |= ME_EDGEDRAW | ME_EDGERENDER;
}
@@ -998,7 +1000,9 @@
if(inMF.v4 && indexMap[inMF.v4].merge_final)
mf->v4 = calc_mapping(indexMap, indexMap[inMF.v4].merge, count-1);
- test_index_face(mf, &result->faceData, numFaces, inMF.v4?4:3);
+ if(test_index_face(mf, &result->faceData, numFaces, inMF.v4?4:3) < 3)
+ continue;
+
numFaces++;
/* if the face has fewer than 3 vertices, don't create it */
More information about the Bf-blender-cvs
mailing list