Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2022-09-29 09:21:56 +0300
committerJoseph Eagar <joeedh@gmail.com>2022-09-29 09:21:56 +0300
commitbbc69563d0704a8269318d8699e7c2bf4edc91c2 (patch)
tree7d9d0aa1f35597442f633c3b2d88ff4d2df704d4 /release
parenta4ff106c5864343dd40cc945a5bdc74ed22d4274 (diff)
Sculpt: Normal-based automasking modes
Two new normal-based automasking modes. The first mode, "brush", compares vertex normals with the initial normal at the beginning of the brush stroke. The second, "view", compares vertex normals with the view normal. If "occlusion" is on then rays will be shot from each vertex to test if it is occluded by other geometry (note: this can be very slow).\ Only geometry inside the sculpt mesh is considered. Each mode has an associated angular limit and a falloff. Reviewed by: Julien Kaspar and Jeroen Bakker Differential Revision: https://developer.blender.org/D15297 Ref D15297
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_ui/properties_paint_common.py17
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py2
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py15
3 files changed, 34 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index a4a328fce1a..72a87703bd5 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -945,10 +945,27 @@ def brush_settings_advanced(layout, context, brush, popover=False):
col.prop(brush, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
col.prop(brush, "use_automasking_cavity", text="Cavity")
col.prop(brush, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
+ col.prop(brush, "use_automasking_start_normal", text="Area Normal")
+ col.prop(brush, "use_automasking_view_normal", text="View Normal")
col.separator()
col.prop(brush, "automasking_boundary_edges_propagation_steps")
+ sculpt = context.tool_settings.sculpt
+
+ if brush.use_automasking_start_normal:
+ col.separator()
+
+ col.prop(sculpt, "automasking_start_normal_limit")
+ col.prop(sculpt, "automasking_start_normal_falloff")
+
+ if brush.use_automasking_view_normal:
+ col.separator()
+
+ col.prop(brush, "use_automasking_view_occlusion", text="Occlusion")
+ col.prop(sculpt, "automasking_view_normal_limit")
+ col.prop(sculpt, "automasking_view_normal_falloff")
+
if brush.use_automasking_cavity or brush.use_automasking_cavity_inverted:
col.separator()
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index fcf00ee80f6..ada2993a16f 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -5497,6 +5497,8 @@ class VIEW3D_MT_sculpt_automasking_pie(Menu):
pie.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
pie.prop(sculpt, "use_automasking_cavity", text="Cavity")
pie.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
+ pie.prop(sculpt, "use_automasking_start_normal", text="Area Normal")
+ pie.prop(sculpt, "use_automasking_view_normal", text="View Normal")
class VIEW3D_MT_sculpt_face_sets_edit_pie(Menu):
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index d18b75e78af..6946ab54ca7 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -974,6 +974,21 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel):
col.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
col.prop(sculpt, "use_automasking_cavity", text="Cavity")
col.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
+ col.prop(sculpt, "use_automasking_start_normal", text="Area Normal")
+ col.prop(sculpt, "use_automasking_view_normal", text="View Normal")
+
+ if sculpt.use_automasking_start_normal:
+ col.separator()
+
+ col.prop(sculpt, "automasking_start_normal_limit")
+ col.prop(sculpt, "automasking_start_normal_falloff")
+
+ if sculpt.use_automasking_view_normal:
+ col.separator()
+
+ col.prop(sculpt, "use_automasking_view_occlusion", text="Occlusion")
+ col.prop(sculpt, "automasking_view_normal_limit")
+ col.prop(sculpt, "automasking_view_normal_falloff")
col.separator()
col.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps")