Commit: 78d39cad8bc9c494efb384e833e75d4a3086a025
Author: Campbell Barton
Date:   Wed Apr 6 15:07:37 2016 +1000
Branches: master
https://developer.blender.org/rB78d39cad8bc9c494efb384e833e75d4a3086a025

Tweak fill-region method to produce fewer 'gaps'

===================================================================

M       source/blender/bmesh/tools/bmesh_path_region.c

===================================================================

diff --git a/source/blender/bmesh/tools/bmesh_path_region.c 
b/source/blender/bmesh/tools/bmesh_path_region.c
index e68dc86..389bcc7 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);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to