Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Trickey <howard.trickey@gmail.com>2014-03-06 19:55:12 +0400
committerHoward Trickey <howard.trickey@gmail.com>2014-03-06 19:55:12 +0400
commitc1be7e12ee3cb853769f63d4da1747b838908411 (patch)
treeef6147c9be8d9c7af7849dd4c452ce76b42239aa /source/blender
parentd4ad050632633b9fe964722575fd44412685e3fb (diff)
Fix T37510 Knife missed cuts on small faces.
For very thin faces, knife sometimes missed cutting a few. Problem was that a test for edges being totally inside a face was being applied in inappropriate circumstances. An assumed invariant about the knife hit structure is not true when actually in the middle of making cuts. Also make a 'big epsilon' a little smaller, though don't think that was the problem in this bug.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/mesh/editmesh_knife.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c
index c762c82442e..772fe7d306e 100644
--- a/source/blender/editors/mesh/editmesh_knife.c
+++ b/source/blender/editors/mesh/editmesh_knife.c
@@ -77,7 +77,7 @@
#define KNIFE_FLT_EPS 0.00001f
#define KNIFE_FLT_EPS_SQUARED (KNIFE_FLT_EPS * KNIFE_FLT_EPS)
-#define KNIFE_FLT_EPSBIG 0.001f
+#define KNIFE_FLT_EPSBIG 0.0005f
typedef struct KnifeColors {
unsigned char line[3];
@@ -653,7 +653,7 @@ static void knife_add_single_cut(KnifeTool_OpData *kcd, KnifeLineHit *lh1, Knife
}
/* Check if edge actually lies within face (might not, if this face is concave) */
- if (lh1->v && lh2->v) {
+ if ((lh1->v && !lh1->kfe) && (lh2->v && !lh2->kfe)) {
if (!knife_verts_edge_in_face(lh1->v, lh2->v, f)) {
return;
}