Houdini 20.0 Nodes Geometry nodes

Vellum Brush geometry node

Interactive brushing of Vellum geometry, grains, and fluids in the viewport.

On this page
Since 18.5


The Vellum Brush SOP is an interactive tool that lets you brush Vellum geometry in the viewport. This interactivity enables sculpting operations in Damped mode, and draping operations in Settle mode. The purpose of this tool is to modify existing Vellum setups. It can be used on Vellum cloth, Vellum hair, Vellum softbodies, as well as Vellum grains and fluids.


Once you connect the node in your network, press Enter to activate the brush state. When the brush is active, a HUD is displayed in the viewport.

You can use the menus in the toolbar to change the shape and type of brush, depending on the effect you're trying to create.

Brushing grains and fluids

The Vellum brush can be used to work on grains and fluids. For example, if you want to pile up sand, sweep away particles in certain areas, or shape a fluid after simulation. Brushing grains and fluids relies on a minimal solver and runs entirely on the GPU. The workflow for grains and particles is the same as with other Vellum objects, but with some restrictions:

The only supported Shape is Screen. Mode supports Brush, Drag, Contract/expand, and Rotate. Other shapes and modes are not available, because they require triangles. The Static Friction attribute is mainly relevant in conjunction with grains.

Imagine, you have created a sand simulation. Now you want to pile up the particles and clean up the area. Make sure that the brush is in Damped mode and Live Simulation is active. Set Input Frame to the frame you want to work on. Select the brush node and press Enter in the viewport to activate the brush. Press LMB and move the particles towards the area where you want to pile the particles. You might want to increase Static Friction for better results.

Once you're finished, change the mode to Settle to release the particles and minimize gaps. Repeat the process of brushing and settling if necessary. Click Set Rest State to save your work.

Vellum brush hotkeys

To...Do this

Toggle between different brushes

Press ⇧ Shift + B.

Resize the brush

Hold ⌃ Ctrl + ⇧ Shift and drag with LMB or ⌃ Ctrl + ⇧ Shift and use the scroll wheel on the mouse.

Switch between brush modes

  • 1 turns on Brush mode.

  • 2 turns on Drag mode.

  • 3 turns on Contract / Expand mode.

  • 4 turns on Rotate mode.

  • 5 turns on Crease / Ruffle mode.

  • 6 turns on Disable Collisions mode.

Undo a brush stroke

Press ⌃ Ctrl + Z.

Set a new rest state for the constraints

Press H or click the Set Rest State button on the parameter editor.

Only affect the points within the brush radius

Turn on Freeze Outside by using the hotkey F or with the checkbox in the parameter editor.


Once you let go of the cursor, the rest of cloth will settle by the number of Post Drag Frames. If you set this to 0, the cloth won’t settle and you’ll be able to create stretched out areas, but you will get harsh creases. To smooth out the boundaries, you can hold ⇧ Shift and paint with LMB to simulate only the areas under the brush.


To...Do this

Add pins

Hold ⇧ Shift and paint with MMB the area to create pins.

Drag pins

Hold MMB and drag selected pins.

Remove pins

Hold ⌃ Ctrl and paint with MMB the pins you want to remove.

Rotate pins

Hold ⌃ Ctrl + ⇧ Shift + MMB the pins you want to rotate, and move the mouse in the direction you want to rotate them.

  • Any time you're working with pins, whether it be adding, dragging, rotating, or removing, Live Simulation will be paused.

  • Each set of pins get treated as a group. However, if two groups of pins become connected (by adding pins in between the two groups) they will become one large group and move together as a single group.

  • Pinning is available on all brushes.


  • Working with self collisions off is a lot faster if you have very high-res cloth and want to work with fast interactive speeds in the viewport.

  • Undo works with this tool by pressing ⌃ Ctrl + Z.

  • Reset All Changes will undo all brush strokes made to the geometry.

  • When brushing the cloth in the viewport, it will simulate the number of Post Drag Frames to allow things to settle after the drag.

  • If you turn on Live Simulation, once you stop dragging, the simulation will continue moving. This is affected by the Velocity Damping parameter. Lowering this value will cause the cloth to move quite significantly when brushed, which is useful for draping cloth but not for shaping cloth.

  • The fastest method for volumes is Dense Volume with Self Collisions turned off. The second fastest is still Dense Volume with Self Collisions turned on. However, if you don’t have a lot of RAM on your video card, Dense Volume might run out of RAM even though it’s faster, so you may have to use VDB Volume is which is a sparse method.

  • When brushing volumes, you can turn on the Display flag of the Point Deform node to display the high-res geometry in the viewport, while you're brushing interactively in the Vellum brush state.

  • If you're trying to fix up a single frame in a simulation, you can connect this node and use the Input Frame parameter to time shift the input geometry, constraint, and collision geometry to that particular frame before brushing.


