Houdini 22.0 Geometry

Implicit surfaces: workflow

On this page

Overview

Implicit surfaces are lightweight mathematical representations of geometric shapes. Instead of storing geometry as a mesh or voxel grid, an implicit surface is defined by a function that can be evaluated at any point in space, returning a negative value inside the shape and a positive value outside. This is conceptually similar to an SDF VDB, but unlike a VDB, no voxel grid is stored.

Because the shape is described analytically, implicit surfaces have several advantages. They require very little memory, can be evaluated at any resolution without discretization error, and represent primitive shapes such as spheres, boxes, and tori exactly. They can also represent unbounded shapes, such as planes and half-spaces, which are difficult or impossible to represent with voxel grids.

These properties make implicit surfaces well suited for relatively simple geometry, such as simulation domains, collision objects, and source volumes. They can also be evaluated directly on the GPU without first generating and uploading a mesh, reducing memory usage and avoiding the cost of mesh generation and transfer.

These properties make implicit surfaces a good first choice for collision objects, simulation boundaries, and source volumes. If your shape can be built from simple primitives, implicit surfaces are faster than a VDB.

For more information, see Implicit surfaces: technical.

Workflow

Create a shape

Add an Implicit Surface SOP and pick a Shape: Box, Sphere, Torus, Tube, or Plane. Use Translate and Rotate to position it, and Uniform Scale to size it.

Tip

The Plane shape is infinite, making it ideal as a ground plane or domain wall with no extra setup.

To start from existing Houdini geometry, use Implicit Surface Convert with Mode set to Primitive to Implicit (for built-in sphere, box, or tube primitives) or Triangular Mesh to Implicit (for the convex hull of a mesh).

Combine shapes

Use the Implicit Surface Operation SOP to modify or combine shapes.

With one shape connected, you can:

  • Invert A - flip inside and outside.

  • Offset A - expand or shrink the surface.

  • Shell A - hollow the shape into a thin shell.

With two shapes connected, you can:

  • Union - keep everything inside either shape.

  • Intersect - keep only what is inside both shapes.

  • Subtract - remove one shape from the other.

  • Difference - keep what is inside either shape, but not both.

To combine more than two shapes, merge them with a Merge SOP and use Union all A or Intersect all A.

Use the Fillet parameter to soften the edge where shapes meet. Smooth blends them organically, Round adds a curved transition, and Chamfer adds a flat bevel.

Preview with the slice

Drop an Implicit Surface Slice SOP anywhere in your network to see a cross-section of the surface. Blue means inside, orange means outside. Turn on Show Normals or Show Velocity to check surface direction and motion.

Animate and add velocity

You can keyframe any parameter, such as position, rotation, and size. If the surface is animated and you need velocity (for example, to push a fluid simulation), add an Implicit Surface Velocity SOP after your animated network.

Note

Without this node, velocity will silently read as zero in solvers and VEX. If motion looks wrong in a simulation, check that this node is present.

Fix non-uniform scaling

Implicit surfaces do not fully support non-uniform scaling. If you scale a shape unevenly using the Transform SOP, pass it through the Implicit Surface Doctor SOP to repair the result. Turn on Fix Transforms to correct the shape parameters, and Rebuild Shapes to update the viewport preview.

Use in VEX

If you want to use an implicit surface inside a Point Wrangle, you can ask it questions about any point in space. For example, whether a point is inside or outside the surface, how far it is from the surface, or which direction the surface is in.

To do this, wire the implicit surface geometry into the second input of the wrangle and call the implicitsurface function. This gives you three pieces of information:

  • The signed distance - a negative number means the point is inside the surface, positive means outside. Zero means exactly on the surface.

  • The gradient - a direction vector pointing toward the nearest point on the surface. Useful for pushing points out to the surface boundary.

  • The shape ID - which shape in the network is closest to this point. This is helpful when you have multiple shapes merged together and want to treat them differently.

If your implicit surface is animated and you added an Implicit Surface Velocity SOP, you can also call implicitsurfacevel to get the velocity of the surface at any point.

Convert when needed

Use Implicit Surface Convert to convert to a VDB or polygon mesh only when a downstream node requires it. Set Voxel Size to control the resolution. Avoid converting until you need to. Keeping shapes as implicit surfaces for as long as possible preserves their memory and quality advantages.

Additional utility nodes include:

Geometry

Understanding

Modeling

Implicit Surfaces

Next steps

Fracturing

  • Destruction

    How to break different types of materials.

Clouds

Guru level