Houdini 20.0 Nodes Geometry nodes

Point geometry node

Manually adds or edits point attributes.

This node type is deprecated. It is scheduled to be deleted in an upcoming revision of Houdini.

Use the Attribute Expression node instead.

(Since version 18.0.)

On this page

In Houdini, each geometry primitive has a list of points (numbered from 0). Each point has attributes such as XYZ location, color, alpha, texture UV, weight, and normal direction.

(Polygons, NURBS, and primitives also have a list of vertices, which reference points by their position in the point list. These points are shared between multiple polygons/NURBS/primitives.)

The Point SOP lets you edit the attributes of points, including their position. For example, you can change the distance of a point from the center of the object’s bounding box (using the local variables $BBX, $BBY, and $BBZ), change the color of a point ($CR, $CG, $CB), or change the normal of a point ($NX, $NY, $NZ).

This is an extremely general and powerful operator. You can use it for an almost infinite variety of purposes, including deforming a surface (by changing point positions), creating interesting color effects (by changing point colors), and altering the initial trajectories of emitted particles (by changing the point normals).

It is important to note that the expressions in this operator are evaluated for each point. The $PT local variable contains the point number of the point currently being processed.

Tips

  • When writing expressions for editing points, you may find the point and pointavg functions useful.

  • To see the point numbers of points in the viewer, turn on the Point numbers icon in the display options window (Viewport Menu ▸ Display ▸ Display Options, or press D) or in the display toolbar on the right side of the viewer.

  • To flip normals, turn on Add normals and enter -$NX -$NY -$NZ.

  • While this operator edits the attributes of points, the Primitive SOP edits attributes of entire primitives.

  • The local variables in the Point SOP are relative to the point. You can use the prefixes “det”, “prim”, or “vtx” to use detail, primitive, or vertex variables. For example, $primTX, $primTY, $primTZ is the barycenter of the first primitive the point belongs to.

Parameters

Match By Attribute

When there are two inputs the standard behavior is to match according to point number. However, if the inputs are particle systems, this might not match properly as one wants to match the same particle even if particles are deleted or created. Match By Attribute will have $TX2 refer to the point on the second input whose attribute matches the attribute of the currently evaluated point.

If more than one point on the second input matches, the point with the greatest point number will be used.

Attribute To Match

Which attribute to use for matching. This attribute must be present on both inputs of the Point SOP. Equality will be determined by treating it as an integer.

Note

Keep uses the default values, New and Add allow you to assign new values, and No removes all values.

Standard

Position

XYZ position.

Weight

Spline weight of the point.

Color

Diffuse color (RGB).

Alpha

Transparency value.

Normal

Normal vector. If you just want to compute normals, please use the Normal node instead.

Texture

Texture coordinates.

Particle

Mass

Point mass.

Drag

Drag coefficient.

Tension

Spring tension for connected edge.

Spring K

Spring constant per point.

Velocity

Velocity vector.

Up Vector

Up vector attribute.

Scale

Particle size multiplier.

Instance

Geometry to instance on particle.

Force

Radius

Radius of effect.

Force Scale

Multiplier for total force.

Radial Force

Force directed toward attractor.

Normal Force

Directed along normal direction.

Edge Force

Directed along edge direction.

Dir. Force

Arbitrary directional force.

Custom

Number of Attributes

The number of attributes available to be set. Clicking the + button adds an attribute, clicking the - button removes an attribute, and clicking the Clear button removes all attributes.

Apply Attribute #

Whether to set this attribute.

It controls how attributes are modified. However, if the attribute does not exist, it will not be created.

Name #

Name of attribute, for example Cd.

Scalar Value

Value (for scalar attributes).

String Value

Value (for string attributes).

Locals

PT

Point number.

NPT

Total number of points.

CEX, CEY, CEZ

Centroid of the input geometry.

TX, TY, TZ

Point position.

WEIGHT

Point spline weight.

BBX, BBY, BBZ

Position of point within bounding box, ranges [0-1].

NX, NY, NZ

Point normal directions.

MAPU, MAPV, MAPW

Point texture coordinates.

CR, CG, CB

Diffuse point color.

CA

Point alpha value.

MASS, DRAG

Point mass and drag.

TENSION, SPRINGK

Spring tension of an edge, and elasticity of a point.

AGE

Number of seconds a particle has been alive.

LIFE

Particle age divided by life expectancy (0 to 1).

DIST

Distance to intersection from the Ray operation.

VX, VY, VZ

Point velocity values.

UPX, UPY, UPZ

Point up vector values.

ID

Particle ID.

PSCALE

Particle Scale

PTn, NPTn

Append n for the second source.

Examples

AimPointNormals

This is an example of how to use the Point SOP to orient point normals along a path. This allows for control over the orientation of geometry when copied onto points.

Points are extracted along a spiral on a per frame basis using an expression in the Carve SOP. A cone is copied to these points sequentially and results in an animation along the path.

CrossProduct

This is an example of how to calculate a cross product by using the Point SOP. The cross product is defined as the vector perpendicular to two input vectors.

To visualize this demonstration, please explore the SOP network and turn on Point Normals in the display.

PointBorrowing

This example of the Point SOP demonstrates the capacity of the Point SOP to alter geometry based on another input.

A sphere is created and then the points are randomly transformed. Then, by using both inputs of the Point SOP, the original sphere is brought back to average out its altered form. A simple math expression averages the positions of the two spheres, point by point.

PointExamples

The Point SOP is quite a versatile operator. This example shows how the Point SOP may be used to control point weight, color, normals, and UV attributes.

Furthermore, it is possible to create various relationships among the point attributes through the Point SOP.

PointNormals

This is a demonstration of how the Point SOP can be used to add Normals to geometry.

It also shows how the Point Normals affect the orientation of copied geometry and the appearance of shaders.

PointOffsetSurface

Using the Point SOP, a simple displacement is created and applied to a portion of a spherical surface.

Using the normals of a point, which is basically a vector, and adding that number to the position of the point, the point is displaced in that given direction. With a Merge and Skin SOP the displaced surface is then connected back to the original.

PointSpiral

This example file uses the Point SOP to turn a regular line into a spiral.

There are two different approaches used in this example. The first uses the point numbers of the line to define the expression calculations. The second uses the position of the points in the line’s bounding box for the expression.

PointTerrainErode

The Point Terrain Erode file displays a mountainous landscape, created by the Fractal SOP. The landscape is swiftly worn away by the Point SOP.

With just a spare channel, erode, and a simple clamp() expression, the Point SOP can control the whole land.

PythonExpressionSopDeformer

This example shows how to use a simple python expression inside a SOP node to deform a grid. The expression imports a python math library and uses noise to deform the points of a grid.

See also

Geometry nodes