# Brush(ID)

base classes — `bpy_struct`, `ID`

class `bpy.types.``Brush`(ID)

  Brush data-block for storing brush settings for painting and sculpting

  `auto_smooth_factor`

    Amount of smoothing to automatically apply to each stroke

    Type: | float in [0, 1], default 0.0

  `blend`

    Brush blending mode

    - `MIX` Mix, Use Mix blending mode while painting.
    - `DARKEN` Darken, Use Darken blending mode while painting.
    - `MUL` Multiply, Use Multiply blending mode while painting.
    - `COLORBURN` Color Burn, Use Color Burn blending mode while painting.
    - `LINEARBURN` Linear Burn, Use Linear Burn blending mode while painting.
    - `LIGHTEN` Lighten, Use Lighten blending mode while painting.
    - `SCREEN` Screen, Use Screen blending mode while painting.
    - `COLORDODGE` Color Dodge, Use Color Dodge blending mode while painting.
    - `ADD` Add, Use Add blending mode while painting.
    - `OVERLAY` Overlay, Use Overlay blending mode while painting.
    - `SOFTLIGHT` Soft Light, Use Soft Light blending mode while painting.
    - `HARDLIGHT` Hard Light, Use Hard Light blending mode while painting.
    - `VIVIDLIGHT` Vivid Light, Use Vivid Light blending mode while painting.
    - `LINEARLIGHT` Linear Light, Use Linear Light blending mode while painting.
    - `PINLIGHT` Pin Light, Use Pin Light blending mode while painting.
    - `DIFFERENCE` Difference, Use Difference blending mode while painting.
    - `EXCLUSION` Exclusion, Use Exclusion blending mode while painting.
    - `SUB` Subtract, Use Subtract blending mode while painting.
    - `HUE` Hue, Use Hue blending mode while painting.
    - `SATURATION` Saturation, Use Saturation blending mode while painting.
    - `COLOR` Color, Use Color blending mode while painting.
    - `LUMINOSITY` Value, Use Value blending mode while painting.
    - `ERASE_ALPHA` Erase Alpha, Erase alpha while painting.
    - `ADD_ALPHA` Add Alpha, Add alpha while painting.

    Type: | enum in [‘MIX’, ‘DARKEN’, ‘MUL’, ‘COLORBURN’, ‘LINEARBURN’, ‘LIGHTEN’, ‘SCREEN’, ‘COLORDODGE’, ‘ADD’, ‘OVERLAY’, ‘SOFTLIGHT’, ‘HARDLIGHT’, ‘VIVIDLIGHT’, ‘LINEARLIGHT’, ‘PINLIGHT’, ‘DIFFERENCE’, ‘EXCLUSION’, ‘SUB’, ‘HUE’, ‘SATURATION’, ‘COLOR’, ‘LUMINOSITY’, ‘ERASE_ALPHA’, ‘ADD_ALPHA’], default ‘MIX’

  `blur_kernel_radius`

    Radius of kernel used for soften and sharpen in pixels

    Type: | int in [1, 10000], default 2

  `blur_mode`

    Type: | enum in [‘BOX’, ‘GAUSSIAN’], default ‘GAUSSIAN’

  `brush_capabilities`

    Brush’s capabilities

    Type: | `BrushCapabilities`, (readonly, never None)

  `clone_alpha`

    Opacity of clone image display

    Type: | float in [0, 1], default 0.5

  `clone_image`

    Image for clone tool

    Type: | `Image`

  `clone_offset`

    Type: | float array of 2 items in [-inf, inf], default (0.0, 0.0)

  `color`

    Type: | float array of 3 items in [0, 1], default (1.0, 1.0, 1.0)

  `color_type`

    Use single color or gradient when painting

    - `COLOR` Color, Paint with a single color.
    - `GRADIENT` Gradient, Paint with a gradient.

    Type: | enum in [‘COLOR’, ‘GRADIENT’], default ‘COLOR’

  `crease_pinch_factor`

    How much the crease brush pinches

    Type: | float in [0, 1], default 0.5

  `cursor_color_add`

    Color of cursor when adding

    Type: | float array of 4 items in [0, inf], default (1.0, 0.39, 0.39, 0.9)

  `cursor_color_subtract`

    Color of cursor when subtracting

    Type: | float array of 4 items in [0, inf], default (0.39, 0.39, 1.0, 0.9)

  `cursor_overlay_alpha`

    Type: | int in [0, 100], default 33

  `curve`

    Editable falloff curve

    Type: | `CurveMapping`, (readonly, never None)

  `curve_preset`

    Type: | enum in [‘CUSTOM’, ‘SMOOTH’, ‘SMOOTHER’, ‘SPHERE’, ‘ROOT’, ‘SHARP’, ‘LIN’, ‘POW4’, ‘INVSQUARE’, ‘CONSTANT’], default ‘CUSTOM’

  `dash_ratio`

    Ratio of samples in a cycle that the brush is enabled

    Type: | float in [0, 1], default 1.0

  `dash_samples`

    Length of a dash cycle measured in stroke samples

    Type: | int in [1, 10000], default 20

  `direction`
    - `ADD` Add, Add effect of brush.
    - `SUBTRACT` Subtract, Subtract effect of brush.

    Type: | enum in [‘ADD’, ‘SUBTRACT’], default ‘ADD’

  `elastic_deform_type`

    Deformation type that is used in the brush

    Type: | enum in [‘GRAB’, ‘GRAB_BISCALE’, ‘GRAB_TRISCALE’, ‘SCALE’, ‘TWIST’], default ‘GRAB’

  `elastic_deform_volume_preservation`

    Poisson ratio for elastic deformation. Higher values preserve volume more, but also lead to more bulging

    Type: | float in [0, 0.9], default 0.0

  `falloff_angle`

    Paint most on faces pointing towards the view according to this angle

    Type: | float in [0, 1.5708], default 0.0

  `falloff_shape`

    Use projected or spherical falloff

    - `SPHERE` Sphere, Apply brush influence in a Sphere, outwards from the center.
    - `PROJECTED` Projected, Apply brush influence in a 2D circle, projected from the view.

    Type: | enum in [‘SPHERE’, ‘PROJECTED’], default ‘SPHERE’

  `fill_threshold`

    Threshold above which filling is not propagated

    Type: | float in [0, 100], default 0.2

  `gpencil_settings`

    Type: | `BrushGpencilSettings`, (readonly)

  `gpencil_tool`
    - `DRAW` Draw, The brush is of type used for drawing strokes.
    - `FILL` Fill, The brush is of type used for filling areas.
    - `ERASE` Erase, The brush is used for erasing strokes.

    Type: | enum in [‘DRAW’, ‘FILL’, ‘ERASE’], default ‘DRAW’

  `grad_spacing`

    Spacing before brush gradient goes full circle

    Type: | int in [1, 10000], default 0

  `gradient`

    Type: | `ColorRamp`, (readonly)

  `gradient_fill_mode`

    Type: | enum in [‘LINEAR’, ‘RADIAL’], default ‘LINEAR’

  `gradient_stroke_mode`

    Type: | enum in [‘PRESSURE’, ‘SPACING_REPEAT’, ‘SPACING_CLAMP’], default ‘PRESSURE’

  `height`

    Affectable height of brush (layer height for layer tool, i.e.)

    Type: | float in [0, 1], default 0.5

  `icon_filepath`

    File path to brush icon

    Type: | string, default “”, (never None)

  `image_paint_capabilities`

    Type: | `BrushCapabilitiesImagePaint`, (readonly, never None)

  `image_tool`

    Type: | enum in [‘DRAW’, ‘SOFTEN’, ‘SMEAR’, ‘CLONE’, ‘FILL’, ‘MASK’], default ‘DRAW’

  `invert_to_scrape_fill`

    Use Scrape or Fill tool when inverting this brush instead of inverting its displacement direction

    Type: | boolean, default False

  `jitter`

    Jitter the position of the brush while painting

    Type: | float in [0, 1000], default 0.0

  `jitter_absolute`

    Jitter the position of the brush in pixels while painting

    Type: | int in [0, 1000000], default 0

  `jitter_unit`

    Jitter in screen space or relative to brush size

    - `VIEW` View, Jitterring happens in screen space, in pixels.
    - `BRUSH` Brush, Jitterring happens relative to the brush size.

    Type: | enum in [‘VIEW’, ‘BRUSH’], default ‘BRUSH’

  `mask_overlay_alpha`

    Type: | int in [0, 100], default 33

  `mask_stencil_dimension`

    Dimensions of mask stencil in viewport

    Type: | float array of 2 items in [-inf, inf], default (0.0, 0.0)

  `mask_stencil_pos`

    Position of mask stencil in viewport

    Type: | float array of 2 items in [-inf, inf], default (0.0, 0.0)

  `mask_texture`

    Type: | `Texture`

  `mask_texture_slot`

    Type: | `BrushTextureSlot`, (readonly)

  `mask_tool`

    Type: | enum in [‘DRAW’, ‘SMOOTH’], default ‘DRAW’

  `multiplane_scrape_angle`

    Angle between the planes of the crease

    Type: | float in [0, 160], default 0.0

  `normal_radius_factor`

    Ratio between the brush radius and the radius that is going to be used to sample the normal

    Type: | float in [0, 2], default 0.5

  `normal_weight`

    How much grab will pull vertexes out of surface during a grab

    Type: | float in [0, 1], default 0.0

  `paint_curve`

    Active Paint Curve

    Type: | `PaintCurve`

  `plane_offset`

    Adjust plane on which the brush acts towards or away from the object surface

    Type: | float in [-2, 2], default 0.0

  `plane_trim`

    If a vertex is further away from offset plane than this, then it is not affected

    Type: | float in [0, 1], default 0.5

  `pose_ik_segments`

    Number of segments of the inverse kinematics chain that will deform the mesh

    Type: | int in [1, 20], default 1

  `pose_offset`

    Offset of the pose origin in relation to the brush radius

    Type: | float in [0, 2], default 0.0

  `pose_smooth_iterations`

    Smooth iterations applied after calculating the pose factor of each vertex

    Type: | int in [0, 100], default 4

  `rake_factor`

    How much grab will follow cursor rotation

    Type: | float in [0, 10], default 0.0

  `rate`

    Interval between paints for Airbrush

    Type: | float in [0.0001, 10000], default 0.1

  `sculpt_capabilities`

    Type: | `BrushCapabilitiesSculpt`, (readonly, never None)

  `sculpt_plane`

    Type: | enum in [‘AREA’, ‘VIEW’, ‘X’, ‘Y’, ‘Z’], default ‘AREA’

  `sculpt_tool`

    Type: | enum in [‘DRAW’, ‘DRAW_SHARP’, ‘CLAY’, ‘CLAY_STRIPS’, ‘LAYER’, ‘INFLATE’, ‘BLOB’, ‘CREASE’, ‘SMOOTH’, ‘FLATTEN’, ‘FILL’, ‘SCRAPE’, ‘MULTIPLANE_SCRAPE’, ‘PINCH’, ‘GRAB’, ‘ELASTIC_DEFORM’, ‘SNAKE_HOOK’, ‘THUMB’, ‘POSE’, ‘NUDGE’, ‘ROTATE’, ‘TOPOLOGY’, ‘SIMPLIFY’, ‘MASK’], default ‘DRAW’

  `secondary_color`

    Type: | float array of 3 items in [0, 1], default (0.0, 0.0, 0.0)

  `sharp_threshold`

    Threshold below which, no sharpening is done

    Type: | float in [0, 100], default 0.0

  `show_multiplane_scrape_planes_preview`

    Preview the scrape planes in the cursor during the stroke

    Type: | boolean, default False

  `size`

    Radius of the brush in pixels

    Type: | int in [1, 5000], default 35

  `smooth_stroke_factor`

    Higher values give a smoother stroke

    Type: | float in [0.5, 0.99], default 0.9

  `smooth_stroke_radius`

    Minimum distance from last point before stroke continues

    Type: | int in [10, 200], default 75

  `spacing`

    Spacing between brush daubs as a percentage of brush diameter

    Type: | int in [1, 1000], default 10

  `stencil_dimension`

    Dimensions of stencil in viewport

    Type: | float array of 2 items in [-inf, inf], default (256.0, 256.0)

  `stencil_pos`

    Position of stencil in viewport

    Type: | float array of 2 items in [-inf, inf], default (256.0, 256.0)

  `strength`

    How powerful the effect of the brush is when applied

    Type: | float in [0, 10], default 1.0

  `stroke_method`
    - `DOTS` Dots, Apply paint on each mouse move step.
    - `DRAG_DOT` Drag Dot, Allows a single dot to be carefully positioned.
    - `SPACE` Space, Limit brush application to the distance specified by spacing.
    - `AIRBRUSH` Airbrush, Keep applying paint effect while holding mouse (spray).
    - `ANCHORED` Anchored, Keep the brush anchored to the initial location.
    - `LINE` Line, Draw a line with dabs separated according to spacing.
    - `CURVE` Curve, Define the stroke curve with a bezier curve (dabs are separated according to spacing).

    Type: | enum in [‘DOTS’, ‘DRAG_DOT’, ‘SPACE’, ‘AIRBRUSH’, ‘ANCHORED’, ‘LINE’, ‘CURVE’], default ‘DOTS’

  `texture`

    Type: | `Texture`

  `texture_overlay_alpha`

    Type: | int in [0, 100], default 33

  `texture_sample_bias`

    Value added to texture samples

    Type: | float in [-1, 1], default 0.0

  `texture_slot`

    Type: | `BrushTextureSlot`, (readonly)

  `topology_rake_factor`

    Automatically align edges to the brush direction to generate cleaner topology and define sharp features. Best used on low-poly meshes as it has a performance impact

    Type: | float in [0, 1], default 0.0

  `unprojected_radius`

    Radius of brush in Blender units

    Type: | float in [0.001, inf], default 0.0

  `use_accumulate`

    Accumulate stroke daubs on top of each other

    Type: | boolean, default False

  `use_adaptive_space`

    Space daubs according to surface orientation instead of screen space

    Type: | boolean, default False

  `use_airbrush`

    Keep applying paint effect while holding mouse (spray)

    Type: | boolean, default False

  `use_alpha`

    When this is disabled, lock alpha while painting

    Type: | boolean, default False

  `use_anchor`

    Keep the brush anchored to the initial location

    Type: | boolean, default False

  `use_automasking_topology`

    Affect only vertices connected to the active vertex under the brush

    Type: | boolean, default False

  `use_cursor_overlay`

    Show cursor in viewport

    Type: | boolean, default False

  `use_cursor_overlay_override`

    Don’t show overlay during a stroke

    Type: | boolean, default False

  `use_curve`

    Define the stroke curve with a bezier curve. Dabs are separated according to spacing

    Type: | boolean, default False

  `use_custom_icon`

    Set the brush icon from an image file

    Type: | boolean, default False

  `use_edge_to_edge`

    Drag anchor brush from edge-to-edge

    Type: | boolean, default False

  `use_frontface`

    Brush only affects vertexes that face the viewer

    Type: | boolean, default False

  `use_frontface_falloff`

    Blend brush influence by how much they face the front

    Type: | boolean, default False

  `use_grab_active_vertex`

    Apply the maximum grab strength to the active vertex instead of the cursor location

    Type: | boolean, default False

  `use_inverse_smooth_pressure`

    Lighter pressure causes more smoothing to be applied

    Type: | boolean, default False

  `use_line`

    Draw a line with dabs separated according to spacing

    Type: | boolean, default False

  `use_locked_size`

    Measure brush size relative to the view or the scene

    - `VIEW` View, Measure brush size relative to the view.
    - `SCENE` Scene, Measure brush size relative to the scene.

    Type: | enum in [‘VIEW’, ‘SCENE’], default ‘VIEW’

  `use_multiplane_scrape_dynamic`

    The angle between the planes changes during the stroke to fit the surface under the cursor

    Type: | boolean, default False

  `use_offset_pressure`

    Enable tablet pressure sensitivity for offset

    Type: | boolean, default False

  `use_original_normal`

    When locked keep using normal of surface where stroke was initiated

    Type: | boolean, default False

  `use_original_plane`

    When locked keep using the plane origin of surface where stroke was initiated

    Type: | boolean, default False

  `use_paint_antialiasing`

    Smooths the edges of the strokes

    Type: | boolean, default True

  `use_paint_grease_pencil`

    Use this brush in grease pencil drawing mode

    Type: | boolean, default False

  `use_paint_image`

    Use this brush in texture paint mode

    Type: | boolean, default True

  `use_paint_sculpt`

    Use this brush in sculpt mode

    Type: | boolean, default True

  `use_paint_uv_sculpt`

    Use this brush in UV sculpt mode

    Type: | boolean, default False

  `use_paint_vertex`

    Use this brush in vertex paint mode

    Type: | boolean, default True

  `use_paint_weight`

    Use this brush in weight paint mode

    Type: | boolean, default True

  `use_persistent`

    Sculpt on a persistent layer of the mesh

    Type: | boolean, default False

  `use_plane_trim`

    Enable Plane Trim

    Type: | boolean, default False

  `use_pressure_jitter`

    Enable tablet pressure sensitivity for jitter

    Type: | boolean, default False

  `use_pressure_masking`

    Pen pressure makes texture influence smaller

    Type: | enum in [‘NONE’, ‘RAMP’, ‘CUTOFF’], default ‘NONE’

  `use_pressure_size`

    Enable tablet pressure sensitivity for size

    Type: | boolean, default False

  `use_pressure_spacing`

    Enable tablet pressure sensitivity for spacing

    Type: | boolean, default False

  `use_pressure_strength`

    Enable tablet pressure sensitivity for strength

    Type: | boolean, default True

  `use_primary_overlay`

    Show texture in viewport

    Type: | boolean, default False

  `use_primary_overlay_override`

    Don’t show overlay during a stroke

    Type: | boolean, default False

  `use_restore_mesh`

    Allow a single dot to be carefully positioned

    Type: | boolean, default False

  `use_scene_spacing`

    Calculate the brush spacing using view or scene distance

    - `VIEW` View, Calculate brush spacing relative to the view.
    - `SCENE` Scene, Calculate brush spacing relative to the scene using the stroke location.

    Type: | enum in [‘VIEW’, ‘SCENE’], default ‘VIEW’

  `use_secondary_overlay`

    Show texture in viewport

    Type: | boolean, default False

  `use_secondary_overlay_override`

    Don’t show overlay during a stroke

    Type: | boolean, default False

  `use_smooth_stroke`

    Brush lags behind mouse and follows a smoother path

    Type: | boolean, default False

  `use_space`

    Limit brush application to the distance specified by spacing

    Type: | boolean, default True

  `use_space_attenuation`

    Automatically adjust strength to give consistent results for different spacings

    Type: | boolean, default True

  `uv_sculpt_tool`
    - `GRAB` Grab, Grab UVs.
    - `RELAX` Relax, Relax UVs.
    - `PINCH` Pinch, Pinch UVs.

    Type: | enum in [‘GRAB’, ‘RELAX’, ‘PINCH’], default ‘GRAB’

  `vertex_paint_capabilities`

    Type: | `BrushCapabilitiesVertexPaint`, (readonly, never None)

  `vertex_tool`

    Type: | enum in [‘DRAW’, ‘BLUR’, ‘AVERAGE’, ‘SMEAR’], default ‘DRAW’

  `weight`

    Vertex weight when brush is applied

    Type: | float in [0, 1], default 1.0

  `weight_paint_capabilities`

    Type: | `BrushCapabilitiesWeightPaint`, (readonly, never None)

  `weight_tool`

    Type: | enum in [‘DRAW’, ‘BLUR’, ‘AVERAGE’, ‘SMEAR’], default ‘DRAW’

  classmethod `bl_rna_get_subclass`(id, default=None)

    Parameters: | id (string) – The RNA type identifier.
    Returns: | The RNA type or default when not found.
    Return type: | `bpy.types.Struct` subclass

  classmethod `bl_rna_get_subclass_py`(id, default=None)

    Parameters: | id (string) – The RNA type identifier.
    Returns: | The class or default when not found.
    Return type: | type

