POPX

DLG

v1.3.0
Simulations

Summary

DLG (Differential Line Growth) is a GPU-accelerated simulation that creates organic branching line patterns through iterative edge subdivision based on neighbor proximity. This operator generates complex, brain coral-like structures by splitting edges when vertices become too crowded, allowing the line to grow and fold upon itself in intricate ways. The algorithm checks each vertex against its neighbors within a maximum distance, and subdivides edges when density thresholds are exceeded, creating natural-looking growth patterns.

The simulation operates on line strips (open or closed loops) and can optionally use curvature information to influence growth direction, creating more varied branching behavior. You control growth characteristics through parameters like growth strength (subdivision rate), max distance (neighbor search radius), max neighbors (crowding threshold), and vertex limits to cap complexity. The line is smoothed each iteration using gaussian or other filter types to maintain organic curves, with adjustable edge distance and smoothing effect controlling the final aesthetic.

DLG supports constraint systems to guide growth within specific regions: geometry constraints project vertices onto surfaces (creating growth confined to objects), while volume constraints use 2D/3D textures to define allowed growth spaces with force-based repulsion. Optional noise can replace the Mass attribute to create more varied growth patterns, with full control over perlin noise parameters including harmonics, amplitude, and animation. Bounding limits allow clamping growth to specific XYZ ranges, making DLG ideal for organic decoration, procedural lace patterns, coral structures, brain-like forms, and abstract linear art.

Parameters

Target Line Update POPLineupdatepop
Reference to a POP node downstream in the network. This reference will cause a feedback loop and re-injects the line geometry next frame.
Max Number of VerticesMaxverts
Vertex limit to prevent infinite growth and control complexity.
Growth StrengthGrowthstrength
Rate of edge subdivision and line growth per iteration.
MassMass
Per-vertex mass controlling resistance to growth forces.
Max DistanceMaxdistance
Search radius for neighbor proximity checks (smaller = denser growth).
DistributionDistribution
Distribution method for neighbor search queries.
Num Hash BucketsNumhashbuckets
Number of hash buckets for spatial neighbor lookups.
Max NeighborsMaxneighbors
Maximum neighbor count before edge subdivision triggers.
Line StripsLinestrips
Close (connected loops) or Open (line segments with endpoints).
ClosecloselinestripsOpenopenlinestrips
Filter TypeFiltertype
Smoothing filter algorithm (gaussian, box, etc.) for line curves.
Edge DistanceFilterdist
Smoothing kernel size along edges (larger = smoother curves).
Smooth EffectEffect
Blend amount between original and smoothed positions (0-1).
InitializeInitializepulse
Pulse to reset simulation with initial line geometry.
StartStartpulse
Pulse to begin simulation from initialized state.
PlayPlay
Toggle continuous simulation playback.
StepSteppulse
Pulse to advance simulation by one iteration while paused.
Limit Type MinimumMintype
Method for enforcing the minimum position limit per axis.
OffoffClampclampLooploopZig Zagzigzag
Limit Type MaximumMaxtype
Method for enforcing the maximum position limit per axis.
OffoffClampclampLooploopZig Zagzigzag
Minimum ValueMin
Lower bound for XYZ position limits.
Minimum ValueMin1Minimum ValueMin2Minimum ValueMin3
Maximum ValueMax
Upper bound for XYZ position limits.
Maximum ValueMax1Maximum ValueMax2Maximum ValueMax3
Collision TypeCollisiontype
Selects the collision geometry type for constraining line growth.
NonenonePOP (Windows Only)popBoxboxPlaneplaneSpheresphereTorustorus3D SDF3dsdfT3Dt3d2D SDF2dsdfT2Dt2d
Collision DampingCollisiondamping
Amount of velocity dampening applied when vertices collide with the collision geometry.
SolidSolid
Treats the collision geometry as a solid volume, preventing vertices from passing through.
ProjectProject
Projects vertices 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
Apply NoiseApplynoise
Replaces the Mass attribute with noise to create varied growth patterns.
TypeType
Noise algorithm type and dimensionality.
Perlin 2D (GPU)perlin2dPerlin 3D (GPU)perlin3dPerlin 4D (GPU)perlin4dSimplex 2D (GPU)simplex2dSimplex 3D (GPU)simplex3dSimplex 4D (GPU)simplex4d
SeedSeed
Numerical value that initializes the randomization.
PeriodPeriod
Period (scale) of the noise field.
HarmonicsHarmon
The number of higher frequency components to layer on top of the base frequency. 0 harmonics give the base shape.
Harmonic SpreadSpread
The factor by which the frequency of a harmonic increases relative to the previous harmonic.
Harmonic GainGain
Amplitude of the Harmonics layered on top of the base frequency.
AmplitudeAmp
The noise values amplitude (a scale on the values output).
ExponentExp
Sets the exponent. The internal value is raised by the power of the exponent.
OffsetOffset
Constant added to noise output for bias adjustment.
AnimateAnimate
Time-based noise evolution speed for animated variation.
Free Extra GPU MemoryFreeextragpumem
Free memory that has accumulated when output memory has grown and shrunk.

Inputs

Input 0POP
LineStrip In
Input 1POP
Constraint Geometry
Input 2TOP
Constraint Volume

Outputs

Output 0POP
LineStrip Out