diff options
author | Joseph Eagar <joeedh@gmail.com> | 2021-09-18 09:32:08 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2021-09-18 09:32:08 +0300 |
commit | 2d3d6eb7b2a9be40aa5f383a1ff57ef37debc197 (patch) | |
tree | d2d27ab69f8ffb0797b022288311821780e0e368 /release/scripts | |
parent | 85d274a60c03b067efaddeda921f0edf1c0982b3 (diff) | |
parent | f0c35d16f39d837c7bceb6740d3fe9c440676564 (diff) |
Merge remote-tracking branch 'origin/temp_bmesh_multires' into sculpt-dev
Diffstat (limited to 'release/scripts')
m--------- | release/scripts/addons | 0 | ||||
m--------- | release/scripts/addons_contrib | 0 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_paint_common.py | 97 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_toolsystem_toolbar.py | 4 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_userpref.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d_toolbar.py | 83 |
7 files changed, 179 insertions, 7 deletions
diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 4475cbd11a636382d57571e0f5dfeff1f90bd6b +Subproject 59c8409947c4174983a36ec28dfeda2be9e254d diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib -Subproject 788441f2930465bbfba8f0797b12dcef1d46694 +Subproject 98f6085e9d71ba35d41e5aafbcb7981bd7c4827 diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 63032b64c63..bf29c3f8159 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -549,15 +549,27 @@ def brush_settings(layout, context, brush, popover=False): if context.preferences.experimental.use_sculpt_tools_tilt and capabilities.has_tilt: layout.prop(brush, "tilt_strength_factor", slider=True) + UnifiedPaintPanel.prop_unified( + layout, + context, + brush, + "hard_edge_mode", + slider=True, + unified_name="use_unified_hard_edge_mode", + ) + row = layout.row(align=True) + row.prop(brush, "hardness", slider=True) row.prop(brush, "invert_hardness_pressure", text="") row.prop(brush, "use_hardness_pressure", text="") # auto_smooth_factor and use_inverse_smooth_pressure if capabilities.has_auto_smooth: + box = layout.box().column() #.column() is a bit more compact + UnifiedPaintPanel.prop_unified( - layout, + box, context, brush, "auto_smooth_factor", @@ -565,13 +577,70 @@ def brush_settings(layout, context, brush, popover=False): slider=True, ) - # topology_rake_factor + box.prop(brush, "boundary_smooth_factor") + box.prop(brush, "use_weighted_smooth") + box.prop(brush, "preserve_faceset_boundary") + + if brush.preserve_faceset_boundary: + box.prop(brush, "autosmooth_fset_slide") + + box.prop(brush, "use_custom_auto_smooth_spacing", text="Custom Spacing") + if brush.use_custom_auto_smooth_spacing: + UnifiedPaintPanel.prop_unified( + box, + context, + brush, + "auto_smooth_spacing", + slider=True, + text="Spacing" + ) + UnifiedPaintPanel.prop_unified( + box, + context, + brush, + "auto_smooth_projection", + slider=True + ) + UnifiedPaintPanel.prop_unified( + box, + context, + brush, + "auto_smooth_radius_factor", + slider=True + ) + elif brush.sculpt_tool == "SMOOTH": + UnifiedPaintPanel.prop_unified( + layout, + context, + brush, + "auto_smooth_projection", + slider=True + ) + + + if capabilities.has_vcol_boundary_smooth: + layout.prop(brush, "vcol_boundary_factor", slider=True) + if ( capabilities.has_topology_rake and context.sculpt_object.use_dynamic_topology_sculpting ): - layout.prop(brush, "topology_rake_factor", slider=True) - + box = layout.box().column() #.column() is a bit more compact + + box.prop(brush, "topology_rake_factor", slider=True) + box.prop(brush, "use_custom_topology_rake_spacing", text="Custom Spacing") + + if brush.use_custom_topology_rake_spacing: + box.prop(brush, "topology_rake_spacing", text="Spacing") + box.prop(brush, "topology_rake_projection") + + box.prop(brush, "topology_rake_radius_factor", slider=True) + box.prop(brush, "use_curvature_rake") + box.prop(brush, "ignore_falloff_for_topology_rake") + + if context.sculpt_object.use_dynamic_topology_sculpting: + layout.prop(brush.dyntopo, "disabled", text="Disable Dyntopo") + # normal_weight if capabilities.has_normal_weight: layout.prop(brush, "normal_weight", slider=True) @@ -630,6 +699,10 @@ def brush_settings(layout, context, brush, popover=False): # Per sculpt tool options. + if sculpt_tool == "VCOL_BOUNDARY": + row = layout.row() + row.prop(brush, "vcol_boundary_exponent") + if sculpt_tool == 'CLAY_STRIPS': row = layout.row() row.prop(brush, "tip_roundness") @@ -769,7 +842,15 @@ def brush_settings(layout, context, brush, popover=False): elif sculpt_tool == 'SMOOTH': col = layout.column() + col.prop(brush, "boundary_smooth_factor") + + col.prop(brush, "use_weighted_smooth") + col.prop(brush, "preserve_faceset_boundary") + if brush.preserve_faceset_boundary: + col.prop(brush, "autosmooth_fset_slide") + col.prop(brush, "smooth_deform_type") + if brush.smooth_deform_type == 'SURFACE': col.prop(brush, "surface_smooth_shape_preservation") col.prop(brush, "surface_smooth_current_vertex") @@ -933,6 +1014,14 @@ def brush_settings_advanced(layout, context, brush, popover=False): # topology automasking col.prop(brush, "use_automasking_topology", text="Topology") + col.prop(brush, "use_automasking_concave") + + col2 = col.column() + col2.enabled = brush.use_automasking_concave + + col2.prop(brush, "concave_mask_factor", text="Cavity Factor") + col2.prop(brush, "invert_automasking_concavity", text="Invert Cavity Mask") + # face masks automasking col.prop(brush, "use_automasking_face_sets", text="Face Sets") diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 7546be30b48..a128bf8698d 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -1304,7 +1304,9 @@ class _defs_sculpt: # Use 'bpy.context' instead of 'context' since it can be None. prefs = bpy.context.preferences if not prefs.experimental.use_sculpt_vertex_colors: - exclude_filter = {'PAINT', 'SMEAR'} + exclude_filter = {'PAINT' : True, 'SMEAR' : True} + if not prefs.experimental.use_sculpt_uvsmooth: + exclude_filter['UV_SMOOTH'] = True return generate_from_enum_ex( context, diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 0093110d326..be16179fdff 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2248,6 +2248,7 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel): self._draw_items( context, ( ({"property": "use_sculpt_vertex_colors"}, "T71947"), + ({"property": "use_sculpt_uvsmooth"}, ""), ({"property": "use_sculpt_tools_tilt"}, "T82877"), ({"property": "use_extended_asset_browser"}, ("project/view/130/", "Project Page")), ({"property": "use_override_templates"}, ("T73318", "Milestone 4")), diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 39b780b36af..c13cd0d66f7 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -171,6 +171,7 @@ class VIEW3D_HT_tool_header(Header): row.popover(panel="VIEW3D_PT_tools_weightpaint_symmetry_for_topbar", text="") elif mode_string == 'SCULPT': row.popover(panel="VIEW3D_PT_sculpt_symmetry_for_topbar", text="") + layout.prop(context.object.data, "use_fset_boundary_mirror"); elif mode_string == 'PAINT_VERTEX': row.popover(panel="VIEW3D_PT_tools_vertexpaint_symmetry_for_topbar", text="") diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index f9f5aa00f29..92a0c69f00c 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -17,7 +17,7 @@ # ##### END GPL LICENSE BLOCK ##### # <pep8 compliant> -from bpy.types import Menu, Panel, UIList +from bpy.types import Menu, Panel, UIList, WindowManager from bl_ui.properties_grease_pencil_common import ( GreasePencilSculptOptionsPanel, GreasePencilDisplayPanel, @@ -755,9 +755,77 @@ class VIEW3D_PT_tools_brush_falloff_normal(View3DPaintPanel, Panel): # TODO, move to space_view3d.py +class VIEW3D_PT_sculpt_dyntopo_advanced(Panel, View3DPaintPanel): + bl_context = ".sculpt_mode" # dot on purpose (access from topbar) + bl_label = "Dyntopo (Advanced)" + #bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 12 + + @classmethod + def poll(cls, context): + paint_settings = cls.paint_settings(context) + return (context.sculpt_object and context.tool_settings.sculpt and paint_settings) + + def draw_header(self, context): + pass + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False + + tool_settings = context.tool_settings + sculpt = tool_settings.sculpt + settings = self.paint_settings(context) + brush = settings.brush + + col = layout.column() + col.label(text="Local Brush Settings") + + row = col.row() + row.prop(brush.dyntopo, "disabled", text="Disable Dyntopo locally for this brush") + + col.label(text="Overrides") + inherit_all = "ALL" in brush.dyntopo.inherit + + col.prop_enum(brush.dyntopo, "inherit", value="ALL", text="Use All Defaults", icon="LOCKED" if inherit_all else "UNLOCKED") + + def do_prop(key): + row = col.row() + if key.upper() in brush.dyntopo.inherit: + icon = "UNLOCKED" + else: + icon = "LOCKED" + + row.prop_enum(brush.dyntopo, "inherit", value=key.upper(), icon=icon, text="") + + row2 = row.row() + row2.prop(brush.dyntopo, key) + + if icon == "UNLOCKED": + row2.enabled = False + + if inherit_all: + row.enabled = False + + col = layout.column() + do_prop("subdivide") + do_prop("collapse") + do_prop("cleanup") + do_prop("spacing") + do_prop("local_subdivide") + do_prop("local_collapse") + do_prop("detail_size") + do_prop("detail_range") + do_prop("detail_percent") + do_prop("constant_detail") + do_prop("mode") + do_prop("radius_scale") + +# TODO, move to space_view3d.py class VIEW3D_PT_sculpt_dyntopo(Panel, View3DPaintPanel): bl_context = ".sculpt_mode" # dot on purpose (access from topbar) - bl_label = "Dyntopo" + bl_label = "Dynamic Mode" bl_options = {'DEFAULT_CLOSED'} bl_ui_units_x = 12 @@ -789,6 +857,8 @@ class VIEW3D_PT_sculpt_dyntopo(Panel, View3DPaintPanel): col = layout.column() col.active = context.sculpt_object.use_dynamic_topology_sculpting + col.prop(sculpt, "use_dyntopo"); + sub = col.column() sub.active = (brush and brush.sculpt_tool != 'MASK') if sculpt.detail_type_method in {'CONSTANT', 'MANUAL'}: @@ -806,7 +876,12 @@ class VIEW3D_PT_sculpt_dyntopo(Panel, View3DPaintPanel): if sculpt.detail_type_method in {'CONSTANT', 'MANUAL'}: col.operator("sculpt.detail_flood_fill") + col.prop(sculpt, "use_dyntopo_cleanup") col.prop(sculpt, "use_smooth_shading") + col.prop(sculpt, "use_flat_vcol_shading") + + col.prop(sculpt, "dyntopo_spacing") + col.prop(sculpt, "dyntopo_radius_scale"); class VIEW3D_PT_sculpt_voxel_remesh(Panel, View3DPaintPanel): @@ -866,6 +941,7 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel): col = layout.column(heading="Display", align=True) col.prop(sculpt, "show_low_resolution") col.prop(sculpt, "use_sculpt_delay_updates") + col.prop(sculpt, "use_fast_draw") col.prop(sculpt, "use_deform_only") col.prop(sculpt, "show_sculpt_pivot") col.prop(sculpt, "smooth_strength_factor") @@ -944,6 +1020,7 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel): row.prop(sculpt, "tile_z", text="Z", toggle=True) layout.prop(sculpt, "use_symmetry_feather", text="Feather") + layout.prop(mesh, "use_fset_boundary_mirror") layout.prop(sculpt, "radial_symmetry", text="Radial") layout.prop(sculpt, "tile_offset", text="Tile Offset") @@ -951,6 +1028,7 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel): layout.prop(sculpt, "symmetrize_direction") layout.operator("sculpt.symmetrize") + layout.prop(WindowManager.operator_properties_last("sculpt.symmetrize"), "merge_tolerance") class VIEW3D_PT_sculpt_symmetry_for_topbar(Panel): @@ -2284,6 +2362,7 @@ classes = ( VIEW3D_PT_tools_grease_pencil_brush_vertex_color, VIEW3D_PT_tools_grease_pencil_brush_vertex_palette, VIEW3D_PT_tools_grease_pencil_brush_vertex_falloff, + VIEW3D_PT_sculpt_dyntopo_advanced ) if __name__ == "__main__": # only for live edit. |