Houdini 20.5 Nodes Geometry nodes

Laplacian geometry node

Computes a discrete Laplacian matrix.

On this page
Since 20.5

This node is a low-level node that computes a discrete Laplacian matrix for the input mesh in a format for the Linear Solver SOP node. There are several different definitions for discrete Laplacians, and this node implements a few common definitions in graphics. It is advised that you use Cotan Laplacian by default. The output of this node is stored as point attributes, and you can pass the output geometry as an input to the Linear Solver SOP node and set the input matrix to be a square LIL-Row Major format to load the matrix.

Optionally, by enabling the Diffusion Matrix option, the node outputs a matrix of the form I+tL, where I is the identity matrix, L is the Laplacian matrix, and t is a scalar coefficient.

Note that Cotan, Mean Value, and Wachspress modes compute mesh Laplacians while Tutte mode computes a graph Laplacian and supports any input mesh using the connectivity information.

Mean Value and Wachspress Laplacians support only triangle mesh as their inputs. Cotan Laplacian supports any polygonal mesh as its input.

The output matrix is symmetric only with either Cotan or Tutte Laplacians with the Separate Mass option enabled. When Separate Mass option is enabled, the node additionally outputs the mass matrix that you multiply to the right-hand side of the Poisson equation so the Laplacian matrix becomes symmetric, enabling the use of efficient linear solvers for symmetric matrices.

Parameters

Mode

Specifies the formula used to compute the discrete Laplacian.

Cotan: Cotan Laplacian. When Separate Mass option is enabled, this option outputs a symmetric matrix with the area weighting weights kept separately as a mass matrix. Otherwise, it outputs a non-symmetric matrix with the area weighting applied.

Note

The generalization of the cotan Laplacian to non-triangular mesh is based on the paper, “Polygon Laplacian Made Simple” (2020) by Bunge et al. While this mode supports non-triangular meshes as well as triangular mesh, the node runs faster with triangular mesh.

Mean Value: Mean value Laplacian.

Note

The mean value Laplacian is based on the paper, “Surface Parameterization: a Tutorial and Survey” (2005) by Floater and Hormann.

Wachspress: Wachspress Laplacian.

Note

The Wachspress Laplacian is based on the paper, “Generalized Barycentric Coordinates on Irregular Polygons” (2002) by Meyer et al.

Tutte: Tutte Laplacian. When Separate Mass option is enabled, this option outputs a symmetric graph Laplacian known as the Kirchhoff matrix with the normalization weights kept separately as a mass matrix. Otherwise, it outputs a non-symmetric matrix with the row-wise normalization applied.

Separate Mass

For Cotan and Tutte modes, when enabled, the node additionally outputs the mass matrix that you multiply to the right-hand side of the Poisson equation while keeping the Laplacian matrix symmetric. With this optiopn, instead of solving the discrete Poisson problem as Lu=f, where L is a non-symmetric Laplacian matrix, we can solve Cu=Mf, where C=ML is the output symmetric matrix. For Cotan mode, the mass matrix is lumped. Thus, the mass matrix is diagonal and is stored as a float attribute.

Diffusion Matrix

When enabled, the node outputs a matrix of the form I+tL, where I is the identity matrix, L is the Laplacian matrix, and t is a scalar coefficient. When Separate Mass is enabled, the node outputs M + tML matrix instead, where M denotes the mass matrix.

Diffusion Coefficient

When the Diffusion Operator option is enabled, this parameter specifies the scalar coefficient t.

Epsilon

A small positive floating-point number used to avoid division by zero during the computation of Laplacian. Typically, using zero epsilon works well, but when you have some degenerate inputs and when the linear solver reports a numerical issue error, you may want set a small positive parameter.

Col Attribute

Specifies the name of the output integer array attribute that stores the column indices for LIL Row-Major matrix.

Value Attribute

Specifies the name of the output floating-point number array attribute that stores the column indices for LIL Row-Major matrix.

Mass Attribute

Specifies the name of the output floating-point number attribute that stores the diagonal entries of the mass matrix when Separate Mass option is enabled.

Examples

LaplacianSmoothing Example for Laplacian geometry node

This example demonstrates the use of the Laplacian SOP to smooth an input surface geometry using the classic Laplacian smoothing technique.

See also

Geometry nodes