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:
authorCampbell Barton <ideasman42@gmail.com>2016-04-06 08:07:37 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-04-06 08:07:37 +0300
commit78d39cad8bc9c494efb384e833e75d4a3086a025 (patch)
treef29b5d957ffcd8dbd1e01c20015d1fe8b2b40246 /source/blender/bmesh/tools/bmesh_path_region.c
parent16597b691ac911ec54da3c0aeff36278a8107b22 (diff)
Tweak fill-region method to produce fewer 'gaps'
Diffstat (limited to 'source/blender/bmesh/tools/bmesh_path_region.c')
-rw-r--r--source/blender/bmesh/tools/bmesh_path_region.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/bmesh/tools/bmesh_path_region.c b/source/blender/bmesh/tools/bmesh_path_region.c
index e68dc867269..389bcc7c6aa 100644
--- a/source/blender/bmesh/tools/bmesh_path_region.c
+++ b/source/blender/bmesh/tools/bmesh_path_region.c
@@ -315,12 +315,27 @@ static LinkNode *mesh_calc_path_region_elem(
BMLoop *l_first, *l_iter;
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
bool ok = true;
+#if 0
do {
if (!bm_vert_region_test_chain(l_iter->v, depths, pass)) {
ok = false;
break;
}
} while ((l_iter = l_iter->next) != l_first);
+#else
+ /* Allowing a single failure on a face gives fewer 'gaps'.
+ * While correct, in practice they're often part of what a user would consider the 'region'. */
+ int ok_tests = f->len > 3 ? 1 : 0; /* how many times we may fail */
+ do {
+ if (!bm_vert_region_test_chain(l_iter->v, depths, pass)) {
+ if (ok_tests == 0) {
+ ok = false;
+ break;
+ }
+ ok_tests--;
+ }
+ } while ((l_iter = l_iter->next) != l_first);
+#endif
if (ok) {
BLI_linklist_prepend(&path, f);