On this page

Overview

Various tools in Houdini use a “brush” interface that lets you interactively paint attribute values onto models using a mouse or tablet. This page documents the common brush-related interface elements in those tools.

Model shelf tab

  • Sculpt lets you interactive raise, lower, and/or smooth a surface by brushing over it.

  • UV Brush lets you move UVs by brushing.

Character shelf tab

Geometry nodes

  • The Edit node lets you interactively reshape geometry by painting.

  • The Paint node lets you interactively paint color or any other attributes onto geometry points.

Brush basics

  • A red circle shows the position, orientation, and size of the brush on the surface.

  • Right-click to choose which functions to assign to and .

    For example, in the Paint node you can change a button from painting color to the eyedropper. In the Edit SOP, you can change a button from displacing points to smoothing.

    You can also choose an “erase changes” brush which, instead of modifying the surface, tends to put it back to its original state.

    See how to assign hotkeys to brush types below.

  • Hold ⇧ Shift and drag to change the size of the brush.

  • Use the controls in the operation controls toolbar or parameter editor to set the options of the brush operator/tool you are using.

    For example, the operation control toolbar for the Paint node has color swatches for the “foreground” () and “background” () colors and transparency.

  • By default, Houdini orients the brush to the surface normals. To orient the brush to the view instead, right-click and turn off Orient Brush to Surface.

    This is useful when you want to edit points or apply paint based on your view rather than the current shape of the surface. It’s also useful if positioning the brush on a complex or folded surface becomes frustrating.

Painting symmetrically

The controls on the Symmetry tab let you automatically paint on both sides of a symmetrical model.

Tip

The Edit node does not include the symmetry controls. Use the Sculpt node instead if you want to edit points with a symmetrical brush.

To...Do this

Reflect strokes across an axis of symmetry

  1. In the Symmetry tab, turn on Reflective.

  2. The Axis and Origin parameters let you set up the axis of symmetry. To set them using handles, use the handle icons in the handle list (on the selection toolbar on the left side of the viewer pane, below the divider) to show the hidden symmetry plane handles.

  3. Click the icons again to hide the handles when you're done setting the symmetry plane.

  4. Paint on the surface. Houdini duplicates your strokes across the axis of symmetry.

Reflect strokes around an axis of radial symmetry

  1. In the Symmetry tab, turn on Rotational and set the Number of rotations parameter.

  2. The Axis and Origin parameters let you set up the axis of symmetry. To set them using handles, use the handle icons in the handle list (on the selection toolbar on the left side of the viewer pane, below the divider) to show the hidden symmetry plane handles.

  3. Click the icons again to hide the handles when you're done setting the symmetry plane.

  4. Paint on the surface. Houdini duplicates your strokes around the axis of symmetry.

    In this example, the Number of rotations parameter is 8:

Common brush parameters

Brush tab

Shape

Choose Circle, Square, or Bitmap. The Radius parameter sets the radius of the circle or half the diagonal length of the square or bitmap. The Bitmap parameter lets you specify the file path to the image you want to use as a custom brush shape.

If you choose bitmap, the intensity of the bitmap pixels controls the strength of the effect when you put down a stroke. For example, if you are using the Paint SOP to apply color, it applies more color where the bitmap is brighter.

Bitmap

File path of the image you want to use as a custom brush shape. Use op:‹path_to_node to get the image from a Compositing node.

Bitmap Channel

Houdini uses the alpha channel of the image to determine the custom brush shape, but not all bitmaps have an alpha channel. This image lets you interpret the bitmap as a grayscale image by reading the red, green, blue, or luminance.

Radius

The size of the brush, in Houdini units. When Shape is circle this is the radius. When Shape is square or bitmap, this is half of the diagonal length.

UV Radius

The size of the brush in the UV viewport. See Radius.

Radius Pressure

Controls how much the radius will vary with pressure sensitivity of a tablet. See Opacity Pressure.

Note

Two radii are used so you can brush in both viewports at once, since they are usually in different scale.

Depth

If set, this limits how far the brush will paint along its axis. This can be used if connectivity is disabled to limit the effect of the brush. The first parameter is how deep below the surface the brush should penetrate. The second is how high above the surface it should stop. These values can be negative.

Brush Angle

Cant the brush’s default orientation to create a calligraphy effect. This does nothing to the default circular brush, but will affect a square, bitmap, or squashed circular brush.

Brush Squash

Scale the brush shape to make it thin in one direction. The default is in the Y direction. To squash in the X direction, rotate the Brush Angle by 90 degrees.

Opacity

Global opacity scale for the brush. 0 = fully transparent, 1 = fully opaque.

Opacity Pressure

This controls the how much effect the pressure of a stylus will have on the opacity. It obeys the same scaling as the Radius Pressure.

Brush splatter

Adds noise into the opacity of the brush so the amount of paint applied is not uniform across the brush shape. Use a number between 0 and 1. Higher numbers add more noise, creating a spray paint effect.

Houdini multiplies the opacity of each point in the brush’s space by a random number between 1 and 1 - ‹splatter.

Paper grain

Makes points on the surface randomly more resistant to the effect of brushing. Creates a similar effect to Brush splatter.

Houdini assigns point on the surface to be brushed is assigned a random number between 1 and 1 - ‹grain. This value is multiplied by the opacity of the brush (taking into account Brush splatter) to get the final opacity of the paint. The effect of this is to make some random points “stickier” than other points. Because this stickiness is independent of the brush’s position, you will note that some points are slower to be painted than others. This gives a noisy grain to the object itself. With a Paper Grain of 1, you will find some points never acquire the painted color.

