[Bf-blender-cvs] [b54abd7ede6] blender-v3.2-release: Fix T80174: Dyntopo not initializing face set values correctly

Joseph Eagar noreply at git.blender.org
Sun May 15 10:46:35 CEST 2022


Commit: b54abd7ede6ab1089f8733b1e35a290b7ad2f169
Author: Joseph Eagar
Date:   Sun May 15 01:44:09 2022 -0700
Branches: blender-v3.2-release
https://developer.blender.org/rBb54abd7ede6ab1089f8733b1e35a290b7ad2f169

Fix T80174: Dyntopo not initializing face set values correctly

BMLog was zeroing face sets when creating new faces,
which is not valid.  They're now set to 1.

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

M	source/blender/bmesh/intern/bmesh_log.c

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

diff --git a/source/blender/bmesh/intern/bmesh_log.c b/source/blender/bmesh/intern/bmesh_log.c
index a398f14b312..a55eb74285d 100644
--- a/source/blender/bmesh/intern/bmesh_log.c
+++ b/source/blender/bmesh/intern/bmesh_log.c
@@ -288,6 +288,8 @@ static void bm_log_verts_restore(BMesh *bm, BMLog *log, GHash *verts)
 static void bm_log_faces_restore(BMesh *bm, BMLog *log, GHash *faces)
 {
   GHashIterator gh_iter;
+  const int cd_face_sets = CustomData_get_offset(&bm->pdata, CD_SCULPT_FACE_SETS);
+
   GHASH_ITER (gh_iter, faces) {
     void *key = BLI_ghashIterator_getKey(&gh_iter);
     BMLogFace *lf = BLI_ghashIterator_getValue(&gh_iter);
@@ -301,6 +303,11 @@ static void bm_log_faces_restore(BMesh *bm, BMLog *log, GHash *faces)
     f = BM_face_create_verts(bm, v, 3, NULL, BM_CREATE_NOP, true);
     f->head.hflag = lf->hflag;
     bm_log_face_id_set(log, f, POINTER_AS_UINT(key));
+
+  /* Ensure face sets have valid values.  Fixes T80174. */
+    if (cd_face_sets != -1) {
+      BM_ELEM_CD_SET_INT(f, cd_face_sets, 1);
+    }
   }
 }



More information about the Bf-blender-cvs mailing list