[Bf-blender-cvs] [acf8f6220d6] blender-v3.4-release: Sculpt: Fix box face sets not working for multires
Joseph Eagar
noreply at git.blender.org
Tue Nov 22 21:31:00 CET 2022
Commit: acf8f6220d648fdd71a68722072ba989d38e5a2b
Author: Joseph Eagar
Date: Tue Nov 22 12:30:36 2022 -0800
Branches: blender-v3.4-release
https://developer.blender.org/rBacf8f6220d648fdd71a68722072ba989d38e5a2b
Sculpt: Fix box face sets not working for multires
===================================================================
M source/blender/blenkernel/BKE_pbvh.h
M source/blender/blenkernel/intern/pbvh.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h
index d256ca81ec6..7f31179777f 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -710,6 +710,7 @@ typedef struct PBVHFaceIter {
int prim_index_;
const struct SubdivCCG *subdiv_ccg_;
const struct BMesh *bm;
+ CCGKey subdiv_key_;
int last_face_index_;
} PBVHFaceIter;
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index 9195683f70c..f948749f7bb 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -3738,10 +3738,12 @@ void pbvh_face_iter_step(PBVHFaceIter *fd, bool do_step)
pbvh_face_iter_verts_reserve(fd, mp->totloop);
const MLoop *ml = fd->mloop_ + mp->loopstart;
+ const int grid_area = fd->subdiv_key_.grid_area;
+
for (int i = 0; i < mp->totloop; i++, ml++) {
if (fd->pbvh_type_ == PBVH_GRIDS) {
/* Grid corners. */
- fd->verts[i].i = mp->loopstart + i;
+ fd->verts[i].i = (mp->loopstart + i) * grid_area + grid_area - 1;
}
else {
fd->verts[i].i = ml->v;
@@ -3771,6 +3773,8 @@ void BKE_pbvh_face_iter_init(PBVH *pbvh, PBVHNode *node, PBVHFaceIter *fd)
switch (BKE_pbvh_type(pbvh)) {
case PBVH_GRIDS:
fd->subdiv_ccg_ = pbvh->subdiv_ccg;
+ fd->subdiv_key_ = pbvh->gridkey;
+ ATTR_FALLTHROUGH;
case PBVH_FACES:
fd->mpoly_ = pbvh->mpoly;
fd->mloop_ = pbvh->mloop;
More information about the Bf-blender-cvs
mailing list