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
$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.
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.
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.
Keep uses the default values,
Add allow you to assign new values, and
No removes all values.
Spline weight of the point.
Normal vector. If you just want to compute normals, please use the Normal node instead.
Spring tension for connected edge.
Spring constant per point.
Particle size multiplier.
Geometry to instance on particle.
Multiplier for total force.
Force directed toward attractor.
Directed along normal direction.
Directed along edge direction.
Arbitrary directional force.
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 of attribute, for example
Value (for scalar attributes).
Value (for string attributes).
CEX, CEY, CEZ
Centroid of the input geometry.
BBX, BBY, BBZ
Position of point within bounding box, ranges
MAPU, MAPV, MAPW
Point texture coordinates.
Spring tension of an edge, and elasticity of a point.
Number of seconds a particle has been alive.
Particle age divided by life expectancy (0 to 1).
Distance to intersection from the Ray operation.
Append n for the second source.