Skip to main content

Using Procedural Systems

Infinity Creator allows you to manage complex procedural systems by organizing and nesting Procedural Systems. This helps streamline workflows, improve readability, and enable reusable procedural logic.

Nesting Procedural Systems

Nesting allows you to embed one Procedural Systems inside another, making large systems more modular and reusable.

Creating a Nested Procedural Systems

  1. Select a group of related nodes.
  2. Right-click and choose "Create System From Selection".
  3. The nodes are moved into a new child procedural system.
  4. Double-click the system to edit its internal graph.

Example Usage:

  • A "Procedural Terrain" subsystem containing Noise & Heightmaps.
  • A "Mesh Deformation" subsystem handling object transformations.

Proxying: Managing Inputs & Outputs in Nested Procedural Systems

  1. Open a nested System by double-clicking it.
  2. Select a node within the System. All nodes (including Procedural System nodes) that have input and output ports can have their ports promoted.
  3. Right-click the desired input or output port, then click "Promote In-Port" or "Promote Out-Port".
  4. Promote Input Ports to expose parameters (e.g., Noise, Scale, Position).
  5. Promote Output Ports to return computed values (e.g., Heightmap, RenderObject).
  6. Save changes - the subsystem now functions like a custom node.
tip

Use nested graphs to modularize complex procedural logic.

tip

Ports that are promoted can be further promoted "up the chain" to expose deeply-nested computation.

Preparing Final Input and Output for Deployments

To prepare top-level system inputs or outputs for use in an external application, promote the relevant ports in the top-level system. The ports will be accessible for use through the Infinity SDK.

tip

By promoting deeply nested inputs or outputs all the way to a top-level system and above, SDK users can write and access procedural data deep within the core.

Best Practices for Managing Procedural Systems

Use subsystems for Modular Design - Keep logic isolated in reusable components.
Optimize Connections - Reduce unnecessary node clutter.