Inherited Properties

`bpy_struct.id_data` `ID.name` `ID.name_full` `ID.is_evaluated` `ID.original` `ID.users` | `ID.use_fake_user` `ID.tag` `ID.is_library_indirect` `ID.library` `ID.override_library` `ID.preview`

Inherited Functions

`bpy_struct.as_pointer` `bpy_struct.driver_add` `bpy_struct.driver_remove` `bpy_struct.get` `bpy_struct.is_property_hidden` `bpy_struct.is_property_overridable_library` `bpy_struct.is_property_readonly` `bpy_struct.is_property_set` `bpy_struct.items` `bpy_struct.keyframe_delete` `bpy_struct.keyframe_insert` `bpy_struct.keys` `bpy_struct.path_from_id` `bpy_struct.path_resolve` `bpy_struct.pop` | `bpy_struct.property_overridable_library_set` `bpy_struct.property_unset` `bpy_struct.type_recast` `bpy_struct.values` `ID.evaluated_get` `ID.copy` `ID.override_create` `ID.user_clear` `ID.user_remap` `ID.make_local` `ID.user_of_id` `ID.animation_data_create` `ID.animation_data_clear` `ID.update_tag`

References

`bpy.context.brush` `BlendData.brushes` `BlendDataBrushes.create_gpencil_data` `BlendDataBrushes.new` | `BlendDataBrushes.remove` `Paint.brush` `PaintToolSlot.brush`