> simulations

DLG

simulations/dlg·v1.3.0
IN:3  OUT:1

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.

PAGEDLG
Target Line Update POPLineupdatepopReference 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 VerticesMaxvertsVertex limit to prevent infinite growth and control complexity.
Growth StrengthGrowthstrengthRate of edge subdivision and line growth per iteration.
MassMassPer-vertex mass controlling resistance to growth forces.
Max DistanceMaxdistanceSearch radius for neighbor proximity checks (smaller = denser growth).
DistributionDistributionDistribution method for neighbor search queries.
Num Hash BucketsNumhashbucketsNumber of hash buckets for spatial neighbor lookups.
Max NeighborsMaxneighborsMaximum neighbor count before edge subdivision triggers.
Filter TypeFiltertypeSmoothing filter algorithm (gaussian, box, etc.) for line curves.
Edge DistanceFilterdistSmoothing kernel size along edges (larger = smoother curves).
Smooth EffectEffectBlend amount between original and smoothed positions (0-1).
InitializeInitializepulsePulse to reset simulation with initial line geometry.
StartStartpulsePulse to begin simulation from initialized state.
PlayPlayToggle continuous simulation playback.
StepSteppulsePulse to advance simulation by one iteration while paused.
PAGECollisions
Collision DampingCollisiondampingAmount of velocity dampening applied when vertices collide with the collision geometry.
SolidSolidTreats the collision geometry as a solid volume, preventing vertices from passing through.
ProjectProjectProjects vertices onto the surface of the collision geometry.
Collision POPCollisionpopReference to a POP containing the collision geometry when using POP collision type.
Collision OffsetCollisionoffsetOffset distance from the collision surface to prevent z-fighting artifacts.
Corner RadiusCornerradiusRadius of rounded corners on the box collision geometry.
Collison TOPCollisontopReference to a TOP texture used as the collision field for SDF and texture collision types.
Use Custom BoundsUsecustomboundsEnables custom bounding box for the collision texture instead of using the texture's native bounds.
Uniform ScaleScaleUniform scale factor applied to the collision geometry.
Display GeometryDisplaygeoShows the collision geometry in the viewport for visualization.
PAGENoise
Apply NoiseApplynoiseReplaces the Mass attribute with noise to create varied growth patterns.
SeedSeedNumerical value that initializes the randomization.
PeriodPeriodPeriod (scale) of the noise field.
HarmonicsHarmonThe number of higher frequency components to layer on top of the base frequency. 0 harmonics give the base shape.
Harmonic SpreadSpreadThe factor by which the frequency of a harmonic increases relative to the previous harmonic.
Harmonic GainGainAmplitude of the Harmonics layered on top of the base frequency.
AmplitudeAmpThe noise values amplitude (a scale on the values output).
ExponentExpSets the exponent. The internal value is raised by the power of the exponent.
OffsetOffsetConstant added to noise output for bias adjustment.
AnimateAnimateTime-based noise evolution speed for animated variation.
PAGECommon
Free Extra GPU MemoryFreeextragpumemFree memory that has accumulated when output memory has grown and shrunk.
Input 0 POP LineStrip In
Input 1 POP Constraint Geometry
Input 2 TOP Constraint Volume
Output 0 POP LineStrip Out