DLG

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 be applied to the PointScale 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

Page: DLG

Target Line Update POP Lineupdatepop Reference to a POP node downstream in the network. This reference will cause a feedback loop and re-injects the line geometry next frame.
Growth Strength Growthstrength Rate of edge subdivision and line growth per iteration.
Use Curvature Usecurvature Influences growth direction based on line curvature for varied branching.
Max Distance Maxdistance Search radius for neighbor proximity checks (smaller = denser growth).
Max Neighbors Maxneighbors Maximum neighbor count before edge subdivision triggers.
Max Number of Vertices Maxverts Vertex limit to prevent infinite growth and control complexity.
Line Strips Linestrips Close (connected loops) or Open (line segments with endpoints).
Filter Type Filtertype Smoothing filter algorithm (gaussian, box, etc.) for line curves.
Edge Distance Filterdist Smoothing kernel size along edges (larger = smoother curves).
Smooth Effect Effect Blend amount between original and smoothed positions (0-1).
Initialize Initializepulse Pulse to reset simulation with initial line geometry.
Start Startpulse Pulse to begin simulation from initialized state.
Play Play Toggle continuous simulation playback.
Step Steppulse Pulse to advance simulation by one iteration while paused.

Page: Constraints

Limit Type Minimum Mintype How to handle vertices below minimum.
Off off
Clamp clamp
Loop loop
Zig Zag zigzag
Limit Type Maximum Maxtype How to handle vertices above maximum.
Off off
Clamp clamp
Loop loop
Zig Zag zigzag
Minimum Value Min Lower bound for XYZ position limits.
Maximum Value Max Upper bound for XYZ position limits.
Constraint to Geometry Constrainttogeo Projects line vertices onto collision geometry surface.
Constraint Geometry Constraintgeo Reference to a POP geometry to use as constraint surface when no second input is connected.
Display Geometry Displaygeo Visualizes constraint geometry in output.
Display Color Displaycolor Display color for constraint geometry visualization.
Display Color Displaycolorr
Display Color Displaycolorg
Display Color Displaycolorb
Constraint to Volume Constrainttovolume Confines line growth within 2D/3D texture-defined volume.
Constraint Volume Constraintvolume Reference to a 2D/3D texture TOP to use as constraint volume when no third input is connected.
Lower Bounds Lowerbounds Minimum position of volume constraint region.
Lower Bounds Lowerboundsx
Lower Bounds Lowerboundsy
Lower Bounds Lowerboundsz
Upper Bounds Upperbounds Maximum position of volume constraint region.
Upper Bounds Upperboundsx
Upper Bounds Upperboundsy
Upper Bounds Upperboundsz
Force Strength Forcestrength Strength of repulsion force from volume boundaries.
Pre-Shrink Preshrink Downsamples volume before blur for performance.
Filter Size Size Blur kernel size for smoothing volume constraint field.

Page: Noise

Apply Noise Applynoise Applies perlin noise to the PointScale attribute to create varied growth patterns.
Seed Seed Numerical value that initializes the randomization.
Period Period Period (scale) of the noise field.
Harmonics Harmon The number of higher frequency components to layer on top of the base frequency. 0 harmonics give the base shape.
Harmonic Spread Spread The factor by which the frequency of a harmonic increases relative to the previous harmonic.
Harmonic Gain Gain Amplitude of the Harmonics layered on top of the base frequency.
Amplitude Amp The noise values amplitude (a scale on the values output).
Exponent Exp Sets the exponent. The internal value is raised by the power of the exponent.
Offset Offset Constant added to noise output for bias adjustment.
Animate Animate Time-based noise evolution speed for animated variation.

Page: Common

Free Extra GPU Memory Freeextragpumem Free memory that has accumulated when output memory has grown and shrunk.

Inputs

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

Outputs

Output 0 POP LineStrip Out