[Bf-blender-cvs] [76beed9068e] sculpt-dev: Sculpt: More brush engine stuff, got automasking to work with it
Joseph Eagar
noreply at git.blender.org
Tue Sep 21 04:42:45 CEST 2021
Commit: 76beed9068e53e3d393e1c16f61efe8fd6edceda
Author: Joseph Eagar
Date: Mon Sep 20 14:10:35 2021 -0700
Branches: sculpt-dev
https://developer.blender.org/rB76beed9068e53e3d393e1c16f61efe8fd6edceda
Sculpt: More brush engine stuff, got automasking to work with it
* Sculpt now has an API to get brush channel settings.
If a sculpt cache exists it will use the channels there
(ss->cache->channels_final), otherwise it pulls them
from a brush and Sculpt toolsettings. Exampes:
float f = SCULPT_get_float(ss, "setting", sd, brush);
itn i = SCULPT_get_int(ss, "setting", sd, brush);
* Improved the UI a bit
===================================================================
M release/scripts/startup/bl_ui/properties_paint_common.py
M release/scripts/startup/bl_ui/space_view3d_toolbar.py
M source/blender/blenkernel/BKE_brush_engine.h
M source/blender/blenkernel/intern/brush_engine.c
M source/blender/blenkernel/intern/brush_engine_presets.c
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/sculpt_paint/sculpt_automasking.c
M source/blender/editors/sculpt_paint/sculpt_intern.h
M source/blender/makesrna/intern/rna_access.c
M source/blender/makesrna/intern/rna_brush_engine.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index dacde89a72c..c656df2fa81 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -108,7 +108,8 @@ class UnifiedPaintPanel:
return None
@staticmethod
- def channel_unified(layout, context, brush, prop_name, icon='NONE', pressure=True, text=None, slider=False, header=False, expand=None):
+ def channel_unified(layout, context, brush, prop_name, icon='NONE', pressure=True, text=None,
+ slider=False, header=False, expand=None, toolsettings_only=False):
""" Generalized way of adding brush options to the UI,
along with their pen pressure setting and global toggle, if they exist. """
ch = brush.channels.channels[prop_name]
@@ -119,6 +120,9 @@ class UnifiedPaintPanel:
#if ch.ui_expanded:
# layout = layout.box().column() #.column() is a bit more compact
+ if ch.type == "BITMASK":
+ layout = layout.box()
+
row = layout.row(align=True)
typeprop = "float_value"
@@ -139,18 +143,35 @@ class UnifiedPaintPanel:
text = text.strip()
path = ""
+ is_toolset = False
- if ch.inherit:
+ if ch.inherit or toolsettings_only:
sd = context.tool_settings.sculpt
#ensure channel exists in tool settings channel set
sd.channels.ensure(ch)
finalch = sd.channels.channels[prop_name]
+ is_toolset = True
path = "tool_settings.sculpt.channels.channels[\"%s\"]" % ch.idname
else:
path = "tool_settings.sculpt.brush.channels.channels[\"%s\"]" % ch.idname
- if expand is not None:
+ if ch.type == "BITMASK":
+ row.label(text=text)
+
+ if header:
+ row.prop_menu_enum(finalch, typeprop)
+ else:
+ col = layout.column()
+ col.emboss = "NONE"
+ for item in finalch.enum_items:
+ if item.identifier in finalch.flags_value:
+ itemicon = "CHECKBOX_HLT"
+ else:
+ itemicon = "CHECKBOX_DEHLT"
+ col.prop_enum(finalch, typeprop, item.identifier, icon=itemicon)
+
+ elif expand is not None:
row.prop(finalch, typeprop, icon=icon, text=text, slider=slider, expand=expand)
else:
row.prop(finalch, typeprop, icon=icon, text=text, slider=slider)
@@ -166,7 +187,15 @@ class UnifiedPaintPanel:
# # NOTE: We don't draw UnifiedPaintSettings in the header to reduce clutter. D5928#136281
# row.prop(ups, unified_name, text="", icon='BRUSHES_ALL')
if not header and ch.type != "BOOL":
- row.prop(ch, "inherit", text="", icon='BRUSHES_ALL')
+ if ch.type == "BITMASK" and not toolsettings_only and ch == finalch:
+ row.prop(ch, "inherit_if_unset", text="Combine With Defaults")
+
+ if not toolsettings_only:
+ row.prop(ch, "inherit", text="", icon='BRUSHES_ALL')
+
+ if ch.type == "BITMASK":
+ return
+
row.prop(ch, "ui_expanded", text="", icon="TRIA_DOWN" if ch.ui_expanded else "TRIA_RIGHT")
if ch.ui_expanded:
@@ -1163,6 +1192,18 @@ def brush_settings_advanced(layout, context, brush, popover=False):
use_accumulate = capabilities.has_accumulate
use_frontface = True
+ UnifiedPaintPanel.channel_unified(
+ layout.column(),
+ context,
+ brush,
+ "automasking", expand=False)
+ UnifiedPaintPanel.channel_unified(
+ layout.column(),
+ context,
+ brush,
+ "automasking_boundary_edges_propagation_steps")
+
+ """
col = layout.column(heading="Auto-Masking", align=True)
# topology automasking
@@ -1183,6 +1224,7 @@ def brush_settings_advanced(layout, context, brush, popover=False):
col.prop(brush, "use_automasking_boundary_edges", text="Mesh Boundary")
col.prop(brush, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
col.prop(brush, "automasking_boundary_edges_propagation_steps")
+ """
layout.separator()
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 7990878f48d..64170b8faa8 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -951,11 +951,26 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel):
col.separator()
+ brush = sculpt.brush
+ UnifiedPaintPanel.channel_unified(
+ layout.column(),
+ context,
+ brush,
+ "automasking", toolsettings_only=True)
+ UnifiedPaintPanel.channel_unified(
+ layout.column(),
+ context,
+ brush,
+ "automasking_boundary_edges_propagation_steps",
+ toolsettings_only=True)
+
+ """
col = layout.column(heading="Auto-Masking", align=True)
col.prop(sculpt, "use_automasking_topology", text="Topology")
col.prop(sculpt, "use_automasking_face_sets", text="Face Sets")
col.prop(sculpt, "use_automasking_boundary_edges", text="Mesh Boundary")
col.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
+ """
col.separator()
col.operator("sculpt.set_limit_surface")
diff --git a/source/blender/blenkernel/BKE_brush_engine.h b/source/blender/blenkernel/BKE_brush_engine.h
index eaf56f89751..f91b41d8a02 100644
--- a/source/blender/blenkernel/BKE_brush_engine.h
+++ b/source/blender/blenkernel/BKE_brush_engine.h
@@ -150,16 +150,18 @@ void BKE_brush_resolve_channels(struct Brush *brush, struct Sculpt *sd);
void BKE_brush_channelset_set_final_int(BrushChannelSet *brushset,
BrushChannelSet *toolset,
- char *idname,
+ const char *idname,
int value);
int BKE_brush_channelset_get_final_int(BrushChannelSet *brushset,
BrushChannelSet *toolset,
- char *idname,
+ const char *idname,
BrushMappingData *mapdata);
-int BKE_brush_channelset_get_int(BrushChannelSet *chset, char *idname, BrushMappingData *mapdata);
-bool BKE_brush_channelset_set_int(BrushChannelSet *chset, char *idname, int val);
+int BKE_brush_channelset_get_int(BrushChannelSet *chset,
+ const char *idname,
+ BrushMappingData *mapdata);
+bool BKE_brush_channelset_set_int(BrushChannelSet *chset, const char *idname, int val);
void BKE_brush_channel_set_int(BrushChannel *ch, int val);
float BKE_brush_channel_get_int(BrushChannel *ch, BrushMappingData *mapdata);
@@ -172,18 +174,18 @@ void BKE_brush_channel_set_float(BrushChannel *ch, float val);
/* mapdata may be NULL */
float BKE_brush_channelset_get_float(BrushChannelSet *chset,
- char *idname,
+ const char *idname,
BrushMappingData *mapdata);
-bool BKE_brush_channelset_set_float(BrushChannelSet *chset, char *idname, float val);
+bool BKE_brush_channelset_set_float(BrushChannelSet *chset, const char *idname, float val);
float BKE_brush_channelset_get_final_float(BrushChannelSet *child,
BrushChannelSet *parent,
- char *idname,
+ const char *idname,
BrushMappingData *mapdata);
void BKE_brush_channelset_set_final_float(BrushChannelSet *child,
BrushChannelSet *parent,
- char *idname,
+ const char *idname,
float value);
void BKE_brush_init_toolsettings(struct Sculpt *sd);
diff --git a/source/blender/blenkernel/intern/brush_engine.c b/source/blender/blenkernel/intern/brush_engine.c
index 550751cad83..d6d6692f06f 100644
--- a/source/blender/blenkernel/intern/brush_engine.c
+++ b/source/blender/blenkernel/intern/brush_engine.c
@@ -641,7 +641,9 @@ void BKE_brush_resolve_channels(Brush *brush, Sculpt *sd)
BKE_brush_channelset_merge(brush->channels_final, brush->channels, sd->channels);
}
-int BKE_brush_channelset_get_int(BrushChannelSet *chset, char *idname, BrushMappingData *mapdata)
+int BKE_brush_channelset_get_int(BrushChannelSet *chset,
+ const char *idname,
+ BrushMappingData *mapdata)
{
BrushChannel *ch = BKE_brush_channelset_lookup(chset, idname);
@@ -709,7 +711,7 @@ void BKE_brush_channel_set_int(BrushChannel *ch, int val)
int BKE_brush_channelset_get_final_int(BrushChannelSet *brushset,
BrushChannelSet *toolset,
- char *idname,
+ const char *idname,
BrushMappingData *mapdata)
{
BrushChannel *ch = BKE_brush_channelset_lookup(brushset, idname);
@@ -733,7 +735,7 @@ int BKE_brush_channelset_get_final_int(BrushChannelSet *brushset,
void BKE_brush_channelset_set_final_int(BrushChannelSet *brushset,
BrushChannelSet *toolset,
- char *idname,
+ const char *idname,
int val
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list