Point surface node

Manually adds or edits point attributes.

All Parameters Local variables Example files

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, $primTZ is 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.

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.

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).

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

Load | Launch

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

Load | Launch

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

Load | Launch

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

Load | Launch

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

$HFS/houdini/help/examples/nodes/sop/point/PointNormals.cmd

Load | Launch

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

$HFS/houdini/help/examples/nodes/sop/point/PointOffsetSurface.cmd

Load | Launch

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

Load | Launch

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

Load | Launch

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.

Usages in other examples

Example name Example for

Material shader

Load | Launch

Material shader

Load | Launch

Magnet surface node

Load | Launch

Force surface node

Load | Launch

Carve surface node

Load | Launch

Attrib Transfer surface node

Load | Launch

Attrib Transfer surface node

Load | Launch

Attrib Transfer surface node

Load | Launch

Hole surface node

Load | Launch

Blend Shapes surface node

Load | Launch

Rails surface node

Load | Launch

Creep surface node

Load | Launch

Point Cloud Iso Surface surface node

Load | Launch

Ray surface node

Load | Launch

Cloth Create Seam surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

Particle surface node

Load | Launch

ForEach surface node

Load | Launch

Metaball surface node

Load | Launch

Delete surface node

Load | Launch

Font surface node

Load | Launch

Font surface node

Load | Launch

Dop Import surface node

Load | Launch

Sequence Blend surface node

Load | Launch

Sequence Blend surface node

Load | Launch

Fractal surface node

Load | Launch

Sweep surface node

Load | Launch

Poly Patch surface node

Load | Launch

Fit surface node

Load | Launch

Wire Blend surface node

Load | Launch

Convert surface node

Load | Launch

Convert surface node

Load | Launch

Merge surface node

Load | Launch

Copy surface node

Load | Launch

Copy surface node

Load | Launch

Poly Wire surface node

Load | Launch

Poly Knit surface node

Load | Launch

Attribute surface node

Load | Launch

Transform surface node

Load | Launch

Join surface node

Load | Launch

Poly Stitch surface node

Load | Launch

Edge Cusp surface node

Load | Launch

Vertex Split surface node

Load | Launch

Particle Fluid Sink dynamics node

Load | Launch

Particle Fluid Sink dynamics node

Load | Launch

Script Solver dynamics node

Load | Launch

POP Solver dynamics node

Load | Launch

Field Force dynamics node

Load | Launch

Field Force dynamics node

Load | Launch

Field Force dynamics node

Load | Launch

Wire Glue Constraint dynamics node

Load | Launch

Wind Force dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

Smoke Object dynamics node

Load | Launch

RBD Glue Object dynamics node

Load | Launch

Particle Fluid Emitter dynamics node

Load | Launch

Particle Fluid Emitter dynamics node

Load | Launch

SOP Solver dynamics node

Load | Launch

SOP Solver dynamics node

Load | Launch

Mask Field dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Object dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Particle Fluid Solver dynamics node

Load | Launch

Vortex Force dynamics node

Load | Launch

Wire Solver dynamics node

Load | Launch

Multiple Solver dynamics node

Load | Launch

RBD Fractured Object dynamics node

Load | Launch

RBD Point Object dynamics node

Load | Launch

BlendPose channel node

Load | Launch

Copy channel node

Load | Launch

Collision particle node

Load | Launch

Collision particle node

Load | Launch

Attribute Transfer particle node

Load | Launch

Creep particle node

Load | Launch

Rotation particle node

Load | Launch

Follow particle node

Load | Launch

Attractor particle node

Load | Launch

Attractor particle node

Load | Launch

Attractor particle node

Load | Launch

Attractor particle node

Load | Launch

Split particle node

Load | Launch

Stream particle node

Load | Launch

Soft Body particle node

Load | Launch

Torque render node

Load | Launch

Torque render node

Load | Launch