[Bf-blender-cvs] [7cf3b1f4726] temp_bmesh_multires: Get face set create operator working for dyntopo

Joseph Eagar noreply at git.blender.org
Fri May 7 16:04:44 CEST 2021


Commit: 7cf3b1f4726091a241c6f85b66739aa6f751cc0a
Author: Joseph Eagar
Date:   Fri May 7 07:04:19 2021 -0700
Branches: temp_bmesh_multires
https://developer.blender.org/rB7cf3b1f4726091a241c6f85b66739aa6f751cc0a

Get face set create operator working for dyntopo

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

M	release/datafiles/locale
M	release/scripts/addons_contrib
M	source/blender/blenkernel/intern/pbvh_bmesh.c
M	source/blender/draw/engines/image/image_engine.c
M	source/blender/editors/sculpt_paint/sculpt_face_set.c
M	source/tools

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 2c9eee69e65..d2d33a435d3 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 2c9eee69e654a8b654ea08e356391c192dcc56df
+Subproject commit d2d33a435d358fcd0ae7f3e2cd67bee2b500ec53
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 8970953d4a8..7d78c8a63f2 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 8970953d4a8a4ea3bf77c66370c817ed0cf1308a
+Subproject commit 7d78c8a63f2f4b146f9327ddc0d567a5921b94ea
diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c
index d32ade625c0..7159973f6f8 100644
--- a/source/blender/blenkernel/intern/pbvh_bmesh.c
+++ b/source/blender/blenkernel/intern/pbvh_bmesh.c
@@ -2509,7 +2509,7 @@ static bool pbvh_bmesh_subdivide_long_edges(EdgeQueueContext *eq_ctx,
       continue;
     }
 #else
-    BLI_assert(calc_weighted_edge_split(eq_ctx, v1->co, v2->co) > eq_ctx->q->limit_len_squared);
+    //BLI_assert(calc_weighted_edge_split(eq_ctx, v1->co, v2->co) > eq_ctx->q->limit_len_squared);
 #endif
 
     /* Check that the edge's vertices are still in the PBVH. It's
diff --git a/source/blender/draw/engines/image/image_engine.c b/source/blender/draw/engines/image/image_engine.c
index d75f887ce2b..617625c1870 100644
--- a/source/blender/draw/engines/image/image_engine.c
+++ b/source/blender/draw/engines/image/image_engine.c
@@ -31,6 +31,8 @@
 #include "DNA_camera_types.h"
 #include "DNA_screen_types.h"
 
+#include "BLI_compiler_attrs.h"
+
 #include "IMB_imbuf_types.h"
 
 #include "ED_image.h"
diff --git a/source/blender/editors/sculpt_paint/sculpt_face_set.c b/source/blender/editors/sculpt_paint/sculpt_face_set.c
index a97e65c6545..fd0c3bba7a0 100644
--- a/source/blender/editors/sculpt_paint/sculpt_face_set.c
+++ b/source/blender/editors/sculpt_paint/sculpt_face_set.c
@@ -346,11 +346,6 @@ static int sculpt_face_set_create_exec(bContext *C, wmOperator *op)
 
   const int mode = RNA_enum_get(op->ptr, "mode");
 
-  /* Dyntopo not supported. */
-  if (BKE_pbvh_type(ss->pbvh) == PBVH_BMESH) {
-    return OPERATOR_CANCELLED;
-  }
-
   BKE_sculpt_update_object_for_edit(depsgraph, ob, true, mode == SCULPT_FACE_SET_MASKED, false);
 
   const int tot_vert = SCULPT_vertex_count_get(ss);
@@ -421,29 +416,44 @@ static int sculpt_face_set_create_exec(bContext *C, wmOperator *op)
   }
 
   if (mode == SCULPT_FACE_SET_SELECTION) {
+
     Mesh *mesh = ob->data;
     BMesh *bm;
-    const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(mesh);
-    bm = BM_mesh_create(&allocsize,
-                        &((struct BMeshCreateParams){
-                            .use_toolflags = true,
-                        }));
 
-    BM_mesh_bm_from_me(NULL,
-                       bm,
-                       mesh,
-                       (&(struct BMeshFromMeshParams){
-                           .calc_face_normal = true,
-                       }));
+    if (ss->bm) {
+      bm = ss->bm;
+      BMIter iter;
+      BMFace *f;
+      BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+        if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
+          BM_ELEM_CD_SET_INT(f, ss->cd_faceset_offset, next_face_set);
+        }
+      }
+    }
+    else {
+      const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(mesh);
+      bm = BM_mesh_create(&allocsize,
+                          &((struct BMeshCreateParams){
+                              .use_toolflags = true,
+                          }));
+
+      BM_mesh_bm_from_me(NULL,
+                         bm,
+                         mesh,
+                         (&(struct BMeshFromMeshParams){
+                             .calc_face_normal = true,
+                         }));
 
-    BMIter iter;
-    BMFace *f;
-    BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
-      if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
-        ss->face_sets[BM_elem_index_get(f)] = next_face_set;
+      BMIter iter;
+      BMFace *f;
+      BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+        if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
+          ss->face_sets[BM_elem_index_get(f)] = next_face_set;
+        }
       }
+
+      BM_mesh_free(bm);
     }
-    BM_mesh_free(bm);
   }
 
   for (int i = 0; i < totnode; i++) {
diff --git a/source/tools b/source/tools
index 2afbb8ec472..f99d29ae3e6 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit 2afbb8ec472cac5102eb239f57b006f8c9387685
+Subproject commit f99d29ae3e6ad44d45d79309454c45f8088781a4



More information about the Bf-blender-cvs mailing list