POPX

Move Along Mesh

v1.3.0
Modifiers

Summary

The Move Along Mesh attaches instances to a mesh surface and animates them along the mesh based on its orientation. It works in two phases: first, attaches instances to the mesh based on proximity or random scattering; second, pushes instances along the mesh based on the orientation of the mesh.

The "up" vector of the chosen mesh acts as the "forward" vector for movement. This node works best in conjunction with the Orient Mesh node, which can easily generate these orientations for you along with options for swirling around the mesh, adding curl noise, and blurring the generated vectors for smoother motion.

If your instances start crowding each other you can try to enable Relaxation, but this can be tricky on surfaces with very high curvature.

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.
Mesh to Attach ToMesh
Reference to a POP for the mesh to attach instances to when no second input is connected.
Display MeshDisplaymesh
Visualizes the mesh in the viewport.
Display ColorDisplaycolor
Color for mesh visualization when Display Mesh is enabled.
Display ColorDisplaycolorrDisplay ColorDisplaycolorgDisplay ColorDisplaycolorb
InitializeInitializepulse
Resets the simulation state to initial conditions.
StartStartpulse
Begins the simulation from the current state.
PlayPlay
Toggles simulation playback on or off.
StepSteppulse
Advances the simulation by one frame.
Lock to MeshLocktomesh
Locks the initial attachment positions so they don't need to be recalculated every frame, improving performance.
Reattach to MeshReattachtomesh
Recomputes attachment points for all instances.
Attach ModeAttachmode
Determines how instances are attached to the mesh: Nearest Point or Scatter.
Nearest PointnearestScatterscatter
SeedSeed
Random seed value for scatter-based attachment.
Search RadiusSearchradius
Maximum distance for finding nearest attachment points when using Nearest Point mode.
Maintain OffsetMaintainoffset
Blend amount for maintaining the original offset distance from the mesh surface.
Maintain Orient OffsetMaintainorientoffset
Blend amount between the original orientation and the mesh orientation.
Visualize OffsetVisualizeoffset
Displays lines showing the offset between instances and their attachment points.
Fetch Offsets LinesFetchoffsetslines
Creates a select POP with the selected offsets lines of the instances for visualization.
Do FalloffDofalloff
Enables falloff-based modulation of movement effects.
Falloff AttributeFalloffattr
Specifies which attribute to use for falloff values that modulate movement intensity.
SpeedSpeed
Global speed multiplier for instance movement along the mesh.
Random SpeedRandomspeed
Amount of random variation applied to each instance's speed.
SeedSpeedseed
Random seed value for speed randomization.
Enable Life TimeEnablelifetime
Enables lifetime-based effects for instances, causing them to age and potentially be removed after a certain duration.
LifeLife
Base lifetime duration in seconds for each instance.
Life VarianceLifevariance
Amount of random variation in lifetime duration between 0 (no variance) and 1 (maximum variance).
SeedLifeseed
Random seed value for lifetime variance.
Output Life AttributesOutputlifeattrs
Outputs LifeTime and Age attributes for each instance when enabled.
Scale by AgeScalebyage
Enables age-based scale modulation using a ramp curve.
Remap ScaleRemapscale
Remaps the output scale values from the ramp to this range.
Remap ScaleRemapscalexRemap ScaleRemapscaley
Open Scale Ramp EditorOpenscalerampeditor
Opens the internal scale ramp editor for creating custom scale curves over lifetime.
Reset Scale RampResetscaleramp
Resets the scale ramp to default values.
Custom Scale TOPCustomscaletop
Reference to an external TOP for scale control. When specified, overrides the internal ramp editor.
Enable Point RelaxEnablepointrelax
Enables relaxation forces that push instances apart to prevent crowding on the mesh surface.
Relax IterationsRelaxiterations
Number of relaxation iterations to perform per frame. Higher values create stronger separation but may be slower.
Max Relax RadiusMaxrelaxradius
Maximum distance at which relaxation forces affect neighboring instances.
DistributionDistribution
Neighbor distribution method for relaxation.
DefaultdefaultUniqueuniqueClosestclosest
Num Hash BucketsNumhashbuckets
Number of hash buckets for spatial neighbor lookups.
Max NeighborsMaxneighbors
Maximum number of neighboring instances to consider for relaxation calculations.
Relax StrengthRelaxstrength
Intensity of the relaxation force. Higher values push instances apart more strongly.
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
Input 1POP
Mesh to Attach To

Outputs

Output 0POP
POPX_out1