53 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
64 ICON_RESTRICT_VIEW_ON,
66 "Align strokes to current view plane"},
71 "Project strokes to plane locked to Y"},
76 "Project strokes to plane locked to X"},
77 {
GP_LOCKAXIS_Z,
"AXIS_Z", ICON_AXIS_TOP,
"Top (X-Y)",
"Project strokes to plane locked to Z"},
82 "Align strokes to current 3D cursor orientation"},
91 "Paint using the active material base color"},
96 "Paint the material with custom vertex color"},
139 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
148 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make paths longer or shorter"},
202 static void rna_ParticleEdit_tool_set(
PointerRNA *
ptr,
int value)
245 return particle_edit_cache_brush_items;
261 return (edit && edit->
psys);
269 return BLI_strdup(
"tool_settings.particle_edit");
281 if (brush->
ob_mode & ob_mode) {
295 static bool paint_contains_brush_slot(
const Paint *paint,
const PaintToolSlot *tslot,
int *r_index)
313 if (paint_contains_brush_slot(&ts->imapaint.paint, tslot, &slot_index)) {
319 else if (paint_contains_brush_slot(&ts->sculpt->paint, tslot, &slot_index)) {
325 else if (paint_contains_brush_slot(&ts->uvsculpt->paint, tslot, &slot_index)) {
331 else if (paint_contains_brush_slot(&ts->vpaint->paint, tslot, &slot_index)) {
337 else if (paint_contains_brush_slot(&ts->wpaint->paint, tslot, &slot_index)) {
343 else if (paint_contains_brush_slot(&ts->gp_paint->paint, tslot, &slot_index)) {
349 else if (paint_contains_brush_slot(&ts->gp_vertexpaint->paint, tslot, &slot_index)) {
355 else if (paint_contains_brush_slot(&ts->gp_sculptpaint->paint, tslot, &slot_index)) {
361 else if (paint_contains_brush_slot(&ts->gp_weightpaint->paint, tslot, &slot_index)) {
415 return BLI_strdup(
"tool_settings.vertex_paint");
418 return BLI_strdup(
"tool_settings.weight_paint");
424 return BLI_strdup(
"tool_settings.image_paint");
434 return BLI_strdup(
"tool_settings.gpencil_paint");
439 return BLI_strdup(
"tool_settings.gpencil_vertex_paint");
444 return BLI_strdup(
"tool_settings.gpencil_sculpt_paint");
449 return BLI_strdup(
"tool_settings.gpencil_weight_paint");
454 return BLI_strdup(
"tool_settings.particle_edit.brush");
467 static void rna_ImaPaint_viewport_update(
Main *
UNUSED(bmain),
518 for (slink =
area->spacedata.first; slink; slink = slink->
next) {
543 return BLI_strdup(
"tool_settings.gpencil_sculpt");
548 return BLI_strdup(
"tool_settings.gpencil_sculpt.guide");
618 prop,
"Fast Navigate",
"For multires, show low resolution while navigating the view");
625 "Delay Viewport Updates",
626 "Update the geometry when it enters the view, providing faster view navigation");
633 prop,
"Input Samples",
"Average multiple input samples together to smooth the brush stroke");
654 "Symmetry Feathering",
655 "Reduce the strength of the brush where it overlaps symmetrical daubs");
674 prop,
"Tiling offset for the X Axis",
"Stride at which tiled strokes are copied");
699 "Subdivide long edges to add mesh detail where needed"},
704 "Collapse short edges to remove mesh detail where possible"},
706 "SUBDIVIDE_COLLAPSE",
708 "Subdivide Collapse",
709 "Both subdivide long edges and collapse short edges to refine mesh detail"},
718 "Mesh detail is relative to the brush size and detail size"},
723 "Mesh detail is constant in world space according to detail size"},
728 "Mesh detail is relative to brush radius"},
733 "Mesh detail does not change on each stroke, only when using Flood Fill"},
750 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
771 "Use only deformation modifiers (temporary disable all "
772 "constructive modifiers except multi-resolution)");
791 prop,
"Detail Size",
"Maximum edge length for dynamic topology sculpting (in pixels)");
799 "Maximum edge length for dynamic topology sculpting (in brush percenage)");
808 "Maximum edge length for dynamic topology sculpting (as divisor "
809 "of blender unit - higher value means smaller edge length)");
816 "Show faces in dynamic-topology mode with smooth "
817 "shading rather than flat shaded");
824 "Topology Auto-Masking",
825 "Affect only vertices connected to the active vertex under the brush");
831 "Face Sets Auto-Masking",
832 "Affect only vertices that share Face Sets with the active vertex");
838 prop,
"Mesh Boundary Auto-Masking",
"Do not affect non manifold boundary edges");
845 "Face Sets Boundary Auto-Masking",
846 "Do not affect vertices that belong to a Face Set boundary");
857 prop,
"Detail Refine Method",
"In dynamic-topology mode, how to add or remove mesh detail");
864 prop,
"Detail Type Method",
"In dynamic-topology mode, how mesh detail size is calculated");
877 prop,
"Orientation",
"Object whose Z axis defines orientation of gravity");
959 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
973 "Detect image slots from the material"},
978 "Set image for texture painting directly"},
988 "No interpolation (sample closest texel)"},
1008 prop,
"Occlude",
"Only paint onto the faces directly under the brush (slower)");
1064 "Use another UV map as clone source, otherwise use the 3D cursor as the source");
1072 prop,
"Bleed",
"Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
1077 prop,
"Angle",
"Paint most on faces pointing towards the view according to this angle");
1086 "Size to capture the image for re-projecting",
1124 prop,
"Missing Texture",
"Image Painting does not have a texture to paint on");
1134 {
SCE_SELECT_PATH,
"PATH", ICON_PARTICLE_PATH,
"Path",
"Path edit mode"},
1135 {
SCE_SELECT_POINT,
"POINT", ICON_PARTICLE_POINT,
"Point",
"Point select mode"},
1136 {
SCE_SELECT_END,
"TIP", ICON_PARTICLE_TIP,
"Tip",
"Tip select mode"},
1141 {0,
"ADD", 0,
"Add",
"Make hairs more puffy"},
1142 {1,
"SUB", 0,
"Sub",
"Make hairs less puffy"},
1147 {0,
"GROW", 0,
"Grow",
"Make hairs longer"},
1148 {1,
"SHRINK", 0,
"Shrink",
"Make hairs shorter"},
1170 prop,
NULL,
"rna_ParticleEdit_tool_set",
"rna_ParticleEdit_tool_itemf");
1196 prop,
"Emitter Distance",
"Distance to keep particles away from the emitter");
1201 prop,
"Fade Time",
"Fade paths and keys further away from current frame");
1218 prop,
"Interpolate",
"Interpolate new particles from the existing ones");
1308 "Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
1334 {
GP_GUIDE_CIRCULAR,
"CIRCULAR", 0,
"Circular",
"Use single point to create rings"},
1335 {
GP_GUIDE_RADIAL,
"RADIAL", 0,
"Radial",
"Use single point as direction"},
1337 {
GP_GUIDE_GRID,
"GRID", 0,
"Grid",
"Grid allows horizontal and vertical lines"},
1338 {
GP_GUIDE_ISO,
"ISO", 0,
"Isometric",
"Grid allows isometric and vertical lines"},
1360 prop,
"Use Snapping",
"Enable snapping to guides angle or spacing options");
1419 {0,
"ADD", ICON_ADD,
"Add",
"Add effect of brush"},
1434 "GPencil Sculpt Settings",
1435 "General properties for Grease Pencil stroke sculpting tools");
1447 "Use falloff effect when edit in multiframe mode to compute brush effect by frame");
1460 prop,
"Scale Stroke Thickness",
"Scale the stroke thickness when transforming strokes");
1469 prop,
"Curve",
"Custom curve to control falloff of brush effect by Grease Pencil frames");
#define BKE_brush_tool_get(brush, p)
struct Scene * CTX_data_scene(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
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.
void BKE_paint_toolslots_brush_update(struct Paint *paint)
void BKE_paint_invalidate_overlay_all(void)
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
A BVH for high poly meshes.
void pbvh_show_mask_set(PBVH *pbvh, bool show_mask)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
#define UNUSED_VARS_NDEBUG(...)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
ID and Library types, which are fundamental for sdna.
@ ID_RECALC_COPY_ON_WRITE
@ BRUSH_AUTOMASKING_BOUNDARY_EDGES
@ BRUSH_AUTOMASKING_BOUNDARY_FACE_SETS
@ BRUSH_AUTOMASKING_FACE_SETS
@ BRUSH_AUTOMASKING_TOPOLOGY
#define MAX_BRUSH_PIXEL_RADIUS
#define IMAGEPAINT_PROJECT_FLAT
#define IMAGEPAINT_PROJECT_LAYER_STENCIL
#define PE_BRUSH_DATA_PUFF_VOLUME
#define OBEDIT_FROM_OBACT(ob)
@ SCULPT_DYNTOPO_SUBDIVIDE
@ SCULPT_DYNTOPO_DETAIL_MANUAL
@ SCULPT_DYNTOPO_DETAIL_CONSTANT
@ SCULPT_DYNTOPO_COLLAPSE
@ SCULPT_DYNTOPO_SMOOTH_SHADING
@ SCULPT_DYNTOPO_DETAIL_BRUSH
@ GP_SCULPT_SETT_FLAG_PRIMITIVE_CURVE
@ GP_SCULPT_SETT_FLAG_FRAME_FALLOFF
@ GP_SCULPT_SETT_FLAG_SCALE_THICKNESS
#define IMAGEPAINT_PROJECT_XRAY
#define IMAGEPAINT_PROJECT_LAYER_CLONE
#define PE_DEFLECT_EMITTER
@ VP_FLAG_VGROUP_RESTRICT
@ PAINT_SCULPT_DELAY_UPDATES
@ PAINT_SHOW_BRUSH_ON_SURFACE
@ IMAGEPAINT_MODE_MATERIAL
#define PE_INTERPOLATE_ADDED
#define OBACT(_view_layer)
#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV
#define PAINT_MAX_INPUT_SAMPLES
#define IMAGEPAINT_MISSING_STENCIL
@ GPPAINT_FLAG_USE_VERTEXCOLOR
@ GPPAINT_FLAG_USE_MATERIAL
#define IMAGEPAINT_PROJECT_BACKFACE
#define PE_TYPE_PARTICLES
#define IMAGEPAINT_MISSING_MATERIAL
#define IMAGEPAINT_MISSING_UVS
@ IMAGEPAINT_INTERP_LINEAR
@ IMAGEPAINT_INTERP_CLOSEST
#define IMAGEPAINT_MISSING_TEX
void ED_space_image_set(struct Main *bmain, struct SpaceImage *sima, struct Object *obedit, struct Image *ima, bool automatic)
bool ED_paint_proj_mesh_data_check(struct Scene *scene, struct Object *ob, bool *uvs, bool *mat, bool *tex, bool *stencil)
struct PTCacheEdit * PE_get_current(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
Read Guarded memory(de)allocation.
StructRNA RNA_ParticleBrush
StructRNA RNA_CurveMapping
const EnumPropertyItem rna_enum_particle_edit_disconnected_hair_brush_items[]
@ BMO_SYMMETRIZE_NEGATIVE_X
@ BMO_SYMMETRIZE_NEGATIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_Z
@ BMO_SYMMETRIZE_NEGATIVE_Z
@ BMO_SYMMETRIZE_POSITIVE_Y
@ BMO_SYMMETRIZE_POSITIVE_X
return(oflags[bm->toolflag_index].f &oflag) !=0
const Depsgraph * depsgraph
void ED_gpencil_tag_scene_gpencil(Scene *scene)
static void area(int d1, int d2, int e1, int e2, float weights[2])
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
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)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
PropertyRNA * RNA_def_int_array(StructOrFunctionRNA *cont_, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
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)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
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)
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_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
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)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
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)
static void rna_def_paint_tool_slot(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_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)
static const EnumPropertyItem prop_direction_items[]
struct SculptSession * sculpt
struct ParticleSystem * psys
struct Paint_Runtime runtime
struct PaintToolSlot * tool_slots
ParticleBrushData brush[7]
struct ToolSettings * toolsettings
void WM_main_add_notifier(unsigned int type, void *reference)