Houdini 21.0 Nodes Geometry nodes

MPM Surface geometry node

Generates a surface based on a MPM simulation.

On this page
Since 21.0

Overview

The MPM Surface creates a surface based on a MPM simulation. It can output VDBs as well as polygon meshes. This node comes with many functionalities to streamline the process of turning your MPM simulation into renderable geometry.

For more information, see the Surfacing help page in the MPM Chapter.

Inputs

MPM Particles

The output of the MPM Solver.

MPM Surface and Vel

The output of the MPM Surface. Useful to split the SDF creation from the polygon mesh creation in two separate steps.

Rest Source Model

The renderable geometry used by the MPM Source.

Polygon Mesh Surface Mask

A VDB surface used as a mask to prune polygons that would not be visible at render time.

Parameters

Output Type

The different geometry outputs.

Surface VDB

Outputs a VDB surface grid.

Density VDB

Outputs a VDB density grid.

Polygon Mesh

Outputs a polygon mesh.

Voxel Size

Manually overwrite the voxel size estimated by the node.

Voxel Scale

Scale the voxel size for fine tuning adjustments.

Density

Particle Scale

Scale the radius of the particles before rasterization to the VDB density grid.

Multiplier

Scale the VDB density grid values.

Mask by Surface

Use the generated surface grid as a mask applied to the rasterized density grid.

Tip

This reduces the high frequency fuzziness of the point rasterization and helps bring back some low frequency structures to widen the detail range.

Surface

Use Second Input Surface

If the second input is connected, use the incoming surface and vel grids instead of regenerating them from scratch.

Method

The algorithm used to generate the VDB surface grid. See Neural point surfacing for more information.

Neural Point Surface

Use the Neural Point Surface node to generate the surface grid using a pre-trained neural network. This is the newer and more experimental approach.

VDB from Particles

Use a combination of VDB morphological operations to generate the surface grid. This is the more robust and traditional approach.

Neural Model

Defines which pretrained models to use to perform inference. They all have a different look.

Balanced

This is the default. It should perform well in most scenarios and is likely to give the best results when sharp features of solid models must be preserved.

Smooth

Optimized for smooth surface reconstruction. This model will lack high frequency details compared to the Balanced model, but can get rid of more bumps across smooth surfaces.

Liquid

Optimized to reconstruct liquid simulations. This model will preserve smooth curved surfaces, as well as sharp transitions of waves crashing and rolling. It is also good at reconstructing thin sheets of water by connecting nearby water droplets in a temporally stable manner.

Granular

Optimized to properly capture rough and granular surfaces. This model will try to ignore the loose points near dense surfaces to reduce fuzziness and get more defined shapes while preserving loose points that are fully detached from the surfaces. This is especially useful with Chunky MPM materials.

Custom

Use a custom model that does not ship with Houdini.

ONNX Model Path

The file path of the custom ONNX model.

Force Closed SDF

Makes sure the surface is well formed and does not contain holes from missing zero crossings.

Particle Scale

Scale the radius of the particles before rasterization to the VDB surface grid.

Rebuild SDF

Rebuild the VDB surface to reduce the footprint of the grid in memory.

Fill Interior

Fills the inside of the VDB surface for more accurate collision detection.

Enable Partitioning

Enable partitioning such that large point clouds can be processed on OpenCL devices with limited amount of memory.

Note

This option should only be turned on if your OpenCL device (GPU) is running out of memory while cooking the node. When activated, the pre-processing and post-processing tasks before and after inference are divided into smaller chunks to reduce peak memory consumption. However, this may significantly degrade performance and should remain turned off unless necessary.

Partition Max Size

Recursively subdivides the input point cloud until no single partition exceeds this amount of points.

Filtering

Dilate

Dilate the VDB surface grid in number of voxels.

Smooth

Smooth the VDB surface grid in number of iterations.

Erode

Erode the VDB surface grid in number of voxels.

Masked Smooth

Min Stretch

Define the minimum amount of stretch to protect from smoothing.

Min Curvature

Define the minimum amount of curvature to protect from smoothing.

Smooth

Number of smooth iterations of the VDB surface. This operation is using a mask to preserve sharp details and only smooth low frequency areas.

Velocity

Use Second Input Vel

If the second input is connected, use the incoming VDB vel grid instead of computing it from scratch.

Create Velocity Grid

Create a VDB vel grid based on the v point attribute on the MPM particles.

Velocity Voxel Scale

Define the voxel size of the vel grid by scaling the surface grid voxel size.

Polygon Mesh

Adaptivity

How closely to match the surface when converting to polygons. Higher adaptivities will allow more variation in polygon size, using fewer polygons to express the surface.

Sample Velocity from VDB

Sample the vel grid instead performing an attribute transfer from the MPM particles.

Convert to Polysoup

Convert the polygon mesh into a polysoup for a smaller footprint in memory and on disk.

Attribute Transfer

From MPM Particles

Enable Transfer from MPM

Transfer attributes from the MPM particles in the first input.

Attribute List

The list of point attributes to transfer.

Kernel Radius

The drop-off radius for the kernel function. As the kernel radius approaches zero, the filter resembles nearest neighbor interpolation. As the kernel radius increases, the filter approaches uniform weighting.

Max Sample Count

The maximum number of points to interpolate from. A maximum sample count of 1 gives nearest neighbor interpolation.

From Rest Source Model

Enable Transfer from Rest Source Model

Transfer attributes from the rest source model in the third input.

Start Frame

Manually define the start frame of the MPM simulation. The start frame usually comes as a detail attribute on the MPM particles.

Attribute List

The list of attributes to transfer.

Note

The uv attributes will be treated differently to prevent the seams from blending together. Internally, the transfer is performed per uv island.

Kernel Radius

The drop-off radius for the kernel function. As the kernel radius approaches zero, the filter resembles nearest neighbor interpolation. As the kernel radius increases, the filter approaches uniform weighting.

Max Sample Count

The maximum number of points to interpolate from. A maximum sample count of 1 gives nearest neighbor interpolation.

VDB Surface Mask

Enable SDF Mask

Use a surface grid in the fourth input to define where polygons can be pruned to reduce memory and disk footprint without affecting visual quality.

Mask Offset

Iso value used to offset the interior region of the surface grid mask.

Spread Iterations

Number of iterations where connected each point will gather the maximum mask distance from its neighbors. This effectively shrinks the selection of polygons set for deletion and prevents small gaps from appearing at the intersection of the surface mask and the polygon mesh.

See also

Geometry nodes