Houdini 20.5 Nodes Geometry nodes

Point Cloud Normal geometry node

Computes point cloud normal vectors and gives them a consistent direction.

On this page
Since 20.0

Overview

This node computes and orients point cloud normal vectors, which is often a prerequisite for surface reconstruction. This node computes the point cloud normals by estimating the tangent plane for a neighborhood of points. You can then use the Method parameter to orient the normals so their directions are consistent throughout the point cloud. Use this node with the Point Cloud Surface node.

Note

The input point cloud must represent surface geometry, such as from a lidar or photogrammetry scan.

This node estimates normals using only unconnected points, while the Normal node relies on a suface to determine normals.

Though primarily used for surface reconstruction, you can also use point cloud normals to infer a surface without computing one. You can use point cloud normals for shading a point cloud, measuring curvature, measuring features (object recognition and segmentation), and registering point sets together.

Tip

You can use the Attribute Blur node to pre-smooth positions or post-smooth the normals.

Scan data courtesy of Ivan Ilko. Artwork courtesy of Ivan Masniuk.

How to

The following is an example use case for surface reconstruction.

  1. Create geometry in your scene that has point clouds.

  2. Turn on the Display normals tool in the Display toolbar to the right of the view.

  3. (Optional) Add and then connect to the Point Cloud Reduce node.

  4. Add and then connect to the Point Cloud Normal node.

  5. Add and then connect to the Point Cloud Surface node.

Parameters

Group

The group of points with the normal attribute to modify.

If left empty, all point normals are modified.

Normal Attribute

The name of the normal attribute to create or modify.

The default value is N.

Construct

Compute Normals

Computes the point normals by estimating the best-fitting plane (the plane that minimizes the total errors of the points) of each point’s neighborhood.

Proximity Radius

The maximum radius of the point’s neighborhood. Using a high value in relation to the density of your point cloud reduces performance.

The default value is 0.5.

Max Neighbors

The maximum number of neighbors each point has. Large numbers of neighbors may reduce performance.

When turned off, there is no restriction on the maximum neighborhood size. This results in a larger neighborhood when you increase the Proximity Radius.

The default value is 20.

Keep Original Normal Where Computed Normal Is Zero

If the input geometry already has an attribute name and the point normal computes to zero, the existing attribute value is unchanged.

Resolve Normal Directions

Method

The method for solving consistent normal directions.

Orient Normals Towards Hint

Orient all point normals in the direction of the hint. When Guide Towards Hint is set to the position of the scanner, this method is effective on point clouds captured from stationary scanning devices.

Local Propagation (default)

Orient the point normals by traversing nearby points and flipping each normal so it matches the direction of the neighboring point normals. The normal vectors must be dense and smooth, otherwise incorrect directions can propagate throughout the traversal. You can increase the Proximity Radius and Max Neighbors for smoother normals.

Note

This method builds connected segments using its nearest neighbors and then traverses each segment to ensure that its neighboring normals share the same direction. Each segment is individually oriented towards the hint.

Neighbors

When Method is set to Local Propagation, this is the number of neighbors for each point’s normal direction.

The default value is 5.

Guide Towards Hint

Gives the solved normals a preferred direction, towards a hint position.

The default values are 0, 0, 0.

Move Hint to Centroid

Moves the hint coordinates to the centroid , which resets Guide Towards Hint back to its default value.

Reverse Normals

Reverses the direction of the point normals.

Notes

  • A normal vector isn’t determined when there are less than two points in the neighborhood. You can obtain sufficient neighborhood sizes by overestimating the Proximity Radius while Max Neighbors is on.

  • For noisy point clouds, it may be challenging to compute normals that well-describe a point’s local structure. Smaller neighborhoods sharpen the normals but are more sensitive to noise. Larger neighborhoods smooth the normals but can reduce performance.

  • Setting consistent normal directions is challenging with point clouds. Use the Method parameter to determine the normal directions.

See also

Geometry nodes