The Relax applies a relaxation algorithm to spread instances apart and prevent overlaps.
It uses iterative solving to push overlapping instances away from each other, creating more evenly distributed spacing.
Optionally provide constraint geometry (surface) or a constraint volume (3D texture) to keep instances from flying off into space.
Supports two solver modes: Simple for immediate single-frame relaxation, and Advect for progressive time-dependent solving.
Supports two methods: Neighbor (searches for nearby instances within a radius) and Field (uses a voxel-based field approach).
Considers the PointScale attribute of each instance as its radius for overlap detection. If there is no PointScale attribute, the radius defaults to half of the search radius.
Optional falloff-based modulation enables spatially varying relaxation effects.
Parameters
Page: Relax
GroupGroup–If there are input groups, specifying a group name in this field will cause this POPX to act only upon the group specified.
Solver ModeSolvermode––Switches between Simple and Advect modes.
Simplesimple
Advectadvect
Relax MethodRelaxmethod––Determines the relaxation algorithm: Neighbor (proximity-based search) or Field (voxel-based volume approach).
Neighbornebr
Fieldfield
Target Points Update POPPointsupdatepop–Reference to a POP node downstream in the network when Solver Mode is set to Advect. This reference will cause a feedback loop and re-injects the points next frame.
Do FalloffDofalloff–Enables falloff-based modulation of the relaxation effect.
Falloff AttributeFalloffattr–Specifies which attribute to use for falloff values that modulate the relaxation strength.
Affect PositionAffectposition–Enables relaxation forces to affect instance positions.
Relax IterationsRelaxiters–Number of relaxation passes to perform per frame. Higher values produce more thorough relaxation but increase computation time.
Override Point RadiusOverrideradius–Overrides the point radius used for overlap detection with a uniform value.
Point Radius AxisRadiusaxis––Selects which axis of the PointScale attribute to use as the point radius.
Xx
Yy
Zz
Point Radius ScaleRadiusscale–Scale factor applied to the point radius for overlap detection.
Display Point RadiusDisplayradius–Displays the point radius as circles in the viewport.
Max Relax RadiusMaxrelaxradius–Maximum search distance for finding neighboring instances. Instances beyond this radius will not affect each other.
DistributionDistribution–Determines the distribution method for neighbor point selection.
Num Hash BucketsNumhashbuckets–Number of hash buckets used for spatial hashing in neighbor search.
Max NeighborsMaxneighbors–Maximum number of neighboring instances to consider when using Neighbor method.
Max Axis ResolutionMaxaxisres–Maximum voxel resolution along the longest axis when using Field method.
Kernel SizeKernelsize–Size of the convolution kernel used for field-based relaxation.
Lower BoundsFieldlowerbounds––Lower bounds of the field volume when using Field method.
Lower BoundsFieldlowerboundsx
Lower BoundsFieldlowerboundsy
Lower BoundsFieldlowerboundsz
Upper BoundsFieldupperbounds––Upper bounds of the field volume when using Field method.
Upper BoundsFieldupperboundsx
Upper BoundsFieldupperboundsy
Upper BoundsFieldupperboundsz
Relax StrengthRelaxstrength–Overall intensity of the relaxation effect. Higher values push instances apart more aggressively.
Attract PositionAttractposition––Position in 3D space that instances are attracted toward.
Attract PositionAttractpositionx
Attract PositionAttractpositiony
Attract PositionAttractpositionz
Attract StrengthAttractstrength–Strength of the attraction force toward the Attract Position.
Output Force AttributeOutputforceattribute–Outputs the relaxation force vector as a point attribute.
InitializeInitializepulse–Resets the Advect solver to initial state.
StartStartpulse–Begins Advect solver simulation from the current state.
PlayPlay–Toggles playback of the Advect solver simulation.
StepSteppulse–Advances the Advect solver by one frame.
Page: Collisions
Collision TypeCollisiontype––Selects the collision geometry type for constraining instance movement.
Nonenone
POP (Windows Only)pop
Boxbox
Planeplane
Spheresphere
Torustorus
3D SDF3dsdf
T3Dt3d
2D SDF2dsdf
T2Dt2d
Collision DampingCollisiondamping–Amount of velocity dampening applied when instances collide with the collision geometry.
SolidSolid–Treats the collision geometry as a solid volume, preventing instances from passing through.
ProjectProject–Projects instances onto the surface of the collision geometry.
Collision POPCollisionpop–Reference to a POP containing the collision geometry when using POP collision type.
Collision OffsetCollisionoffset–Offset distance from the collision surface to prevent z-fighting artifacts.
SizeSize––Size of the box collision geometry.
SizeSizex
SizeSizey
SizeSizez
RadiusRadius––Radius of the collision geometry per axis.
RadiusRadiusx
RadiusRadiusy
RadiusRadiusz
Corner RadiusCornerradius–Radius of rounded corners on the box collision geometry.
Collison TOPCollisontop–Reference to a TOP texture used as the collision field for SDF and texture collision types.
Use Custom BoundsUsecustombounds–Enables custom bounding box for the collision texture instead of using the texture's native bounds.
Lower BoundsLowerbounds––Lower bounds of the collision volume in world space.
Lower BoundsLowerboundsx
Lower BoundsLowerboundsy
Lower BoundsLowerboundsz
Upper BoundsUpperbounds––Upper bounds of the collision volume in world space.
Upper BoundsUpperboundsx
Upper BoundsUpperboundsy
Upper BoundsUpperboundsz
Transform OrderXord––Sets the order of scale, rotate, and translate operations for the collision geometry transform.
Scale Rotate Translatesrt
Scale Translate Rotatestr
Rotate Scale Translaterst
Rotate Translate Scalerts
Translate Scale Rotatetsr
Translate Rotate Scaletrs
Rotate OrderRord––Sets the order of rotation operations for the collision geometry transform.
Rx Ry Rzxyz
Rx Rz Ryxzy
Ry Rx Rzyxz
Ry Rz Rxyzx
Rz Rx Ryzxy
Rz Ry Rxzyx
TranslateT––Translation of the collision geometry in world space.
TranslateTx
TranslateTy
TranslateTz
RotateR––Rotation of the collision geometry in degrees.
RotateRx
RotateRy
RotateRz
ScaleS––Scale of the collision geometry per axis.
ScaleSx
ScaleSy
ScaleSz
PivotP––Pivot point for the collision geometry transform.
PivotPx
PivotPy
PivotPz
Uniform ScaleScale–Uniform scale factor applied to the collision geometry.
Display GeometryDisplaygeo–Shows the collision geometry in the viewport for visualization.
Display ColorDisplaycolor––Display color for the collision geometry visualization.
Display ColorDisplaycolorr
Display ColorDisplaycolorg
Display ColorDisplaycolorb
Page: Common
BypassBypass–Pass through the first input to the output unchanged.
Free Extra GPU MemoryFreeextragpumem–Free memory that has accumulated when output memory has grown and shrunk.
Render PrimitivesRenderprimitives–Toggles rendering of POPX Geometry or shows it as point instances only.
Convert to Point PrimitivesConverttoptprim–Converts points to primitive points when Render Primitives is toggled off.
SRT / RSTSrtrst–Sets the transform order when using POPX Geometry as built-in TouchDesigner instances.