34 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
38 {0,
nullptr, 0,
nullptr,
nullptr},
45 ICON_RESTRICT_VIEW_ON,
47 "Align strokes to current view plane"},
52 "Project strokes to plane locked to Y"},
57 "Project strokes to plane locked to X"},
58 {
GP_LOCKAXIS_Z,
"AXIS_Z", ICON_AXIS_TOP,
"Top (X-Y)",
"Project strokes to plane locked to Z"},
63 "Align strokes to current 3D cursor orientation"},
64 {0,
nullptr, 0,
nullptr,
nullptr},
72 "Paint using the active material base color"},
77 "Paint the material with a color attribute"},
78 {0,
nullptr, 0,
nullptr,
nullptr},
86 {0,
nullptr, 0,
nullptr,
nullptr},
98 {0,
nullptr, 0,
nullptr,
nullptr},
122const EnumPropertyItem rna_enum_particle_edit_disconnected_hair_brush_items[] = {
125 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
128 {0,
nullptr, 0,
nullptr,
nullptr},
134 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make paths longer or shorter"},
135 {0,
nullptr, 0,
nullptr,
nullptr},
143 brush = &pset->brush[pset->brushtype];
192static void rna_ParticleEdit_tool_set(
PointerRNA *
ptr,
int value)
198 Object *ob = pset->object;
205 pset->brushtype = value;
230 return rna_enum_particle_edit_disconnected_hair_brush_items;
237 return particle_edit_cache_brush_items;
244 return (pset->object && pset->scene &&
PE_get_current(
nullptr, pset->scene, pset->object));
253 return (edit && edit->
psys);
259static std::optional<std::string> rna_ParticleEdit_path(
const PointerRNA * )
261 return "tool_settings.particle_edit";
321static std::optional<std::string> rna_Sculpt_path(
const PointerRNA * )
323 return "tool_settings.sculpt";
326static std::optional<std::string> rna_VertexPaint_path(
const PointerRNA *
ptr)
331 return "tool_settings.vertex_paint";
333 return "tool_settings.weight_paint";
336static std::optional<std::string> rna_ImagePaintSettings_path(
const PointerRNA * )
338 return "tool_settings.image_paint";
341static std::optional<std::string> rna_PaintModeSettings_path(
const PointerRNA * )
343 return "tool_settings.paint_mode";
346static std::optional<std::string> rna_UvSculpt_path(
const PointerRNA * )
348 return "tool_settings.uv_sculpt";
351static std::optional<std::string> rna_CurvesSculpt_path(
const PointerRNA * )
353 return "tool_settings.curves_sculpt";
356static std::optional<std::string> rna_GpPaint_path(
const PointerRNA * )
358 return "tool_settings.gpencil_paint";
361static std::optional<std::string> rna_GpVertexPaint_path(
const PointerRNA * )
363 return "tool_settings.gpencil_vertex_paint";
366static std::optional<std::string> rna_GpSculptPaint_path(
const PointerRNA * )
368 return "tool_settings.gpencil_sculpt_paint";
371static std::optional<std::string> rna_GpWeightPaint_path(
const PointerRNA * )
373 return "tool_settings.gpencil_weight_paint";
376static std::optional<std::string> rna_ParticleBrush_path(
const PointerRNA * )
378 return "tool_settings.particle_edit.brush";
441static void rna_UvSculpt_curve_preset_set(
PointerRNA *
ptr,
int value)
447 1, 0.0f, 0.0f, 1.0f, 1.0f);
482static std::optional<std::string> rna_GPencilSculptSettings_path(
const PointerRNA * )
484 return "tool_settings.gpencil_sculpt";
487static std::optional<std::string> rna_GPencilSculptGuide_path(
const PointerRNA * )
489 return "tool_settings.gpencil_sculpt.guide";
492static void rna_Sculpt_automasking_invert_cavity_set(
PointerRNA *
ptr,
bool val)
505static void rna_Sculpt_automasking_cavity_set(
PointerRNA *
ptr,
bool val)
541 prop,
"rna_Paint_brush_get",
nullptr,
nullptr,
"rna_Paint_brush_poll");
548 "Brush Asset Reference",
549 "A weak reference to the matching brush asset, used e.g. to restore "
550 "the last used brush on file load");
556 "rna_Paint_eraser_brush_get",
557 "rna_Paint_eraser_brush_set",
559 "rna_Paint_eraser_brush_poll");
561 "Default Eraser Brush",
562 "Default eraser brush for quickly alternating with the main brush");
568 "Eraser Brush Asset Reference",
569 "A weak reference to the matching brush asset, used e.g. to restore "
570 "the last used brush on file load");
590 prop,
"Fast Navigate",
"For multires, show low resolution while navigating the view");
597 "Delay Viewport Updates",
598 "Update the geometry when it enters the view, providing faster view navigation");
619 "Symmetry Feathering",
620 "Reduce the strength of the brush where it overlaps symmetrical daubs");
639 prop,
"Tiling offset for the X Axis",
"Stride at which tiled strokes are copied");
664 "Subdivide long edges to add mesh detail where needed"},
669 "Collapse short edges to remove mesh detail where possible"},
671 "SUBDIVIDE_COLLAPSE",
673 "Subdivide Collapse",
674 "Both subdivide long edges and collapse short edges to refine mesh detail"},
675 {0,
nullptr, 0,
nullptr,
nullptr},
683 "Mesh detail is relative to the brush size and detail size"},
688 "Mesh detail is constant in world space according to detail size"},
693 "Mesh detail is relative to brush radius"},
698 "Mesh detail does not change on each stroke, only when using Flood Fill"},
699 {0,
nullptr, 0,
nullptr,
nullptr},
707 "Applies the transformation to all vertices in the mesh"},
712 "Applies the transformation simulating elasticity using the radius of the cursor"},
713 {0,
nullptr, 0,
nullptr,
nullptr},
730 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
751 "Use only deformation modifiers (temporary disable all "
752 "constructive modifiers except multi-resolution)");
761 prop,
"Detail Size",
"Maximum edge length for dynamic topology sculpting (in pixels)");
770 "Maximum edge length for dynamic topology sculpting (in brush percentage)");
779 "Maximum edge length for dynamic topology sculpting (as divisor "
780 "of Blender unit - higher value means smaller edge length)");
797 }
while ((++entry)->identifier);
806 "Distance where boundary edge automasking is going to protect vertices "
807 "from the fully masked edge");
846 "Affect only vertices with a similar normal to where the stroke starts");
852 prop,
"View Normal",
"Affect only vertices with a normal that faces the viewer");
861 "Only affect vertices that are not occluded by other faces (slower performance)");
874 prop,
"Area Normal Falloff",
"Extend the angular range with a falloff gradient");
887 prop,
"View Normal Falloff",
"Extend the angular range with a falloff gradient");
898 prop,
"Detail Refine Method",
"In dynamic-topology mode, how to add or remove mesh detail");
905 prop,
"Detail Type Method",
"In dynamic-topology mode, how mesh detail size is calculated");
918 prop,
"Transform Mode",
"How the transformation is going to be applied to the target");
924 prop,
"Orientation",
"Object whose Z axis defines orientation of gravity");
1038 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
1060 prop,
nullptr,
nullptr,
nullptr,
"rna_PaintModeSettings_canvas_image_poll");
1076 "Detect image slots from the material"},
1081 "Set image for texture painting directly"},
1082 {0,
nullptr, 0,
nullptr,
nullptr},
1091 "No interpolation (sample closest texel)"},
1092 {0,
nullptr, 0,
nullptr,
nullptr},
1112 prop,
"Occlude",
"Only paint onto the faces directly under the brush (slower)");
1171 "Use another UV map as clone source, otherwise use the 3D cursor as the source");
1179 prop,
"Bleed",
"Extend paint beyond the faces' UVs to reduce seams (in pixels, slower)");
1184 prop,
"Angle",
"Paint most on faces pointing towards the view according to this angle");
1193 "Size to capture the image for re-projecting",
1231 prop,
"Missing Texture",
"Image Painting does not have a texture to paint on");
1253 {
SCE_SELECT_PATH,
"PATH", ICON_PARTICLE_PATH,
"Path",
"Path edit mode"},
1254 {
SCE_SELECT_POINT,
"POINT", ICON_PARTICLE_POINT,
"Point",
"Point select mode"},
1255 {
SCE_SELECT_END,
"TIP", ICON_PARTICLE_TIP,
"Tip",
"Tip select mode"},
1256 {0,
nullptr, 0,
nullptr,
nullptr},
1260 {0,
"ADD", 0,
"Add",
"Make hairs more puffy"},
1261 {1,
"SUB", 0,
"Sub",
"Make hairs less puffy"},
1262 {0,
nullptr, 0,
nullptr,
nullptr},
1266 {0,
"GROW", 0,
"Grow",
"Make hairs longer"},
1267 {1,
"SHRINK", 0,
"Shrink",
"Make hairs shorter"},
1268 {0,
nullptr, 0,
nullptr,
nullptr},
1275 {0,
nullptr, 0,
nullptr,
nullptr},
1290 prop,
nullptr,
"rna_ParticleEdit_tool_set",
"rna_ParticleEdit_tool_itemf");
1317 prop,
"Emitter Distance",
"Distance to keep particles away from the emitter");
1322 prop,
"Fade Time",
"Fade paths and keys further away from current frame");
1339 prop,
"Interpolate",
"Interpolate new particles from the existing ones");
1431 "Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
1457 {
GP_GUIDE_CIRCULAR,
"CIRCULAR", 0,
"Circular",
"Use single point to create rings"},
1458 {
GP_GUIDE_RADIAL,
"RADIAL", 0,
"Radial",
"Use single point as direction"},
1460 {
GP_GUIDE_GRID,
"GRID", 0,
"Grid",
"Grid allows horizontal and vertical lines"},
1461 {
GP_GUIDE_ISO,
"ISO", 0,
"Isometric",
"Grid allows isometric and vertical lines"},
1462 {0,
nullptr, 0,
nullptr,
nullptr},
1469 {0,
nullptr, 0,
nullptr,
nullptr},
1483 prop,
"Use Snapping",
"Enable snapping to guides angle or spacing options");
1549 "GPencil Sculpt Settings",
1550 "General properties for Grease Pencil stroke sculpting tools");
1563 "Use falloff effect when edit in multiframe mode to compute brush effect by frame");
1576 prop,
"Scale Stroke Thickness",
"Scale the stroke thickness when transforming strokes");
1617 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(Scene *scene, Object *ob)
General operations, lookup, etc. for blender objects.
Brush * BKE_paint_eraser_brush(Paint *paint)
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
Brush * BKE_paint_brush(Paint *paint)
void BKE_paint_invalidate_overlay_all()
@ BKE_PARTICLE_BATCH_DIRTY_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)
#define BLT_I18NCONTEXT_AMOUNT
#define BLT_I18NCONTEXT_ID_CURVE_LEGACY
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
void DEG_id_tag_update(ID *id, unsigned int flags)
@ 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
@ IMAGEPAINT_MISSING_MATERIAL
@ IMAGEPAINT_MISSING_STENCIL
@ 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_PROJECT_LAYER_STENCIL_INV
@ IMAGEPAINT_PROJECT_BACKFACE
@ IMAGEPAINT_PROJECT_XRAY
@ IMAGEPAINT_PROJECT_LAYER_STENCIL
@ IMAGEPAINT_PROJECT_LAYER_CLONE
@ IMAGEPAINT_PROJECT_FLAT
#define IMAGEPAINT_MODE_IMAGE
#define IMAGEPAINT_MODE_MATERIAL
@ PAINT_SCULPT_DELAY_UPDATES
@ PAINT_SHOW_BRUSH_ON_SURFACE
@ PE_BRUSH_DATA_PUFF_VOLUME
@ PAINT_CANVAS_SOURCE_COLOR_ATTRIBUTE
@ PAINT_CANVAS_SOURCE_IMAGE
@ PAINT_CANVAS_SOURCE_MATERIAL
@ IMAGEPAINT_INTERP_LINEAR
@ IMAGEPAINT_INTERP_CLOSEST
@ GPPAINT_FLAG_USE_VERTEXCOLOR
@ GPPAINT_FLAG_USE_MATERIAL
@ VP_FLAG_VGROUP_RESTRICT
@ 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.
@ BMO_SYMMETRIZE_NEGATIVE_X
@ BMO_SYMMETRIZE_NEGATIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_Z
@ BMO_SYMMETRIZE_NEGATIVE_Z
@ BMO_SYMMETRIZE_POSITIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_X
BPy_StructRNA * depsgraph
const PointerRNA PointerRNA_NULL
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, 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[]
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
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_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_struct_clear_flag(StructRNA *srna, int flag)
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_translation_context(PropertyRNA *prop, const char *context)
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)