42 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
46 {0,
nullptr, 0,
nullptr,
nullptr},
53 ICON_RESTRICT_VIEW_ON,
55 "Align strokes to current view plane"},
60 "Project strokes to plane locked to Y"},
65 "Project strokes to plane locked to X"},
66 {
GP_LOCKAXIS_Z,
"AXIS_Z", ICON_AXIS_TOP,
"Top (X-Y)",
"Project strokes to plane locked to Z"},
71 "Align strokes to current 3D cursor orientation"},
72 {0,
nullptr, 0,
nullptr,
nullptr},
80 "Paint using the active material base color"},
85 "Paint the material with a color attribute"},
86 {0,
nullptr, 0,
nullptr,
nullptr},
94 {0,
nullptr, 0,
nullptr,
nullptr},
106 {0,
nullptr, 0,
nullptr,
nullptr},
126const EnumPropertyItem rna_enum_particle_edit_disconnected_hair_brush_items[] = {
129 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
132 {0,
nullptr, 0,
nullptr,
nullptr},
138 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make paths longer or shorter"},
139 {0,
nullptr, 0,
nullptr,
nullptr},
147 brush = &pset->brush[pset->brushtype];
196static void rna_ParticleEdit_tool_set(
PointerRNA *
ptr,
int value)
202 Object *ob = pset->object;
209 pset->brushtype = value;
234 return rna_enum_particle_edit_disconnected_hair_brush_items;
241 return particle_edit_cache_brush_items;
248 return (pset->object && pset->scene &&
PE_get_current(
nullptr, pset->scene, pset->object));
257 return (edit && edit->
psys);
263static std::optional<std::string> rna_ParticleEdit_path(
const PointerRNA * )
265 return "tool_settings.particle_edit";
281 Brush *brush =
static_cast<Brush *
>(value.data);
289 const Brush *brush =
static_cast<Brush *
>(value.data);
307 Brush *brush =
static_cast<Brush *
>(value.data);
315 const Brush *brush =
static_cast<Brush *
>(value.data);
333static std::optional<std::string> rna_Sculpt_path(
const PointerRNA * )
335 return "tool_settings.sculpt";
338static std::optional<std::string> rna_VertexPaint_path(
const PointerRNA *
ptr)
343 return "tool_settings.vertex_paint";
345 return "tool_settings.weight_paint";
348static std::optional<std::string> rna_ImagePaintSettings_path(
const PointerRNA * )
350 return "tool_settings.image_paint";
353static std::optional<std::string> rna_PaintModeSettings_path(
const PointerRNA * )
355 return "tool_settings.paint_mode";
358static std::optional<std::string> rna_UvSculpt_path(
const PointerRNA * )
360 return "tool_settings.uv_sculpt";
363static std::optional<std::string> rna_CurvesSculpt_path(
const PointerRNA * )
365 return "tool_settings.curves_sculpt";
368static std::optional<std::string> rna_GpPaint_path(
const PointerRNA * )
370 return "tool_settings.gpencil_paint";
373static std::optional<std::string> rna_GpVertexPaint_path(
const PointerRNA * )
375 return "tool_settings.gpencil_vertex_paint";
378static std::optional<std::string> rna_GpSculptPaint_path(
const PointerRNA * )
380 return "tool_settings.gpencil_sculpt_paint";
383static std::optional<std::string> rna_GpWeightPaint_path(
const PointerRNA * )
385 return "tool_settings.gpencil_weight_paint";
388static std::optional<std::string> rna_ParticleBrush_path(
const PointerRNA * )
390 return "tool_settings.particle_edit.brush";
443 Image *ima = scene->toolsettings->imapaint.canvas;
453static void rna_UvSculpt_curve_preset_set(
PointerRNA *
ptr,
int value)
457 if (!scene->toolsettings->uvsculpt.strength_curve) {
459 1, 0.0f, 0.0f, 1.0f, 1.0f);
462 scene->toolsettings->uvsculpt.curve_preset =
int8_t(value);
494static std::optional<std::string> rna_GPencilSculptSettings_path(
const PointerRNA * )
496 return "tool_settings.gpencil_sculpt";
499static std::optional<std::string> rna_GPencilSculptGuide_path(
const PointerRNA * )
501 return "tool_settings.gpencil_sculpt.guide";
504static void rna_Sculpt_automasking_invert_cavity_set(
PointerRNA *
ptr,
bool val)
509 sd->automasking_flags &= ~BRUSH_AUTOMASKING_CAVITY_NORMAL;
513 sd->automasking_flags &= ~BRUSH_AUTOMASKING_CAVITY_INVERTED;
517static void rna_Sculpt_automasking_cavity_set(
PointerRNA *
ptr,
bool val)
522 sd->automasking_flags &= ~BRUSH_AUTOMASKING_CAVITY_INVERTED;
526 sd->automasking_flags &= ~BRUSH_AUTOMASKING_CAVITY_NORMAL;
553 prop,
"rna_Paint_brush_get",
"rna_Paint_brush_set",
nullptr,
"rna_Paint_brush_poll");
560 "Brush Asset Reference",
561 "A weak reference to the matching brush asset, used e.g. to restore "
562 "the last used brush on file load");
568 "rna_Paint_eraser_brush_get",
569 "rna_Paint_eraser_brush_set",
571 "rna_Paint_eraser_brush_poll");
573 "Default Eraser Brush",
574 "Default eraser brush for quickly alternating with the main brush");
580 "Eraser Brush Asset Reference",
581 "A weak reference to the matching brush asset, used e.g. to restore "
582 "the last used brush on file load");
602 prop,
"Fast Navigate",
"For multires, show low resolution while navigating the view");
609 "Delay Viewport Updates",
610 "Update the geometry when it enters the view, providing faster view navigation");
631 "Symmetry Feathering",
632 "Reduce the strength of the brush where it overlaps symmetrical daubs");
651 prop,
"Tiling offset for the X Axis",
"Stride at which tiled strokes are copied");
676 "Subdivide long edges to add mesh detail where needed"},
681 "Collapse short edges to remove mesh detail where possible"},
683 "SUBDIVIDE_COLLAPSE",
685 "Subdivide Collapse",
686 "Both subdivide long edges and collapse short edges to refine mesh detail"},
687 {0,
nullptr, 0,
nullptr,
nullptr},
695 "Mesh detail is relative to the brush size and detail size"},
700 "Mesh detail is constant in world space according to detail size"},
705 "Mesh detail is relative to brush radius"},
710 "Mesh detail does not change on each stroke, only when using Flood Fill"},
711 {0,
nullptr, 0,
nullptr,
nullptr},
719 "Applies the transformation to all vertices in the mesh"},
724 "Applies the transformation simulating elasticity using the radius of the cursor"},
725 {0,
nullptr, 0,
nullptr,
nullptr},
741 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
762 "Use only deformation modifiers (temporary disable all "
763 "constructive modifiers except multi-resolution)");
772 prop,
"Detail Size",
"Maximum edge length for dynamic topology sculpting (in pixels)");
781 "Maximum edge length for dynamic topology sculpting (in brush percenage)");
790 "Maximum edge length for dynamic topology sculpting (as divisor "
791 "of Blender unit - higher value means smaller edge length)");
808 }
while ((++entry)->identifier);
817 "Distance where boundary edge automasking is going to protect vertices "
818 "from the fully masked edge");
857 "Affect only vertices with a similar normal to where the stroke starts");
863 prop,
"View Normal",
"Affect only vertices with a normal that faces the viewer");
872 "Only affect vertices that are not occluded by other faces (Slower performance)");
885 prop,
"Area Normal Falloff",
"Extend the angular range with a falloff gradient");
898 prop,
"View Normal Falloff",
"Extend the angular range with a falloff gradient");
909 prop,
"Detail Refine Method",
"In dynamic-topology mode, how to add or remove mesh detail");
916 prop,
"Detail Type Method",
"In dynamic-topology mode, how mesh detail size is calculated");
929 prop,
"Transform Mode",
"How the transformation is going to be applied to the target");
935 prop,
"Orientation",
"Object whose Z axis defines orientation of gravity");
1041 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
1062 prop,
nullptr,
nullptr,
nullptr,
"rna_PaintModeSettings_canvas_image_poll");
1078 "Detect image slots from the material"},
1083 "Set image for texture painting directly"},
1084 {0,
nullptr, 0,
nullptr,
nullptr},
1093 "No interpolation (sample closest texel)"},
1094 {0,
nullptr, 0,
nullptr,
nullptr},
1113 prop,
"Occlude",
"Only paint onto the faces directly under the brush (slower)");
1172 "Use another UV map as clone source, otherwise use the 3D cursor as the source");
1180 prop,
"Bleed",
"Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
1185 prop,
"Angle",
"Paint most on faces pointing towards the view according to this angle");
1194 "Size to capture the image for re-projecting",
1232 prop,
"Missing Texture",
"Image Painting does not have a texture to paint on");
1242 {
SCE_SELECT_PATH,
"PATH", ICON_PARTICLE_PATH,
"Path",
"Path edit mode"},
1243 {
SCE_SELECT_POINT,
"POINT", ICON_PARTICLE_POINT,
"Point",
"Point select mode"},
1244 {
SCE_SELECT_END,
"TIP", ICON_PARTICLE_TIP,
"Tip",
"Tip select mode"},
1245 {0,
nullptr, 0,
nullptr,
nullptr},
1249 {0,
"ADD", 0,
"Add",
"Make hairs more puffy"},
1250 {1,
"SUB", 0,
"Sub",
"Make hairs less puffy"},
1251 {0,
nullptr, 0,
nullptr,
nullptr},
1255 {0,
"GROW", 0,
"Grow",
"Make hairs longer"},
1256 {1,
"SHRINK", 0,
"Shrink",
"Make hairs shorter"},
1257 {0,
nullptr, 0,
nullptr,
nullptr},
1264 {0,
nullptr, 0,
nullptr,
nullptr},
1278 prop,
nullptr,
"rna_ParticleEdit_tool_set",
"rna_ParticleEdit_tool_itemf");
1304 prop,
"Emitter Distance",
"Distance to keep particles away from the emitter");
1309 prop,
"Fade Time",
"Fade paths and keys further away from current frame");
1326 prop,
"Interpolate",
"Interpolate new particles from the existing ones");
1417 "Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
1443 {
GP_GUIDE_CIRCULAR,
"CIRCULAR", 0,
"Circular",
"Use single point to create rings"},
1444 {
GP_GUIDE_RADIAL,
"RADIAL", 0,
"Radial",
"Use single point as direction"},
1446 {
GP_GUIDE_GRID,
"GRID", 0,
"Grid",
"Grid allows horizontal and vertical lines"},
1447 {
GP_GUIDE_ISO,
"ISO", 0,
"Isometric",
"Grid allows isometric and vertical lines"},
1448 {0,
nullptr, 0,
nullptr,
nullptr},
1455 {0,
nullptr, 0,
nullptr,
nullptr},
1469 prop,
"Use Snapping",
"Enable snapping to guides angle or spacing options");
1535 "GPencil Sculpt Settings",
1536 "General properties for Grease Pencil stroke sculpting tools");
1548 "Use falloff effect when edit in multiframe mode to compute brush effect by frame");
1561 prop,
"Scale Stroke Thickness",
"Scale the stroke thickness when transforming strokes");
1602 prop,
"Curve",
"Custom curve to control falloff of brush effect by Grease Pencil frames");
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
General operations, lookup, etc. for materials.
void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob)
General operations, lookup, etc. for blender objects.
Brush * BKE_paint_eraser_brush(Paint *paint)
bool BKE_paint_brush_set(Paint *paint, Brush *brush)
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
Brush * BKE_paint_brush(Paint *paint)
void BKE_paint_invalidate_overlay_all()
struct ParticleSystem * psys_get_current(struct Object *ob)
void psys_free_path_cache(struct ParticleSystem *psys, struct PTCacheEdit *edit)
void BKE_particle_batch_cache_dirty_tag(struct ParticleSystem *psys, int mode)
@ BKE_PARTICLE_BATCH_DIRTY_ALL
void DEG_id_tag_update(ID *id, unsigned int flags)
ID and Library types, which are fundamental for SDNA.
@ BRUSH_AUTOMASKING_BRUSH_NORMAL
@ BRUSH_AUTOMASKING_CAVITY_NORMAL
@ BRUSH_AUTOMASKING_VIEW_OCCLUSION
@ BRUSH_AUTOMASKING_VIEW_NORMAL
@ BRUSH_AUTOMASKING_CAVITY_INVERTED
#define MAX_BRUSH_PIXEL_RADIUS
#define AUTOMASKING_BOUNDARY_EDGES_MAX_PROPAGATION_STEPS
@ SCULPT_DYNTOPO_SUBDIVIDE
@ SCULPT_DYNTOPO_DETAIL_MANUAL
@ SCULPT_DYNTOPO_DETAIL_CONSTANT
@ SCULPT_DYNTOPO_COLLAPSE
@ SCULPT_DYNTOPO_DETAIL_BRUSH
@ GP_SCULPT_SETT_FLAG_PRIMITIVE_CURVE
@ GP_SCULPT_SETT_FLAG_FRAME_FALLOFF
@ GP_SCULPT_SETT_FLAG_AUTOMASK_LAYER_ACTIVE
@ GP_SCULPT_SETT_FLAG_AUTOMASK_STROKE
@ GP_SCULPT_SETT_FLAG_AUTOMASK_MATERIAL_STROKE
@ GP_SCULPT_SETT_FLAG_AUTOMASK_MATERIAL_ACTIVE
@ GP_SCULPT_SETT_FLAG_SCALE_THICKNESS
@ GP_SCULPT_SETT_FLAG_AUTOMASK_LAYER_STROKE
@ IMAGEPAINT_INTERP_LINEAR
@ IMAGEPAINT_INTERP_CLOSEST
#define IMAGEPAINT_MODE_IMAGE
@ GPPAINT_FLAG_USE_VERTEXCOLOR
@ GPPAINT_FLAG_USE_MATERIAL
@ PE_BRUSH_DATA_PUFF_VOLUME
#define IMAGEPAINT_MODE_MATERIAL
@ PAINT_SCULPT_DELAY_UPDATES
@ PAINT_SHOW_BRUSH_ON_SURFACE
@ VP_FLAG_VGROUP_RESTRICT
@ IMAGEPAINT_PROJECT_LAYER_STENCIL_INV
@ IMAGEPAINT_PROJECT_BACKFACE
@ IMAGEPAINT_PROJECT_XRAY
@ IMAGEPAINT_PROJECT_LAYER_STENCIL
@ IMAGEPAINT_PROJECT_LAYER_CLONE
@ IMAGEPAINT_PROJECT_FLAT
@ PAINT_CANVAS_SOURCE_COLOR_ATTRIBUTE
@ PAINT_CANVAS_SOURCE_IMAGE
@ PAINT_CANVAS_SOURCE_MATERIAL
@ IMAGEPAINT_MISSING_MATERIAL
@ IMAGEPAINT_MISSING_STENCIL
@ SCULPT_TRANSFORM_MODE_RADIUS_ELASTIC
@ SCULPT_TRANSFORM_MODE_ALL_VERTICES
void ED_space_image_sync(Main *bmain, Image *image, bool ignore_render_viewer)
bool ED_paint_proj_mesh_data_check(Scene &scene, Object &ob, bool *r_has_uvs, bool *r_has_mat, bool *r_has_tex, bool *r_has_stencil)
PTCacheEdit * PE_get_current(Depsgraph *depsgraph, Scene *scene, Object *ob)
Read Guarded memory(de)allocation.
constexpr PointerRNA PointerRNA_NULL
@ BMO_SYMMETRIZE_NEGATIVE_X
@ BMO_SYMMETRIZE_NEGATIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_Z
@ BMO_SYMMETRIZE_NEGATIVE_Z
@ BMO_SYMMETRIZE_POSITIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_X
const Depsgraph * depsgraph
PointerRNA rna_pointer_inherit_refine(const PointerRNA *ptr, StructRNA *type, void *data)
PointerRNA RNA_id_pointer_create(ID *id)
const EnumPropertyItem rna_enum_brush_automasking_flag_items[]
const EnumPropertyItem rna_enum_brush_curve_preset_items[]
PropertyRNA * RNA_def_int_array(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_define_animate_sdna(bool animate)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_int_default(PropertyRNA *prop, int value)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_ui_scale_type(PropertyRNA *prop, PropertyScaleType ui_scale_type)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
static void rna_def_uv_sculpt(BlenderRNA *brna)
void RNA_def_sculpt_paint(BlenderRNA *brna)
const EnumPropertyItem rna_enum_symmetrize_direction_items[]
static void rna_def_paint(BlenderRNA *brna)
static const EnumPropertyItem rna_enum_gpencil_lock_axis_items[]
static const EnumPropertyItem rna_enum_gpencil_paint_mode[]
static void rna_def_sculpt(BlenderRNA *brna)
const EnumPropertyItem rna_enum_particle_edit_hair_brush_items[]
static void rna_def_gp_paint(BlenderRNA *brna)
static void rna_def_gp_sculptpaint(BlenderRNA *brna)
static void rna_def_vertex_paint(BlenderRNA *brna)
static void rna_def_curves_sculpt(BlenderRNA *brna)
static const EnumPropertyItem rna_enum_canvas_source_items[]
static void rna_def_paint_mode(BlenderRNA *brna)
static void rna_def_gp_weightpaint(BlenderRNA *brna)
static void rna_def_gp_vertexpaint(BlenderRNA *brna)
static void rna_def_image_paint(BlenderRNA *brna)
static void rna_def_paint_curve(BlenderRNA *brna)
static void rna_def_gpencil_sculpt(BlenderRNA *brna)
static void rna_def_particle_edit(BlenderRNA *brna)
static void rna_def_gpencil_guides(BlenderRNA *brna)
struct ParticleSystem * psys
struct Paint_Runtime runtime
struct ToolSettings * toolsettings
struct CurveMapping * strength_curve
void WM_main_add_notifier(uint type, void *reference)