[Bf-blender-cvs] [4d541821596] sculpt-dev: Sculpt-dev: fix a few broken panels and a crash
Joseph Eagar
noreply at git.blender.org
Sat Jan 15 15:59:16 CET 2022
Commit: 4d54182159671aaf30479c3f568a790e73cff883
Author: Joseph Eagar
Date: Sat Jan 15 06:58:10 2022 -0800
Branches: sculpt-dev
https://developer.blender.org/rB4d54182159671aaf30479c3f568a790e73cff883
Sculpt-dev: fix a few broken panels and a crash
===================================================================
M release/scripts/startup/bl_ui/properties_paint_common.py
M release/scripts/startup/bl_ui/space_view3d.py
M release/scripts/startup/bl_ui/space_view3d_toolbar.py
M source/blender/blenkernel/intern/paint.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index ca6571e4a7c..5a611985a4d 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -33,6 +33,25 @@ builtin_channel_categories = ["Cloth Tool",
"Stroke",
"Automasking"]
+channel_name_map = {
+ "size": "radius",
+ "autosmooth_fset_slide": "fset_slide",
+ "auto_smooth_factor": "autosmooth",
+ "auto_smooth_projection": "autosmooth_projection",
+ "auto_smooth_radius_factor": "autosmooth_radius_scale",
+ "boundary_smooth_factor": "boundary_smooth",
+ "autosmooth_fset_slide": "fset_slide",
+ "topology_rake_factor": "topology_rake",
+ "use_locked_size": "radius_unit",
+ "use_cloth_collision" : "cloth_use_collision",
+ "use_accumulate" : "accumulate"
+}
+expand_channels = {"direction", "radius_unit", "automasking"}
+name_channel_map = {}
+
+for k, v in channel_name_map.items():
+ name_channel_map[v] = k
+
class DynamicBrushCategoryPanel(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
@@ -258,21 +277,6 @@ for cat in builtin_channel_categories:
DynamicPaintPanelGen.ensureCategory(cat, cat, prefix="VIEW3D_PT_brush_category_edit_",
parent="VIEW3D_PT_tools_brush_settings_channels_preview").insertEachAfter(insertAfters)
-channel_name_map = {
- "size": "radius",
- "autosmooth_fset_slide": "fset_slide",
- "auto_smooth_factor": "autosmooth",
- "auto_smooth_projection": "autosmooth_projection",
- "auto_smooth_radius_factor": "autosmooth_radius_scale",
- "boundary_smooth_factor": "boundary_smooth",
- "autosmooth_fset_slide": "fset_slide",
- "topology_rake_factor": "topology_rake",
- "use_locked_size": "radius_unit",
- "use_cloth_collision" : "cloth_use_collision"
-}
-expand_channels = {"direction", "radius_unit", "automasking"}
-
-
def template_curve(layout, base, propname, full_path, use_negative_slope=None):
layout.template_curve_mapping(base, propname, brush=True, use_negative_slope=use_negative_slope)
@@ -447,6 +451,9 @@ class UnifiedPaintPanel:
show_mappings = True
if context.mode != "SCULPT":
+ if prop_name in name_channel_map:
+ prop_name = name_channel_map[prop_name]
+
return UnifiedPaintPanel.prop_unified(layout, context, brush, prop_name, icon=icon, text=text, slider=slider, header=header, expand=expand)
if prop_name == "size":
@@ -1252,17 +1259,17 @@ def brush_settings(layout, context, brush, popover=False):
mode = UnifiedPaintPanel.get_brush_mode(context)
- layout.prop(context.tool_settings.unified_paint_settings, "brush_editor_mode")
- layout.prop(context.tool_settings.unified_paint_settings, "brush_editor_advanced")
-
- advanced = context.tool_settings.unified_paint_settings.brush_editor_advanced
- editor = context.tool_settings.unified_paint_settings.brush_editor_mode
-
### Draw simple settings unique to each paint mode. ###
brush_shared_settings(layout, context, brush, popover)
# Sculpt Mode #
if mode == 'SCULPT':
+ layout.prop(context.tool_settings.unified_paint_settings, "brush_editor_mode")
+ layout.prop(context.tool_settings.unified_paint_settings, "brush_editor_advanced")
+
+ advanced = context.tool_settings.unified_paint_settings.brush_editor_advanced
+ editor = context.tool_settings.unified_paint_settings.brush_editor_mode
+
capabilities = brush.sculpt_capabilities
sculpt_tool = brush.sculpt_tool
@@ -2081,13 +2088,6 @@ def brush_settings_advanced(layout, context, brush, popover=False):
mode = UnifiedPaintPanel.get_brush_mode(context)
- # In the popover we want to combine advanced brush settings with
- # non-advanced brush settings.
- if popover:
- brush_settings(layout, context, brush, popover=True)
- layout.separator()
- layout.label(text="Advanced")
-
# These options are shared across many modes.
use_accumulate = False
use_frontface = False
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 1abce5fcb42..8ea90179a93 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -76,7 +76,10 @@ class VIEW3D_HT_tool_header(Header):
is_valid_context = draw_fn(context, layout, tool)
def draw_3d_brush_settings(layout, tool_mode):
- layout.popover("VIEW3D_PT_tools_brush_settings_channels", text="Brush")
+ if tool_mode == "SCULPT":
+ layout.popover("VIEW3D_PT_tools_brush_settings_channels", text="Brush")
+ else:
+ layout.popover("VIEW3D_PT_tools_brush_settings", text="Brush")
if tool_mode not in ('PAINT_WEIGHT', 'SCULPT'):
layout.popover("VIEW3D_PT_tools_brush_texture")
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 9f5f9930c3e..f62293deebf 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -397,7 +397,6 @@ class VIEW3D_PT_tools_brush_settings(Panel, View3DPaintBrushPanel):
brush_settings(layout.column(), context, brush, popover=self.is_popover)
-
class VIEW3D_PT_tools_brush_settings_channels(Panel, View3DPaintBrushPanel):
bl_context = ".paint_common"
bl_label = "Brush Settings"
@@ -451,14 +450,45 @@ class VIEW3D_PT_tools_brush_settings_channels_preview(Panel, View3DPaintBrushPan
prefix="VIEW3D_PT_brush_category_edit_",
parent="VIEW3D_PT_tools_brush_settings_channels_preview")
-
class VIEW3D_PT_tools_brush_settings_advanced(Panel, View3DPaintBrushPanel):
bl_context = ".brush_editor"
+ bl_parent_id = "VIEW3D_PT_tools_brush_settings"
+ bl_label = "Advanced"
+ bl_options = {'DEFAULT_CLOSED'}
+ bl_ui_units_x = 14
+
+ @classmethod
+ def poll(cls, context):
+ if context.mode == 'SCULPT':
+ return False
+
+ return View3DPaintBrushPanel.poll(cls, context)
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.use_property_split = True
+ layout.use_property_decorate = False # No animation.
+
+ settings = UnifiedPaintPanel.paint_settings(context)
+ brush = settings.brush
+
+ brush_settings_advanced(layout.column(), context, brush, self.is_popover)
+
+class VIEW3D_PT_tools_brush_settings_advanced_sculpt(Panel, View3DPaintBrushPanel):
+ bl_context = ".paint_common"
#bl_parent_id = "VIEW3D_PT_tools_brush_settings"
bl_label = "Advanced"
bl_options = {'DEFAULT_CLOSED'}
bl_ui_units_x = 14
+ @classmethod
+ def poll(cls, context):
+ if context.mode != 'SCULPT':
+ return False
+
+ return View3DPaintBrushPanel.poll(cls, context)
+
def draw(self, context):
layout = self.layout
@@ -2745,6 +2775,7 @@ classes = (VIEW3D_MT_brush_context_menu,
VIEW3D_PT_tools_brush_color,
VIEW3D_PT_tools_brush_swatches,
VIEW3D_PT_tools_brush_settings_advanced,
+ VIEW3D_PT_tools_brush_settings_advanced_sculpt,
VIEW3D_PT_tools_brush_clone,
TEXTURE_UL_texpaintslots,
VIEW3D_MT_tools_projectpaint_uvlayer,
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 5b41fd01cd4..d64ce79caf6 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1795,6 +1795,13 @@ static void sculpt_update_object(Depsgraph *depsgraph,
PBVH *pbvh = BKE_sculpt_object_pbvh_ensure(depsgraph, ob);
+ if (BKE_pbvh_type(pbvh) == PBVH_FACES) {
+ ss->vert_normals = BKE_pbvh_get_vert_normals(ss->pbvh);
+ }
+ else {
+ ss->vert_normals = NULL;
+ }
+
BLI_assert(pbvh == ss->pbvh);
UNUSED_VARS_NDEBUG(pbvh);
More information about the Bf-blender-cvs
mailing list