Houdini 20.5 Nodes Geometry nodes

Primitive Properties geometry node

Edits primitive, primitive attributes, and profile curves.

On this page

In Houdini, each geometry primitive has attributes such as XYZ position, size, orientation, color, and alpha.

A Bezier surface is a single primitive, as is a NURBS surface, while a polygon mesh can be made of hundreds of individual primitives.

You can use this operator to:

Template geometry

Various options let you modify the input primitives in relation to another piece of geometry. For example, you can match the normals of the input primitives to the normals of the template geometry.

You can use a group within the input primitives as the template geometry (using the Template group parameter), or connect the template geometry to this node’s second (Template) input.

Tip

The local variables in the Primitive SOP are relative to the primitive. You can use the prefixes “det”, “pt”, or “vtx” to use detail, point, or vertex variables. For example, $ptTX, $ptTY, $ptTZ for point coordinates.

Parameters

Source Group

Primitive and/or profile group to operate on.

Template Group

A subset of template points to transform to.

Transform

Do Transformation

Transform the input primitives using the parameters below.

Rotate to template

Available when geometry is connected to the second (template) input. Rotates primitives to face template normals. Match Normals

Off

Do not match the template.

On

Rotate primitives to face the normals of template geometry.

Match normals

Rotate primitive so their normals match the normals of the template geometry.

Transform Order

Order in which transformations occur.

Rotate Order

Order in which rotations occur.

Translate

Moves primitives along X, Y, and Z axes.

Rotate

Rotates primitives.

Scale

Scales primitives along X, Y, and Z axes.

Shear

Amount of shearing. The three values represent X on XY plane, X on XZ plane, and Y on YZ plane respectively.

Pivot

Local pivot point for transformations.

Lookat Object

Rotates the input primitives to point at this object.

Up-Vector

Orientation along axes.

Vector Attributes to Transform

Names of the vector attributes to transform using the parameters above. You can only transform point and primitive vectors can be transformed. You cannot transform vertex attributes.

A value of * means to transform all known vector attributes. If the field is empty, no attributes are transformed.

Attributes

These attribute changes only apply to primitives, not to profiles.

Color

Diffuse color (RGB)

Alpha

Transparency value

Crease

Crease weight for polygonal subdivision

Texture

Create a string attribute for texture maps

Face/Hull

Preserve Shape U/V

If clamping or closing rounded, preserves shape.

Close U/V

Closes, opens, or unrolls primitive in U direction.

Clamp U/V

Clamps NURBS endpoints to original positions.

Operation

Reverse

Reverses U for faces, U & V for hulls

Reverse U/V

Reverses U or V.

Swap

Interchanges U, V. Preserves topology.

Shift

Cycles vertices by U/V Offset.

U Offset

Amount to cycle vertices in U direction.

V Offset

Amount to cycle vertices in V direction.

Meta

Overview

These options apply only to meta-surfaces.

Meta-surface Weight

Allows meta-surface weighting.

Weight

Weight of meta-surface.

Particles

Overview

These options apply only to particle primitives. They can be used to override the options usually set by the Render POP.

Particle Render Type

Controls if the particle primitive’s render attributes should be overridden.

Particle Type

How the particles are rendered.

If you are outputting to RenderMan, use Disk for RiPoint and Line for RiCurve.

Spheres

Render particles as spheres.

Disks

Render particles as flat discs oriented toward the camera.

Lines

Render particles as lines between their previous and current positions. This is similar to how particles appear in the 3D viewport.

Tubes

Render particles as open tubes between their previous and current positions.

Capped

Render particles as capped tubes between their previous and current positions.

Rounded

Render particles as round-capped tubes between their previous and current positions.

Particle Size

Sets the size of rendered particles. To change particle size for individual particles, use the Property POP to set the particle’s scale (pscale) attribute.

Particle Blur

How long the particles will appear when rendered. For end to end connectivity, set this to 1/$FPS. To stretch particles increase this value, or to squash them decrease it.

Volumes

These options only apply to volume primitives. They can adjust certain internal parameters of the volume primitives, such as the behavior when sampled outside their bounding box or their tolerance for compression.

These options can also apply to VDB primitives where sensible.

Adjust Visualization

Controls if the visualization options will be changed. This also affects VDB primitives.

Display Mode

How this volume primitive will be displayed in the viewport. This does not affect the underlying volume at all, just its display-time appearance.

This also affects VDB primitives.

Smoke

The volume is rendered as smoke. Values of 0 or less are fully transparent. If lights are present, they are self-shadowed with the volume.

Rainbow

The volume is rendered as transparent smoke. Values of 0 or less are fully transparent. Lights are ignored, reducing computation time. Instead, the smoke is colored a rainbow hue according to the position in the bounding box.

Isosurface

An isosurface of equal valued voxels is extracted from the volume and displayed. This Display Isocontour is used to determine which isosurface is extracted.

Invisible

The contents of the volume are not rendered at all.

Display Density

Controls the fall off rate for the smoke visualization. Lower values allows the smoke to be more transparent.

This also affects VDB primitives.

Display Isocontour

Which isocontour to extract from the volume. The default of 0 is good for SDF volumes. Fog style volumes would work better with something non-zero, such as 0.5.

This also affects VDB primitives.

Taper

Allows you to override the tapering of the volume along the Z direction. This allows a volume that better fits a camera’s viewing area, so you can have a greater density of volumes close to the camera than far away.

The X taper can also control VDB primitives that have defined frustums.

Volumes

These options only apply to Volume primitives.

Adjust Border

Controls if the border type will be changed.

Border Type

The behavior when the volume is sampled outside of its defined box.

