[Bf-blender-cvs] [12ff7b4297d] sculpt-dev: Sculpt: fix problem with smooth brush defaults
Joseph Eagar
noreply at git.blender.org
Wed Oct 6 02:28:32 CEST 2021
Commit: 12ff7b4297dbe1bb3dca0f18775009614348776a
Author: Joseph Eagar
Date: Tue Oct 5 17:27:23 2021 -0700
Branches: sculpt-dev
https://developer.blender.org/rB12ff7b4297dbe1bb3dca0f18775009614348776a
Sculpt: fix problem with smooth brush defaults
Also wrapped some mv->flag OR's in a
macro, that can be switched with a macro
for debugging.
===================================================================
M source/blender/blenkernel/BKE_blender_version.h
M source/blender/blenkernel/BKE_pbvh.h
M source/blender/blenkernel/intern/brush_engine_presets.c
M source/blender/blenkernel/intern/dyntopo.c
M source/blender/blenkernel/intern/paint.c
M source/blender/blenkernel/intern/pbvh.c
M source/blender/blenkernel/intern/pbvh_bmesh.c
M source/blender/blenloader/intern/versioning_300.c
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/sculpt_paint/sculpt_face_set.c
M source/blender/editors/sculpt_paint/sculpt_undo.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 31ce1b124e9..ceb19e87b40 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 32
+#define BLENDER_FILE_SUBVERSION 33
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h
index 69640117f48..acdfe117931 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -953,7 +953,19 @@ void BKE_pbvh_update_vert_boundary_grids(PBVH *pbvh,
SculptVertRef vertex);
void BKE_pbvh_set_mdyntopo_verts(PBVH *pbvh, struct MDynTopoVert *mdyntopoverts);
+#if 0
+# include "DNA_meshdata_types.h"
+ATTR_NO_OPT static void MV_ADD_FLAG(MDynTopoVert *mv, int flag)
+{
+ if (flag & DYNVERT_NEED_BOUNDARY) {
+ flag |= flag;
+ }
+ mv->flag |= flag;
+}
+#else
+# define MV_ADD_FLAG(mv, flag1) (mv)->flag |= (flag1)
+#endif
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/intern/brush_engine_presets.c b/source/blender/blenkernel/intern/brush_engine_presets.c
index c14615246a3..f32b4ae3f24 100644
--- a/source/blender/blenkernel/intern/brush_engine_presets.c
+++ b/source/blender/blenkernel/intern/brush_engine_presets.c
@@ -1244,6 +1244,7 @@ void BKE_brush_channelset_ui_init(Brush *brush, int tool)
SHOWWRK(normal_radius_factor);
SHOWWRK(hardness);
+ SHOWWRK(dyntopo_disabled);
switch (tool) {
case SCULPT_TOOL_INFLATE:
@@ -1263,6 +1264,7 @@ void BKE_brush_channelset_ui_init(Brush *brush, int tool)
SHOWWRK(smooth_deform_type);
SHOWCTX(smooth_deform_type);
SHOWWRK(projection);
+ SHOWCTX(dyntopo_disabled);
break;
case SCULPT_TOOL_SCRAPE:
case SCULPT_TOOL_FILL:
@@ -1596,6 +1598,8 @@ void BKE_brush_builtin_create(Brush *brush, int tool)
BRUSHSET_SET_FLOAT(chset, spacing, 5.0f);
BRUSHSET_SET_FLOAT(chset, strength, 0.3f);
+ BRUSHSET_SET_BOOL(chset, dyntopo_disabled, true);
+
ADDCH(surface_smooth_shape_preservation);
ADDCH(surface_smooth_current_vertex);
ADDCH(surface_smooth_iterations);
diff --git a/source/blender/blenkernel/intern/dyntopo.c b/source/blender/blenkernel/intern/dyntopo.c
index 834652000a7..6223a748028 100644
--- a/source/blender/blenkernel/intern/dyntopo.c
+++ b/source/blender/blenkernel/intern/dyntopo.c
@@ -200,8 +200,9 @@ static void fix_mesh(PBVH *pbvh, BMesh *bm)
v->e = NULL;
MDynTopoVert *mv = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v);
- mv->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT |
- DYNVERT_NEED_TRIANGULATE;
+ MV_ADD_FLAG(mv,
+ DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT |
+ DYNVERT_NEED_TRIANGULATE);
}
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
@@ -804,7 +805,7 @@ static BMVert *pbvh_bmesh_vert_create(PBVH *pbvh,
BMVert *v = BM_vert_create(pbvh->bm, co, NULL, BM_CREATE_NOP);
MDynTopoVert *mv = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v);
- mv->flag |= DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_VALENCE;
+ MV_ADD_FLAG(mv, DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_VALENCE);
if (v_example) {
v->head.hflag = v_example->head.hflag;
@@ -925,7 +926,7 @@ static BMFace *pbvh_bmesh_face_create(PBVH *pbvh,
}
MDynTopoVert *mv = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv->flag |= DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE;
+ MV_ADD_FLAG(mv, DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE);
l = l->next;
} while (l != f->l_first);
@@ -935,7 +936,7 @@ static BMFace *pbvh_bmesh_face_create(PBVH *pbvh,
do {
MDynTopoVert *mv = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv->flag |= DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE;
+ MV_ADD_FLAG(mv, DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE);
} while ((l = l->next) != f->l_first);
}
@@ -978,7 +979,7 @@ BMVert *BKE_pbvh_vert_create_bmesh(
BM_ELEM_CD_SET_INT(v, pbvh->cd_vert_node_offset, DYNTOPO_NODE_NONE);
MDynTopoVert *mv = BM_ELEM_CD_GET_VOID_P(v, pbvh->cd_dyn_vert);
- mv->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY;
+ MV_ADD_FLAG(mv, DYNVERT_NEED_VALENCE | DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_BOUNDARY);
copy_v3_v3(mv->origco, co);
@@ -2539,7 +2540,7 @@ static bool check_vert_fan_are_tris(PBVH *pbvh, BMVert *v)
do {
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv_l->flag |= DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE | DYNVERT_NEED_DISK_SORT;
+ MV_ADD_FLAG(mv_l, DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_VALENCE | DYNVERT_NEED_DISK_SORT);
} while ((l = l->next) != f->l_first);
BLI_array_append(fs, f);
}
@@ -3131,8 +3132,8 @@ static void pbvh_bmesh_split_edge(EdgeQueueContext *eq_ctx,
pbvh_check_vert_boundary(pbvh, e->v1);
pbvh_check_vert_boundary(pbvh, e->v2);
- mv1->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT;
- mv2->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT;
+ MV_ADD_FLAG(mv1, DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT);
+ MV_ADD_FLAG(mv2, DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT);
bool boundary = (mv1->flag & DYNVERT_ALL_BOUNDARY) && (mv2->flag & DYNVERT_ALL_BOUNDARY);
@@ -3173,7 +3174,7 @@ static void pbvh_bmesh_split_edge(EdgeQueueContext *eq_ctx,
&pbvh->bm->vdata, (const void **)vsrcs, (float *)vws, NULL, 2, v_new->head.data);
// bke_pbvh_update_vert_boundary(pbvh->cd_dyn_vert, pbvh->cd_faceset_offset, v_new);
- mv_new->flag |= DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY;
+ MV_ADD_FLAG(mv_new, DYNVERT_NEED_DISK_SORT | DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY);
mv_new->flag &= ~DYNVERT_VALENCE_TEMP;
int ni_new2 = BM_ELEM_CD_GET_INT(v_new, pbvh->cd_vert_node_offset);
@@ -3207,9 +3208,9 @@ static void pbvh_bmesh_split_edge(EdgeQueueContext *eq_ctx,
MDynTopoVert *mv2b = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v2);
MDynTopoVert *mv_opp = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v_opp);
- mv1b->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT;
- mv2b->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT;
- mv_opp->flag |= DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT;
+ MV_ADD_FLAG(mv1b, DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT);
+ MV_ADD_FLAG(mv2b, DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT);
+ MV_ADD_FLAG(mv_opp, DYNVERT_NEED_VALENCE | DYNVERT_NEED_BOUNDARY | DYNVERT_NEED_DISK_SORT);
if (ni != node_index && i == 0) {
pbvh_bmesh_vert_ownership_transfer(pbvh, &pbvh->nodes[ni], v_new);
@@ -3778,7 +3779,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
BM_LOOPS_OF_VERT_ITER_BEGIN (l, v_del) {
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->next->v);
- mv_l->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_l, mupdateflag);
BLI_array_append(ls, l);
totl++;
@@ -3787,7 +3788,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
BM_LOOPS_OF_VERT_ITER_BEGIN (l, v_conn) {
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->next->v);
- mv_l->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_l, mupdateflag);
BLI_array_append(ls, l);
totl++;
@@ -3948,7 +3949,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
}
MDynTopoVert *mv1 = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v);
- mv1->flag |= mupdateflag;
+ MV_ADD_FLAG(mv1, mupdateflag);
BKE_pbvh_bmesh_remove_vertex(pbvh, v, true);
@@ -3980,7 +3981,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
}
MDynTopoVert *mv_conn = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v_conn);
- mv_conn->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_conn, mupdateflag);
bool wasbad = false;
@@ -3996,7 +3997,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMVert *v2 = BM_edge_other_vert(e2, v_conn);
MDynTopoVert *mv2 = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v2);
- mv2->flag |= mupdateflag;
+ MV_ADD_FLAG(mv2, mupdateflag);
// kill wire edge
if (!l) {
@@ -4050,7 +4051,7 @@ static void pbvh_bmesh_collapse_edge(PBVH *pbvh,
// BM_vert_splice(pbvh->bm, v_del, v_conn);
MDynTopoVert *mv3 = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, v_conn);
- mv3->flag |= mupdateflag;
+ MV_ADD_FLAG(mv3, mupdateflag);
if (BM_ELEM_CD_GET_INT(v_conn, pbvh->cd_vert_node_offset) == DYNTOPO_NODE_NONE) {
printf("%s: error\n", __func__);
@@ -4149,7 +4150,7 @@ static void pbvh_bmesh_collapse_edge1(PBVH *pbvh,
BMEdge *e2 = l->e;
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv_l->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_l, mupdateflag);
l = l->next;
} while (l != f_adj->l_first);
@@ -4192,7 +4193,7 @@ static void pbvh_bmesh_collapse_edge1(PBVH *pbvh,
BM_LOOPS_OF_VERT_ITER_BEGIN (l, v_del) {
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv_l->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_l, mupdateflag);
BLI_array_append(ls, l);
totl++;
@@ -4201,7 +4202,7 @@ static void pbvh_bmesh_collapse_edge1(PBVH *pbvh,
BM_LOOPS_OF_VERT_ITER_BEGIN (l, v_conn) {
MDynTopoVert *mv_l = BKE_PBVH_DYNVERT(pbvh->cd_dyn_vert, l->v);
- mv_l->flag |= mupdateflag;
+ MV_ADD_FLAG(mv_l, mupdateflag);
BLI_array_append(ls, l);
totl++;
@@ -4340,8 +4341,8 @@ static void pbvh_bmesh_collapse_edge1(PBVH *pbvh,
MDynTopoVert *mv2 = BKE_PBVH_DYNVERT
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list