[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15485] trunk/blender/source/blender/src/ editmesh_add.c: Bugfix #16535
Ton Roosendaal
ton at blender.org
Tue Jul 8 13:47:30 CEST 2008
Revision: 15485
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15485
Author: ton
Date: 2008-07-08 13:47:22 +0200 (Tue, 08 Jul 2008)
Log Message:
-----------
Bugfix #16535
The infamous Fkey 'make face' in editmode still failed in cases, giving
an annoying convex error popup.
Found two errors in this code:
- not all cases were evaluated to make a face of 4 vertices (6 cases)
- the function that makes always a face when the 4 edges already exist
failed when not in vertex-select mode.
I also removed the popup, but added a print... its still not perfect.
Modified Paths:
--------------
trunk/blender/source/blender/src/editmesh_add.c
Modified: trunk/blender/source/blender/src/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/src/editmesh_add.c 2008-07-08 10:18:34 UTC (rev 15484)
+++ trunk/blender/source/blender/src/editmesh_add.c 2008-07-08 11:47:22 UTC (rev 15485)
@@ -379,7 +379,7 @@
/* find the 4 edges */
for(eed= em->edges.first; eed; eed= eed->next) {
- if(eed->f & SELECT) {
+ if( (eed->f & SELECT) || (eed->v1->f & eed->v2->f & SELECT) ) {
if(eedar[0]==NULL) eedar[0]= eed;
else if(eedar[1]==NULL) eedar[1]= eed;
else if(eedar[2]==NULL) eedar[2]= eed;
@@ -765,6 +765,7 @@
/* if 4 edges exist, we just create the face, convex or not */
efa= addface_from_edges();
if(efa==NULL) {
+
/* the order of vertices can be anything, 6 cases to check */
if( convex(neweve[0]->co, neweve[1]->co, neweve[2]->co, neweve[3]->co) ) {
efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL);
@@ -775,17 +776,16 @@
else if( convex(neweve[0]->co, neweve[2]->co, neweve[1]->co, neweve[3]->co) ) {
efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL);
}
-
- else if( convex(neweve[1]->co, neweve[2]->co, neweve[3]->co, neweve[0]->co) ) {
- efa= addfacelist(neweve[1], neweve[2], neweve[3], neweve[0], NULL, NULL);
+ else if( convex(neweve[0]->co, neweve[1]->co, neweve[3]->co, neweve[2]->co) ) {
+ efa= addfacelist(neweve[0], neweve[1], neweve[3], neweve[2], NULL, NULL);
}
- else if( convex(neweve[1]->co, neweve[3]->co, neweve[0]->co, neweve[2]->co) ) {
- efa= addfacelist(neweve[1], neweve[3], neweve[0], neweve[2], NULL, NULL);
+ else if( convex(neweve[0]->co, neweve[3]->co, neweve[2]->co, neweve[1]->co) ) {
+ efa= addfacelist(neweve[0], neweve[3], neweve[2], neweve[1], NULL, NULL);
}
- else if( convex(neweve[1]->co, neweve[3]->co, neweve[2]->co, neweve[0]->co) ) {
- efa= addfacelist(neweve[1], neweve[3], neweve[2], neweve[0], NULL, NULL);
+ else if( convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co) ) {
+ efa= addfacelist(neweve[0], neweve[3], neweve[1], neweve[2], NULL, NULL);
}
- else error("The selected vertices form a concave quad");
+ else printf("cannot find nice quad from concave set of vertices\n");
}
}
}
More information about the Bf-blender-cvs
mailing list