Point
surface node
Manually adds or edits point attributes.
See also: Vertex, Primitive, Transform
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, $primTZis the barycenter of the first primitive the point belongs to.
Parameters
|
Match By Attribute |
When there are two inputs the standard behaviour 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. |
|
Attribute To Match |
Which attribute to use for matching. This attribute must be present on both inputs to the Point SOP. Equality will be determined by treating it as an integer. |
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. |
|
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 |
|
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 |
|
Scalar Value |
Value (for scalar attributes). |
|
String Value |
Value (for string attributes). |
Local variables
|
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. |
Example files
AimPointNormals
$HFS/houdini/help/examples/nodes/sop/point/AimPointNormals.cmd
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
$HFS/houdini/help/examples/nodes/sop/point/CrossProduct.cmd
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
$HFS/houdini/help/examples/nodes/sop/point/PointBorrowing.cmd
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
$HFS/houdini/help/examples/nodes/sop/point/PointExamples.cmd
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
PointOffsetSurface
$HFS/houdini/help/examples/nodes/sop/point/PointOffsetSurface.cmd
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
$HFS/houdini/help/examples/nodes/sop/point/PointSpiral.cmd
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
$HFS/houdini/help/examples/nodes/sop/point/PointTerrainErode.cmd
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.