From 416aef4e13ccc30e82ecaa691f26af54dbd5ee7e Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 30 Jun 2022 15:09:13 +0200 Subject: 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 --- source/blender/makesdna/DNA_brush_enums.h | 11 +++++++++++ source/blender/makesdna/DNA_brush_types.h | 7 +++++++ 2 files changed, 18 insertions(+) (limited to 'source/blender/makesdna') diff --git a/source/blender/makesdna/DNA_brush_enums.h b/source/blender/makesdna/DNA_brush_enums.h index f2cd49b6dea..adda23c26f2 100644 --- a/source/blender/makesdna/DNA_brush_enums.h +++ b/source/blender/makesdna/DNA_brush_enums.h @@ -469,6 +469,11 @@ typedef enum eBrushCurvesSculptTool { CURVES_SCULPT_TOOL_ADD = 3, CURVES_SCULPT_TOOL_GROW_SHRINK = 4, CURVES_SCULPT_TOOL_SELECTION_PAINT = 5, + CURVES_SCULPT_TOOL_PINCH = 6, + CURVES_SCULPT_TOOL_SMOOTH = 7, + CURVES_SCULPT_TOOL_PUFF = 8, + CURVES_SCULPT_TOOL_DENSITY = 9, + CURVES_SCULPT_TOOL_SLIDE = 10, } eBrushCurvesSculptTool; /** When #BRUSH_ACCUMULATE is used */ @@ -622,6 +627,12 @@ typedef enum eBrushCurvesSculptFlag { BRUSH_CURVES_SCULPT_FLAG_INTERPOLATE_POINT_COUNT = (1 << 4), } eBrushCurvesSculptFlag; +typedef enum eBrushCurvesSculptDensityMode { + BRUSH_CURVES_SCULPT_DENSITY_MODE_AUTO = 0, + BRUSH_CURVES_SCULPT_DENSITY_MODE_ADD = 1, + BRUSH_CURVES_SCULPT_DENSITY_MODE_REMOVE = 2, +} eBrushCurvesSculptDensityMode; + #define MAX_BRUSH_PIXEL_RADIUS 500 #define GP_MAX_BRUSH_PIXEL_RADIUS 1000 diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index d13496b21f7..b24bb786593 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -148,6 +148,13 @@ typedef struct BrushCurvesSculptSettings { float minimum_length; /** Length of newly added curves when it is not interpolated from other curves. */ float curve_length; + /** Minimum distance between curve root points used by the Density brush. */ + float minimum_distance; + /** How often the Density brush tries to add a new curve. */ + int density_add_attempts; + /** #eBrushCurvesSculptDensityMode. */ + uint8_t density_mode; + char _pad[7]; } BrushCurvesSculptSettings; typedef struct Brush { -- cgit v1.2.3