Houdini 22.0 Nodes Copernicus nodes

Normal to Height Copernicus node

Reconstructs a height layer from a normal layer.

On this page
Since 22.0

This node converts an RGB normal layer into a mono height (displacement) layer, reconstructing the surface whose slopes match the directions stored in the input normals. It is the inverse of Height to Normal: use it to recover a displacement field from a tangent-space or object-space normal map that has no accompanying height channel, for example to drive a displacement shader from a normal map alone.

See Normals for the conventions used to store normals. Use Height Scale to scale the reconstructed height as a post-process, and Center to set the value it is centered around (the reconstruction recovers the surface only up to an additive constant).

Internally the surface is recovered by integrating the slopes to solve Poisson’s equation , either in the frequency domain or with an iterative multigrid solver – see Solver.

Parameters

Solver

The method used to integrate the normals into a height field.

FFT

Solves Poisson’s equation in the frequency domain in a single pass. This is fast, but implicitly treats the layer as tiling, so the borders are always periodic and there are no boundary controls.

Poisson

Solves Poisson’s equation with an iterative geometric multigrid solver (see Solve Poisson Multigrid). This offers more control over the borders, but may need to be iterated for accuracy.

Normal Type

How the incoming normals are stored (see Normals for more information).

Signed (-1 to 1)

Read signed normals, as stored in geometry attributes.

Offset (0 to 1)

Read offset normals, as stored in normal maps.

Height Scale

A global multiplier applied to the reconstructed height as a post-process. Higher values make the result steeper.

Center

The value about which the reconstructed height is centered. The solve fixes the height only up to an additive constant, so the result is shifted to have this mean value.

Poisson

Iterations

Number of multigrid V-cycle iterations to perform. The solution is more accurate with a higher number of iterations, but also takes longer to produce. Only used by the Poisson Solver.

Smoothing Method

The method used for relaxation on the up- and down-strokes of the multigrid solve. Gauss-Seidel offers better asymptotic convergence and requires less memory, as the red-black partitioning of cells allows for in-place smoothing. Jacobi works on all pixels at once, which avoids systemic checkerboard patterns in the residuals but requires an extra copy of the layer. Disabled when either border is set to Periodic.

Gauss-Seidel

Relax cells in red-black order, smoothing in place.

Jacobi

Relax all cells at once into a separate copy.

X Borders

State of the borders on the left and right sides of the layer, set independently. When the left side is Periodic, the right side is connected to it and its own setting is ignored.

Open

Prescribe a height of 0 along that side.

Closed

Force the height to flatten out toward that side.

Periodic

Wrap the left and right sides of the layer together.

Y Borders

State of the borders on the bottom and top sides of the layer, set independently. When the bottom side is Periodic, the top side is connected to it and its own setting is ignored.

Open

Prescribe a height of 0 along that side.

Closed

Force the height to flatten out toward that side.

Periodic

Wrap the bottom and top sides of the layer together.

Inputs

normal

The RGB layer storing the surface normals, in either Signed or Offset format.

Outputs

height

The reconstructed mono height layer.

See also

Copernicus nodes