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:
authorJacques Lucke <jacques@blender.org>2022-06-30 16:09:13 +0300
committerJacques Lucke <jacques@blender.org>2022-06-30 16:09:13 +0300
commit416aef4e13ccc30e82ecaa691f26af54dbd5ee7e (patch)
treea4f8e3b96e01031e5f8049b48043ed3208bfe168 /release
parent0f22b5599a03d5ce61450528c74ad2f2e47cf913 (diff)
Curves: New tools for curves sculpt mode.
This commit contains various new features for curves sculpt mode that have been developed in parallel. * Selection: * Operator to select points/curves randomly. * Operator to select endpoints of curves. * Operator to grow/shrink an existing selection. * New Brushes: * Pinch: Moves points towards the brush center. * Smooth: Makes individual curves straight without changing the root or tip position. * Puff: Makes curves stand up, aligning them with the surface normal. * Density: Add or remove curves to achieve a certain density defined by a minimum distance value. * Slide: Move root points on the surface. Differential Revision: https://developer.blender.org/D15134
Diffstat (limited to 'release')
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py1
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_toolbar.py50
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py28
3 files changed, 79 insertions, 0 deletions
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 623ca2340d1..d12d68ee5a0 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -5624,6 +5624,7 @@ def km_sculpt_curves(params):
("curves.disable_selection", {"type": 'TWO', "value": 'PRESS', "alt": True}, None),
*_template_paint_radial_control("curves_sculpt"),
*_template_items_select_actions(params, "sculpt_curves.select_all"),
+ ("sculpt_curves.min_distance_edit", {"type": 'R', "value": 'PRESS', "shift": True}, {}),
])
return keymap
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 5831aa52cc1..9f7ca89b8c9 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -2377,6 +2377,51 @@ class _defs_curves_sculpt:
data_block='GROW_SHRINK'
)
+ @ToolDef.from_fn
+ def pinch():
+ return dict(
+ idname="builtin_brush.pinch",
+ label="Pinch",
+ icon="ops.curves.sculpt_pinch",
+ data_block='PINCH'
+ )
+
+ @ToolDef.from_fn
+ def smooth():
+ return dict(
+ idname="builtin_brush.smooth",
+ label="Smooth",
+ icon="ops.curves.sculpt_smooth",
+ data_block='SMOOTH'
+ )
+
+ @ToolDef.from_fn
+ def puff():
+ return dict(
+ idname="builtin_brush.puff",
+ label="Puff",
+ icon="ops.curves.sculpt_puff",
+ data_block='PUFF'
+ )
+
+ @ToolDef.from_fn
+ def density():
+ return dict(
+ idname="builtin_brush.density",
+ label="Density",
+ icon="ops.curves.sculpt_density",
+ data_block="DENSITY"
+ )
+
+ @ToolDef.from_fn
+ def slide():
+ return dict(
+ idname="builtin_brush.slide",
+ label="Slide",
+ icon="ops.curves.sculpt_slide",
+ data_block="SLIDE"
+ )
+
class _defs_gpencil_vertex:
@@ -3140,6 +3185,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
_defs_curves_sculpt.delete,
_defs_curves_sculpt.snake_hook,
_defs_curves_sculpt.grow_shrink,
+ _defs_curves_sculpt.pinch,
+ _defs_curves_sculpt.smooth,
+ _defs_curves_sculpt.puff,
+ _defs_curves_sculpt.density,
+ _defs_curves_sculpt.slide,
None,
*_tools_annotate,
],
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 411bad65991..c2342e8949a 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -535,6 +535,31 @@ class _draw_tool_settings_context_mode:
layout.prop(brush, "direction", expand=True, text="")
layout.prop(brush, "falloff_shape", expand=True)
layout.popover("VIEW3D_PT_tools_brush_falloff")
+ elif curves_tool == 'PINCH':
+ layout.prop(brush, "direction", expand=True, text="")
+ layout.prop(brush, "falloff_shape", expand=True)
+ layout.popover("VIEW3D_PT_tools_brush_falloff")
+ elif curves_tool == 'SMOOTH':
+ layout.prop(brush, "falloff_shape", expand=True)
+ layout.popover("VIEW3D_PT_tools_brush_falloff")
+ elif curves_tool == 'PUFF':
+ layout.prop(brush, "falloff_shape", expand=True)
+ layout.popover("VIEW3D_PT_tools_brush_falloff")
+ elif curves_tool == 'DENSITY':
+ layout.prop(brush, "falloff_shape", expand=True)
+ row = layout.row(align=True)
+ row.prop(brush.curves_sculpt_settings, "density_mode", text="", expand=True)
+ row = layout.row(align=True)
+ row.prop(brush.curves_sculpt_settings, "minimum_distance")
+ row.operator_context = 'INVOKE_REGION_WIN'
+ row.operator("sculpt_curves.min_distance_edit", text="", icon='DRIVER_DISTANCE')
+ row = layout.row(align=True)
+ row.enabled = brush.curves_sculpt_settings.density_mode != 'REMOVE'
+ row.prop(brush.curves_sculpt_settings, "density_add_attempts", text="Max Count")
+ layout.popover("VIEW3D_PT_tools_brush_falloff")
+ layout.popover("VIEW3D_PT_curves_sculpt_add_shape", text="Curve Shape")
+ elif curves_tool == "SLIDE":
+ layout.popover("VIEW3D_PT_tools_brush_falloff")
class VIEW3D_HT_header(Header):
@@ -2005,6 +2030,9 @@ class VIEW3D_MT_select_sculpt_curves(Menu):
layout.operator("sculpt_curves.select_all", text="All").action = 'SELECT'
layout.operator("sculpt_curves.select_all", text="None").action = 'DESELECT'
layout.operator("sculpt_curves.select_all", text="Invert").action = 'INVERT'
+ layout.operator("sculpt_curves.select_random", text="Random")
+ layout.operator("sculpt_curves.select_end", text="Endpoints")
+ layout.operator("sculpt_curves.select_grow", text="Grow")
class VIEW3D_MT_angle_control(Menu):