Show Collision

Shows the collision geometry.

Show Guide Geometry

Shows the guide geometry, including any pins and disabled collisions.

Show Output when not Displayed

Shows the output geometry when a different node has the Display flag. By default this option is off, which is useful when the output feeds into a Point Deform SOP, for example, and you want to keep this node current while displaying and brushing the point-deformed geometry. Turn on this option to see the underlying Vellum geometry while another node has the Display flag.

Set Rest State

Sets a new rest state for the constraints in the Vellum geometry. This allows brushing in wrinkles that will remain permanent, for example. The parameters in the Rest State section control which types of constraints are affected.

Reset All Changes

Reset any changes made to the geometry by this node.

Input Frame

If this checkbox is turned on, the input geometry, constraint, and collision geometry will be time shifted to this frame before brushing. This option can be useful when the input to this node is a simulation and you want to modify and “fix up” a single frame of it. Setting Post Drag Frames to zero and enabling Freeze Outside can also be useful in this context to freeze all parts of the simulation except where brushing.



The shape and behavior of the brush.


Creates a sphere within the brush radius and moves everything within the sphere. This will affect points whether or not they are connected topologically, and is typically used for softbodies. This mode has no effect on grains and fluids.


Chooses all of the points in a circle along the surface of the geometry. The points must be connected to the main intersection point. This is useful if you're brushing cloth that’s tangled, as the brush will walk along the surface and allow you to drag to unfold the cloth. It is also useful when you have multiple layers of cloth, since it will only grab the first layer. This mode has no effect on grains and fluids.


Affects all points in a circle in screen space. All points that would draw in that part of the screen will be affected, whether or not they are connected.

Nearest Point

Lets you choose an individual point to brush. This only affects the nearest point to the targeted location. It is useful for making changes to low resolution geometry where it can be hard to capture a point precisely. The red line represents the normal to the selected point. This mode has no effect on grains and fluids.

Connected Geometry

Selects and affects all geometry connected topologically to the targeted location. For example, this is often used with Rotate mode to turn an entire piece of cloth. This mode has no effect on grains and fluids.


Controls the operation when manipulating the geometry with the mouse or tablet.


Pushes the geometry in the direction of the brush stroke, with the affected area following the cursor along the Vellum object. This is similar to the way you would run your fingers through strands of hair or your hand across a piece of fabric. It is useful for smoothing out wrinkles in a piece of cloth or detangling strands of hair.


Takes the geometry underneath the brush, and moves it in the direction of the brush stroke, keeping the affected area the same as at the initial click. This is similar to the way you would hold a point on a piece of cloth and move it. There is also a push/pull option that you can use to either pull cloth toward you or push it away from you by holding ⌃ Ctrl + LMB and dragging in the viewport. This push/pull option is useful when you have self collisions off and you want to fix tangles by pulling the cloth out.

Contract / Expand

This scales points inward or outward around the brush. This is similar to the way you would pinch cloth together to bunch up the fabric, or iron it out to smooth out wrinkles. Holding LMB) will contract the fabric and holding ⌃ Ctrl + LMB will expand.


Spins the points around the mouse cursor either clockwise or counter clockwise. Holding LMB will rotate the cloth clockwise and ⌃ Ctrl + LMB will rotate the cloth the other direction.