Soft Edge

Gives circle and square brushes soft, blurred edges. Use a number between 0 and 1, representing the percentage of the total brush size that is roll off. Higher numbers give softer edges. The default is 1 (only the very center of the brush is opaque, the rest is roll off). The Kernel function parameter controls the speed of the roll-off.

This option only applies to the Square and Circle brushes. For bitmap brushes, you can give them a soft edge as part of the image (for example by filter the image with a Gaussian blur).

For example: A brush of radius 0.1 and Soft Edge 0.5 will have full opacity up to a distance of 0.05 from the center. From there to the edge (distance 0.1) the opacity will drop off according to the fall off function. For an entirely hard brush (points are either full opacity or zero opacity) set the Soft Edge to 0.

Kernel Function

Choose a density function to control the roll off of the soft edge.

Up-Vector Type

When set to “stroke direction” (the default), non-circular brushes orient themselves in the direction of the stroke. When set to “fixed”, the brush always maintains the orientation set by the Up-vector parameter below, regardless of stroke direction.

Up-Vector

When Up-vector type above is “Fixed”, this is global orientation for the brush.

Stroke tab

The fields on this tab (below the checkboxes) are read-only indications of the current state of your stroke. You can use them to inspect the geometry under your brush.

Orient Brush To Surface

By default, Houdini orients the brush to the surface normals. To orient the brush to the view instead, turn off Orient brush to surface.

This is useful when you want to edit points or apply paint based on your view rather than the current shape of the surface. It’s also useful if positioning the brush on a complex or folded surface becomes frustrating.

Use Connectivity

If set, the tool will only affect points connected to the closest point to the intersection. This is usually a good thing, as it avoids accidentally painting through the geometry (but see the depth parameter), but can prevent smoothly painting across seams.

Realtime Mode

Applies changes as you brush (that is, while you are still holding the mouse button down) instead of at the end of each stroke. This is less efficient, but lets you do things like paint on surfaces while playing the animation.

Direction

Normal on the hit geometry at the current brush position.

Hit Location

Position in space where the brush contacted the hit geometry.

Hit Primitive

Primitive number at the current brush position.

Hit UV

Parametric coordinates where the brush contacted the hit geometry. This is the UV coordinates used to evaluate the surface with a prim call, not any “uv” texture coordinates that may be present.

Hit Pressure

The amount of force the brush is currently applying. This is only meaningful when a tablet interface that supports pressure is used.

Hit Point

The point closest to the current brush’s center.

Event

Internal indicator of the current drawing mode.

Accumulate to stencil

Sometimes, such as when trying to sculpt some letters out of a grid, you want several individual strokes to count as a single stroke. Because some letters are made up of more than one stroke, you don’t want the strokes to “overlap”. To accomplish this, you can turn on the Accumulate to stencil in the Operations tab of a brush-based operator/tool or in the tool menu.

Off (default)

Each stroke changes the base surface immediately, so that the stroke becomes part of the base surface.

In this example, Accumulate to stencil is off, so the second stroke raises up over the first stroke:

On

Each stroke modifies the base surface, but is not added to the base surface until you apply the stencil.

In this example, Accumulate to stencil is on, so both strokes modify the original base surface; the second stroke does not interact with the first stroke:

  • To apply an accumulated stencil, click in the viewer, or click Apply and clear stencil on the Operations tab in the parameter editor.

  • Houdini does not save the stencil with the SOP. If you have an unapplied stencil when you quit, the unapplied changes are lost.

  • The stencil only works with one operation. For example, you can’t combine a smooth and a paint in one stencil. If you change the operation, you’ll change all the stokes accumulated in the stencil.

  • Unlike the normal mode where means the foreground operation and the background operation, when Accumulate to stencil is on adds to the stencil and the removes from it.

  • When Accumulate to stencil is on and you are creating a stencil, the dot at the center of the brush indicator is solid red.

  • While you are accumulating to a stencil, you can change the parameters for the stencil. For example, in the Edit SOP you can change the foreground displacement (FD) and the displacement of all the accumulated strokes will change.

Assign hotkeys to brush types.

You can assign hotkeys to brush types so you can switch to that brush type without having to use the menu while painting.

  1. While using a brush operator/tool, press to open the tool menu.

  2. Move the mouse over the brush type you want to assign a hotkey to.

  3. While still holding , hold ⌃ Ctrl + Alt + ⇧ Shift, then release *.

  4. Use the hotkey editor to assign a hotkey to the brush type.

  • Look on the bright side, you won’t hit that by accident!

Tips

  • Like the Edit SOP, brush nodes store multiple operations in a single node.

  • All brush operators use a stencil metaphor. As you brush over points, you assign values to the points between 1 (full effect) and 0 (no effect). For example, with a brush with soft edges, points near the center of the brush will get a greater effect than points near the edges. Then Houdini scales the operation (paint, smooth, displace points, whatever) by the stencil weights.

  • Brush operators all operate on points. So, if you paint over the center of a polygon and don’t touch its points, the stroke will have no effect on the polygon.

  • For NURBS and Bezier surfaces, Houdini uses the breakpoints instead of the control vertices (CVs), because breakpoints are on-surface and CVs are usually off-surface. This can help explain some potential problems with brushes. If you aren’t sure why something is or isn’t painting, turn on point display to see the relevant points involved.

  • Brush nodes store the deltas between the input points and the output points, not the brush strokes. This means if the input geometry is animated, you usually get the correct result, however the point numbers must remain the same (changes to point topology will make a brush node apply its changes to the wrong points).

Basics

Getting started

Next steps

Customization

Guru-level