39 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
50 ICON_RESTRICT_VIEW_ON,
52 "Align strokes to current view plane"},
57 "Project strokes to plane locked to Y"},
62 "Project strokes to plane locked to X"},
63 {
GP_LOCKAXIS_Z,
"AXIS_Z", ICON_AXIS_TOP,
"Top (X-Y)",
"Project strokes to plane locked to Z"},
68 "Align strokes to current 3D cursor orientation"},
77 "Paint using the active material base color"},
82 "Paint the material with a color attribute"},
131 const EnumPropertyItem rna_enum_particle_edit_disconnected_hair_brush_items[] = {
134 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make hairs longer or shorter"},
143 {
PE_BRUSH_LENGTH,
"LENGTH", 0,
"Length",
"Make paths longer or shorter"},
197 static void rna_ParticleEdit_tool_set(
PointerRNA *
ptr,
int value)
233 return rna_enum_particle_edit_disconnected_hair_brush_items;
240 return particle_edit_cache_brush_items;
256 return (edit && edit->
psys);
264 return BLI_strdup(
"tool_settings.particle_edit");
276 if (brush->
ob_mode & ob_mode) {
290 static bool paint_contains_brush_slot(
const Paint *paint,
const PaintToolSlot *tslot,
int *r_index)
308 if (paint_contains_brush_slot(&ts->imapaint.paint, tslot, &slot_index)) {
314 else if (paint_contains_brush_slot(&ts->sculpt->paint, tslot, &slot_index)) {
320 else if (paint_contains_brush_slot(&ts->uvsculpt->paint, tslot, &slot_index)) {
326 else if (paint_contains_brush_slot(&ts->vpaint->paint, tslot, &slot_index)) {
332 else if (paint_contains_brush_slot(&ts->wpaint->paint, tslot, &slot_index)) {
338 else if (paint_contains_brush_slot(&ts->gp_paint->paint, tslot, &slot_index)) {
344 else if (paint_contains_brush_slot(&ts->gp_vertexpaint->paint, tslot, &slot_index)) {
350 else if (paint_contains_brush_slot(&ts->gp_sculptpaint->paint, tslot, &slot_index)) {
356 else if (paint_contains_brush_slot(&ts->gp_weightpaint->paint, tslot, &slot_index)) {
362 else if (paint_contains_brush_slot(&ts->curves_sculpt->paint, tslot, &slot_index)) {
416 return BLI_strdup(
"tool_settings.vertex_paint");
419 return BLI_strdup(
"tool_settings.weight_paint");
425 return BLI_strdup(
"tool_settings.image_paint");
430 return BLI_strdup(
"tool_settings.paint_mode");
440 return BLI_strdup(
"tool_settings.curves_sculpt");
445 return BLI_strdup(
"tool_settings.gpencil_paint");
450 return BLI_strdup(
"tool_settings.gpencil_vertex_paint");
455 return BLI_strdup(
"tool_settings.gpencil_sculpt_paint");
460 return BLI_strdup(
"tool_settings.gpencil_weight_paint");
465 return BLI_strdup(
"tool_settings.particle_edit.brush");
478 static void rna_ImaPaint_viewport_update(
Main *
UNUSED(bmain),
534 for (slink =
area->spacedata.first; slink; slink = slink->
next) {
583 return BLI_strdup(
"tool_settings.gpencil_sculpt");
588 return BLI_strdup(
"tool_settings.gpencil_sculpt.guide");
658 prop,
"Fast Navigate",
"For multires, show low resolution while navigating the view");
665 "Delay Viewport Updates",
666 "Update the geometry when it enters the view, providing faster view navigation");
673 prop,
"Input Samples",
"Average multiple input samples together to smooth the brush stroke");
694 "Symmetry Feathering",
695 "Reduce the strength of the brush where it overlaps symmetrical daubs");
714 prop,
"Tiling offset for the X Axis",
"Stride at which tiled strokes are copied");
739 "Subdivide long edges to add mesh detail where needed"},
744 "Collapse short edges to remove mesh detail where possible"},
746 "SUBDIVIDE_COLLAPSE",
748 "Subdivide Collapse",
749 "Both subdivide long edges and collapse short edges to refine mesh detail"},
758 "Mesh detail is relative to the brush size and detail size"},
763 "Mesh detail is constant in world space according to detail size"},
768 "Mesh detail is relative to brush radius"},
773 "Mesh detail does not change on each stroke, only when using Flood Fill"},
782 "Applies the transformation to all vertices in the mesh"},
787 "Applies the transformation simulating elasticity using the radius of the cursor"},
804 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
825 "Use only deformation modifiers (temporary disable all "
826 "constructive modifiers except multi-resolution)");
846 prop,
"Detail Size",
"Maximum edge length for dynamic topology sculpting (in pixels)");
854 "Maximum edge length for dynamic topology sculpting (in brush percenage)");
863 "Maximum edge length for dynamic topology sculpting (as divisor "
864 "of blender unit - higher value means smaller edge length)");
871 "Show faces in dynamic-topology mode with smooth "
872 "shading rather than flat shaded");
879 "Topology Auto-Masking",
880 "Affect only vertices connected to the active vertex under the brush");
886 "Face Sets Auto-Masking",
887 "Affect only vertices that share Face Sets with the active vertex");
893 prop,
"Mesh Boundary Auto-Masking",
"Do not affect non manifold boundary edges");
900 "Face Sets Boundary Auto-Masking",
901 "Do not affect vertices that belong to a Face Set boundary");
912 prop,
"Detail Refine Method",
"In dynamic-topology mode, how to add or remove mesh detail");
919 prop,
"Detail Type Method",
"In dynamic-topology mode, how mesh detail size is calculated");
932 prop,
"Transform Mode",
"How the transformation is going to be applied to the target");
938 prop,
"Orientation",
"Object whose Z axis defines orientation of gravity");
1020 prop,
"Radial Symmetry Count X Axis",
"Number of times to copy strokes across the surface");
1041 prop,
NULL,
NULL,
NULL,
"rna_PaintModeSettings_canvas_image_poll");
1057 "Detect image slots from the material"},
1062 "Set image for texture painting directly"},
1072 "No interpolation (sample closest texel)"},
1092 prop,
"Occlude",
"Only paint onto the faces directly under the brush (slower)");
1151 "Use another UV map as clone source, otherwise use the 3D cursor as the source");
1159 prop,
"Bleed",
"Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
1164 prop,
"Angle",
"Paint most on faces pointing towards the view according to this angle");
1173 "Size to capture the image for re-projecting",
1211 prop,
"Missing Texture",
"Image Painting does not have a texture to paint on");
1221 {
SCE_SELECT_PATH,
"PATH", ICON_PARTICLE_PATH,
"Path",
"Path edit mode"},
1222 {
SCE_SELECT_POINT,
"POINT", ICON_PARTICLE_POINT,
"Point",
"Point select mode"},
1223 {
SCE_SELECT_END,
"TIP", ICON_PARTICLE_TIP,
"Tip",
"Tip select mode"},
1228 {0,
"ADD", 0,
"Add",
"Make hairs more puffy"},
1229 {1,
"SUB", 0,
"Sub",
"Make hairs less puffy"},
1234 {0,
"GROW", 0,
"Grow",
"Make hairs longer"},
1235 {1,
"SHRINK", 0,
"Shrink",
"Make hairs shorter"},
1257 prop,
NULL,
"rna_ParticleEdit_tool_set",
"rna_ParticleEdit_tool_itemf");
1283 prop,
"Emitter Distance",
"Distance to keep particles away from the emitter");
1288 prop,
"Fade Time",
"Fade paths and keys further away from current frame");
1305 prop,
"Interpolate",
"Interpolate new particles from the existing ones");
1396 "Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
1422 {
GP_GUIDE_CIRCULAR,
"CIRCULAR", 0,
"Circular",
"Use single point to create rings"},
1423 {
GP_GUIDE_RADIAL,
"RADIAL", 0,
"Radial",
"Use single point as direction"},
1425 {
GP_GUIDE_GRID,
"GRID", 0,
"Grid",
"Grid allows horizontal and vertical lines"},
1426 {
GP_GUIDE_ISO,
"ISO", 0,
"Isometric",
"Grid allows isometric and vertical lines"},
1448 prop,
"Use Snapping",
"Enable snapping to guides angle or spacing options");
1507 {0,
"ADD", ICON_ADD,
"Add",
"Add effect of brush"},
1522 "GPencil Sculpt Settings",
1523 "General properties for Grease Pencil stroke sculpting tools");
1535 "Use falloff effect when edit in multiframe mode to compute brush effect by frame");
1548 prop,
"Scale Stroke Thickness",
"Scale the stroke thickness when transforming strokes");
1557 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 Object * CTX_data_active_object(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)
@ BKE_PARTICLE_BATCH_DIRTY_ALL
void BKE_particle_batch_cache_dirty_tag(struct ParticleSystem *psys, int mode)
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
@ IMAGEPAINT_INTERP_LINEAR
@ IMAGEPAINT_INTERP_CLOSEST
#define IMAGEPAINT_PROJECT_FLAT
#define IMAGEPAINT_PROJECT_LAYER_STENCIL
#define PE_BRUSH_DATA_PUFF_VOLUME
@ 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_MODE_IMAGE
#define IMAGEPAINT_PROJECT_XRAY
#define IMAGEPAINT_PROJECT_LAYER_CLONE
#define PE_DEFLECT_EMITTER
#define IMAGEPAINT_MODE_MATERIAL
@ PAINT_SCULPT_DELAY_UPDATES
@ PAINT_SHOW_BRUSH_ON_SURFACE
#define PE_INTERPOLATE_ADDED
#define OBACT(_view_layer)
#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV
#define PAINT_MAX_INPUT_SAMPLES
@ VP_FLAG_VGROUP_RESTRICT
@ PAINT_CANVAS_SOURCE_COLOR_ATTRIBUTE
@ PAINT_CANVAS_SOURCE_IMAGE
@ PAINT_CANVAS_SOURCE_MATERIAL
#define IMAGEPAINT_MISSING_STENCIL
#define IMAGEPAINT_PROJECT_BACKFACE
#define PE_TYPE_PARTICLES
#define IMAGEPAINT_MISSING_MATERIAL
@ SCULPT_TRANSFORM_MODE_RADIUS_ELASTIC
@ SCULPT_TRANSFORM_MODE_ALL_VERTICES
@ GPPAINT_FLAG_USE_VERTEXCOLOR
@ GPPAINT_FLAG_USE_MATERIAL
#define IMAGEPAINT_MISSING_UVS
#define IMAGEPAINT_MISSING_TEX
void ED_space_image_set(struct Main *bmain, struct SpaceImage *sima, 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.
@ 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
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
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_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)
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_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)
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)