POPX

Relax

v1.3.0
Modifiers

Summary

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

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.
SimplesimpleAdvectadvect
Relax MethodRelaxmethod
Determines the relaxation algorithm: Neighbor (proximity-based search) or Field (voxel-based volume approach).
NeighbornebrFieldfield
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.
XxYyZz
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 BoundsFieldlowerboundsxLower BoundsFieldlowerboundsyLower BoundsFieldlowerboundsz
Upper BoundsFieldupperbounds
Upper bounds of the field volume when using Field method.
Upper BoundsFieldupperboundsxUpper BoundsFieldupperboundsyUpper 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 PositionAttractpositionxAttract PositionAttractpositionyAttract 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.
Collision TypeCollisiontype
Selects the collision geometry type for constraining instance movement.
NonenonePOP (Windows Only)popBoxboxPlaneplaneSpheresphereTorustorus3D SDF3dsdfT3Dt3d2D SDF2dsdfT2Dt2d
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.
SizeSizexSizeSizeySizeSizez
RadiusRadius
Radius of the collision geometry per axis.
RadiusRadiusxRadiusRadiusyRadiusRadiusz
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 BoundsLowerboundsxLower BoundsLowerboundsyLower BoundsLowerboundsz
Upper BoundsUpperbounds
Upper bounds of the collision volume in world space.
Upper BoundsUpperboundsxUpper BoundsUpperboundsyUpper BoundsUpperboundsz
Transform OrderXord
Sets the order of scale, rotate, and translate operations for the collision geometry transform.
Scale Rotate TranslatesrtScale Translate RotatestrRotate Scale TranslaterstRotate Translate ScalertsTranslate Scale RotatetsrTranslate Rotate Scaletrs
Rotate OrderRord
Sets the order of rotation operations for the collision geometry transform.
Rx Ry RzxyzRx Rz RyxzyRy Rx RzyxzRy Rz RxyzxRz Rx RyzxyRz Ry Rxzyx
TranslateT
Translation of the collision geometry in world space.
TranslateTxTranslateTyTranslateTz
RotateR
Rotation of the collision geometry in degrees.
RotateRxRotateRyRotateRz
ScaleS
Scale of the collision geometry per axis.
ScaleSxScaleSyScaleSz
PivotP
Pivot point for the collision geometry transform.
PivotPxPivotPyPivotPz
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 ColorDisplaycolorrDisplay ColorDisplaycolorgDisplay ColorDisplaycolorb
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.

Inputs

Input 0POP
POPX/POP Geometry

Outputs

Output 0POP
POPX_out1