Crease / Ruffle

Shrinks or expands the cloth distance constraints around the brush by the Crease Scale and Ruffle Scale. This puts permanent wrinkles in the cloth. Holding ⇧ Shift and painting with LMB will restore the rest lengths. This mode has no effect on grains and fluids.


This brush requires the Stretch Type to be Distance Along Edges.

Disable Collisions

Temporarily turns off self or external collisions, which can be useful when trying to detangle collisions. This lets you pull cloth apart manually, to fix any tangling issues.

The blue spheres indicate where collisions are disabled. If you paint over the tangled area and then turn on Live Simulation, only the points that are tangled will be disabled. The surrounding blue spheres will fade/become enabled again, since those points are not tangled. This mode has no effect on grains and fluids.

Screen Radius

Increase or decrease size of the brush.

Freeze Outside

By default, the entire Vellum geometry will enforce its constraints while brushing. When this option is turned on, only the points within the mask around the mouse cursor will be simulated and their constraints enforced.


Controls how much of an effect the various operations should have. Internally this temporarily scales up the mass of any points within the mask around the mouse cursor.

Soft Edge

The mask is drawn with a solid core that drops off to zero. The soft edge controls what percentage of the mask is in the drop off. Soft Edge of 0 will thus make a hard edge, and a soft edge of 1 will have a smooth fall off from the core.

Crease Scale

The amount to scale down the rest length during a crease operation.

Ruffle Scale

The amount to scale up the rest length during a ruffle operation.

Post Drag Frames

How many frames to solve constraints after a mouse drag has finished.

Strength Pressure

How much the stroke pressure affects the strength. If this is 0, the strength will be independent of how hard you press. If this is 1, the strength will scale to zero as the stylus pressure scales to zero.

Radius Pressure

How much the stroke pressure affects the brush radius. If this is 0, the radius will be independent of how hard you press on a tablet. If this is 1, the radius will scale to zero as the stylus pressure scales to zero.


Simulation Mode

This node operates in two primary simulation modes: Damped and Settle.

In Damped mode, Velocity Damping is very high, so there is very little momentum after brushing. There is also no Gravity or Live Simulation, so this mode is appropriate for brushing and modeling operations on geometry.

Settle mode reduces Velocity Damping, and adds Gravity and Live Simulation, so is more appropriate for draping geometry over collision objects.

Each Simulation Mode enables a different set of default values for several parameters, which can be changed and will be saved when switching between modes and when the file is saved. The following are the parameters that are affected

  • Velocity Damping

  • Live Simulation

  • Time Scale

  • Gravity

  • Substeps

  • Constraint Iterations

  • Smoothing Iterations

Live Simulation

When this checkbox is turned on, the simulation of the Vellum geometry will continue even when not brushing in the viewport.

This is affected by the Velocity Damping parameter. Lowering this value will cause the cloth to move quite significantly when brushed, which is useful for draping cloth but not for shaping cloth.

Time Scale

Scales the effective time of the Vellum solve. The default setting of 0.2 slows the simulation down to 1/5 speed.


Turn on gravity in the Vellum simulation.

Velocity Damping

Dampen all velocity in the simulation by this amount each frame.

Static Threshold

A threshold at which to apply full friction. When the ratio of the tangential velocity and the normal impulse is less than this, the tangential velocity will be fully eliminated through friction. This is roughly tan() of the slope angle that will allow sliding under gravity.

Dynamic Scale

If the static threshold fails, this controls what percentage the tangential velocity will be reduced in the dynamic friction case.



Each solve will be broken into this number of substeps. Additional substeps are usually required while in Settle mode.

Constraint Iterations

Within each substep, this number of passes will be taken by the constraint enforcement operations.

Smoothing Iterations

The number of smoothing iterations to apply after the initial constraint solve. These passes tend to smooth out error that might remain from the primary constraint passes.


External Collisions

Controls the type of collisions between Vellum geometry and any external geometry plugged into the third input of this node.