Constant

The border value will be returned.

Repeat

The volume will wrap, returning values from the opposite side of the volume.

Streak

The value at the edge of the volume closest to the sample will be returned.

SDF

The volume will be treated as a signed distance field. The distance from the sample point to the closest point on the volume will be added to the value at that closest point. This ensures the volume continues to approximate distances outside of its defined box.

Mirror

Similar to Repeat, but rather than wrapping immediately, the sampling reflects at the boundary.

Border Value

When the border type is constant, this is the value returned for out of bounds sampling.

Adjust Compression

Controls if the compression tolerance will be changed.

Compression Tolerance

When tiles in the volume are compressed this will be the tolerance used for lossy compression. A value of 0 will ensure lossless compression. (Note compression to constant tiles will still occur)

Volume Type Info

This sets the semantic meaning of the volume. It can be used for visualization or for determining how to transform the data of the volume.

None

The volume contains data with no special meaning, or a meaning not covered by this list.

Color

The voxels contain colour information, so may need to be colour corrected.

Position

The voxels specify a location, so should be rotated and translated.

Vector

The voxels specify a direction, so should be rotate but not translated.

Signed Normal

The voxels specify normals. These are usually unit in length. Special case has to be done for scaling them compared to Vectors.

Offset Normal

A special type of normal where they are offset by 0.5 and scaled to fit in the 0..1 range. This is used to interface with formats where only 0..1 values are present.

Texture Coordinate

A location in a texture, usually thus 0..1 in range.

ID

An identification. Often used for integer volumes, implies the actual value isn’t arithmetic.

Mask

A scalar value from 0..1 meant to mask out operations. Usually 1 will apply the operation and 0 not. Note that a volume flagged with this may have values out of this range, this is a hint of the intended use.

SDF

A signed distance field. Negative values represent the inside and positive values the outside. The value itself is the world space distance to the surface, which is a value of 0.

Height

A height field. The values are distances, usually in worldspace, above the surface of the volume that the surface has.

Visualize Tiling

For volume displayed as images, expand the size of the image by using the border conditions of the image. This doesn’t affect the actual data at all, but allows one to see what it would look like if it was tiled.

VDB

These options only apply to VDB primitives

Class

The semantic meaning of the volume.

Other

No specific interpretation.

Level Set

The volume represents a surface.

Fog Volume

The volume consists of density values (eg. smoke).

Staggered Vector Field

Volume data for simulation grids.

Creator

An optional string of the entity responsible for creating the VDB.

Transform Values

If set, the actual voxel values of the VDB will be altered by transformation operations, when those transformation operations support this.

Vector Type

The semantic meaning of the components of a vector volume. This affects how transformations are applied.

Tuple/Colow/UVW

Does not transform.

Gradient/Normal

Applies the inverse-transpose of the transform matrix, ignoring translation.

Unit Normal

Applies the forward transform matrix, ignoring translation.

Displacement/Velocity/Acceleration

Applies the forward transform matrix, ignoring translation.

Position

Applies “regular” transformation, vector translates.

Write 16-Bit Floats

A flag to specify that when writing to disk that the volume should be down converted to 16 bit. This does not affect how it is stored in memory.

Inputs

Primitive(s)

Geometry to process.

Template

Geometry you can use to control various modifications of the input geometry. For example, you can match the normals of the input primitives to the template geometry. You can also use a group within the input geometry as the template geometry instead of connecting a node to this input.

Locals

PR

Primitive or profile number.

NPR

Total number of primitives or profiles.

PT

Point number of first point in primitive.

NVTX

The number of vertices in the primitive.

CEX, CEY, CEZ

Centroid of the primitive or profile.

DX, DY, DZ

Direction from the centroid to the primitive centroid.

NX, NY, NZ

Normal of the primitive.

CR, CG, CB, CA

Diffuse primitive color & Alpha for primitive.

CREASE

Crease weight for each edge of primitive

WEIGHT

Weight of meta-primitive (0 for non-meta-primitive)

Examples

PrimCenter Example for Primitive Properties geometry node

This is an example of how to use the Primitive SOP to correctly sweep primitives on a curve.

The Sweep SOP places the origin of a primitive on a curve by default. If the primitive centroid is away from the origin, the primitive will be placed away from the curve.

In order to correctly place the primitive’s centroid on the backbone, its centroid must be at the origin. For this, the Primitive SOP is used.

PrimRotate Example for Primitive Properties geometry node

This example demonstrates how to rotate individual primitives on a grid surface using the Primitive SOP.

A Group SOP is used to animate a bounding box over the grid surface, thereby activating the randomized rotations in the Primitive SOP.

PrimitiveColors Example for Primitive Properties geometry node

This example demonstrates using the Primitive SOP to add a Color attribute to primitive geometry.

The rand() function is used in the RGB fields to generate different random colors for each primitive.

Then the prim() function is used to reference the attribute values of one SOP, to drive the attribute values of another SOP.

PrimitiveExplode Example for Primitive Properties geometry node

This file demonstrates the ability of the Primitive SOP to control the individual primitives of the object.

With expressions in the Translate Parameter, motion is created driving the primitives away from their centroid. Yet another expression presents the primitives with a randomized rotation. Another randomizing expression colorizes each of the primitives.

Together these parameter create an explosion destroying the original sphere.

PrimitiveMetaWeight Example for Primitive Properties geometry node

This example demonstrates the how the Primitive SOP can be used to drive the attributes of other geometry. In this case it is used to affect the Weight Parameter of a Metaball SOP.

In addition, the parameter can be animated over time. Press Play to see the animation.

See also

Geometry nodes