Turns off external collisions.


Collisions are polygon-to-polygon using the Detangle SOP. This only works for surface collisions, not for volumes.

VDB Volume

Collisions are polygon-to-VDB that can run on the GPU and are generally faster than Polygons. However, they require building a VDB of the collision geometry using the Resolution Scale and Dilation parameters.

Dense Volume

Collisions are polygon-to-SDF that run on the GPU and are the fastest external collision type. However these collisions use dense Houdini volumes and can take up more GPU memory than VDBs if the collision geometry is spread out over a large distance.

Resolution Scale

This node will build a signed distance volume of the incoming collision geometry when External Collisions is set to VDB Volume or Dense Volume. By default, the largest dimension of this volume will be approximately 100 voxels, but can be increased or decreased by changing this value. Turn on Show Volume to see the generated volume.


After a volume is built it can be dilated outwards by setting this value greater than zero, or eroded inwards by setting it less than zero.

Show Volume

Shows the collision volume rather than the polygonal geometry. This option is useful to visualize the effects of changing the Resolution Scale and Dilation parameters to build a proper collision volume, as it lets you see what the solver is seeing.

Self Collisions

Turns on self collisions for the Vellum simulation.

Reset Detangled Points

If a disabled point resolves its colliding relationship and is no longer detangled, reset its disabled status so it will start colliding again. You may want to turn off this checkbox if you're untangling cloth, so that the solver doesn’t automatically re-enable collisions that you explicitly turned off.

Polygon Passes

The number of triangle and self-collision passes to perform.

Volume Passes

The number of volume collision passes to perform.

Ground Position

Turning on this checkbox adds an infinite ground plane at the location determined by the X, Y, Z parameters.

Ground Up

The up direction of the ground plane.

Rest State

These checkboxes (Stretch, Bend, and Volume) determine which type of constraints are affected when you click the Save Rest State button.

For example, if you are painting wrinkles into cloth, you may only want the Bend constraints updated, so that you can bake in the wrinkles but not affect cloth stretching.


These parameters controls various aspects of the underlying Vellum simulation.

Grain Collisions

Assume Uniform Radius

The pscale attribute is used to determine the radius of each particle. If all particles have the same radius, faster acceleration structures can be used to find neighbors.

Ignore Neighbors with Same Name or Piece

Ignore any neighbors that have the same non-empty name or non-negative piece point attribute. This option can be enabled to create separate clusters of grains that only interact with other clusters, often in conjunction with a Shape Match constraint to give rigid behavior.

Repulsion Weight

A weighting for how much the particle collision forces are weighted. A value of zero will disable particle collision.

Scale with the repulsionweight point attribute.

Attraction Weight

A weighting for how much the particles will naturally stick together when close. A value of zero will disable particle clumping.

Scale with the attractionweight point attribute.



The viscosity of the fluid. Low values for viscosity help keep the simulation stable, while higher values can simulate liquids like honey. A per-particle viscosity attribute can be used to multiply this value for variable viscosity. Fluid particles will different phase values will be solved independently for viscosity, allowing multi-phase fluid behavior.

Surface Tension

The surface tension of the fluid. Higher values for this setting reduce the curvature of the fluid and cause it to form blobs. A per-particle surfacetension attribute can be used to multiply this value for variable surface tension. Fluid particles will different phase values will be solved independently for surface tension, allowing multi-phase fluid behavior.


Move Stash to New File

Saves the data parameter into a new file, updates the geometry file to point to the new file, and clears the data parameter. This will externalize the geometry and reduce the size of the .hip file at the cost of having to manage an external file.

The default name and path are controlled by the HOUDINI_STASH_DIR and HOUDINI_STASH_FILENAME environment variables.

Load Stash from File

Explicitly loads the specified geometry file and stores it in the data parameter. This internalizes the stash file. The external file could be deleted after this, as the authoritative copy is now in the data parameter.

Cloth Stash File

File path to store the final brushed geometry.

Constraint Stash File

File path to store the final constraint values.

See also

Geometry nodes