holoride
Search Results for

    Show / Hide Table of Contents

    The Elastic Graph

    The Elastic Graph is the rules-based compiler of the Spatial Experience SDK. It is a highly optimized node-based visual scripting interface used to ingest real-world geographic datasets, evaluate mathematical modifiers, and compile procedural terrains and object coordinates dynamically in real-time as a vehicle moves.

    Using the project folder’s context menu (Create > holoride > Elastic Graph), you can instantiate a new graph. You can open and edit graphs inside our dedicated window, adding nodes by pressing the Spacebar or using the Right-click context menu.

    Same-colored ports represent matching data types (such as Map float arrays or Pose lists) and can be connected by dragging wires. Small exclamation marks next to input ports depict missing mandatory parameters.

    ---
    config:
      flowchart:
        subGraphTitleMargin:
          bottom: 30
    ---
    flowchart TD
        subgraph Editor_Interface ["1. Visual Graph Compilation"]
            CreateGraph["Create Graph <br> (Context Menu)"]
            SpacebarNode["Spacebar / Right-Click <br> (Add Node)"]
            ConnectPorts("Drag Wires <br> (Match Port Colors)")
            
            CreateGraph --> SpacebarNode
            SpacebarNode --> ConnectPorts
        end
    
        subgraph Core_Evaluation ["2. Runtime Scene Ingestion"]
            ESG["Elastic Scene Generator <br> (ESG Component)"]
            ESD["Elastic Scene Definition <br> (Core Definition Node)"]
            GIS["GIS OSM Caches <br> (Geographic Ingestion)"]
            
            ConnectPorts -->|Saves Graph Asset| ESD
            ESD -->|Assigns Reference| ESG
            GIS -->|Telemetry Stream| ESG
        end
    
        subgraph Procedural_Output ["3. Dynamic Cell Compilation"]
            DeformTerrain("Deform Terrain <br> (Compute height & texture maps)")
            PoolObjects("Instantiate Prefabs <br> (Pool objects on Moving Grid)")
            
            ESG -->|Compiles Cells on Threads| DeformTerrain & PoolObjects
        end
    
        %% Styling (Vibrant, borderless theme)
        style Editor_Interface fill:#e0f2fe,stroke-width:0px
        style CreateGraph fill:#0284c7,stroke-width:0px,color:#fff
        style SpacebarNode fill:#0ea5e9,stroke-width:0px,color:#fff
        style ConnectPorts fill:#06b6d4,stroke-width:0px,color:#fff
        
        style Core_Evaluation fill:#f3e8ff,stroke-width:0px
        style ESG fill:#7c3aed,stroke-width:0px,color:#fff
        style ESD fill:#9c27b0,stroke-width:0px,color:#fff
        style GIS fill:#8b5cf6,stroke-width:0px,color:#fff
        
        style Procedural_Output fill:#dcfce7,stroke-width:0px
        style DeformTerrain fill:#16a34a,stroke-width:0px,color:#fff
        style PoolObjects fill:#15803d,stroke-width:0px,color:#fff
    

    It is important to understand that the environment the Elastic Graph produces is always based on an initial set of geographic data, which is then modified based on functions the user defines in the graph system. There are two major types of source nodes to generate initial data sets, and associated modifier nodes to alter these data sets:

    • Map Nodes: These operate on 2D grayscale float grids representing continuous spatial features (such as heightmaps, slopes, masks, or road clearances).
    • Pose Set Nodes: These represent discrete coordinate points containing Position-Rotation tuples, used as target markers for spawning props or scenery.

    Other nodes such as Spawners utilize these modified maps and pose sets to define how physical engine game objects are instantiated and pooled at runtime.

    Tip

    Every node in the Elastic Graph system can be renamed to your liking via a right-click context menu.


    Elastic Scene Definition

    The Elastic Scene Definition is the core master node of every Elastic Graph. This is where all the data lines end. Ultimately, it compiles all the graph outputs and exposes them to the runtime scene.

    • Data Aggregation: The node acts as the collection point for your graph's distinct pipelines, exposing specific ports for your main Heightmap, Grass/Texturing weights (Texture Layers), custom Spawners, and dynamic coordinate filters.
    • ESG Pipeline Bindings: The compiled Elastic Graph asset must be linked directly to your active Elastic Scene Generator (ESG) component in your Unity scene to begin real-time compilation.
    Important

    An Elastic Graph is completely inert and does not execute unless referenced on an active, enabled Elastic Scene Generator component.


    Using the Graph in the Scene

    The Elastic Scene Generator (ESG) is the central MonoBehaviour component that executes your graph at playtime. It serves as the bridge between your real-world geographic telemetry stream and the Unity rendering thread:

    • Continuous Origin Shifting: As the player's physical vehicle drives, the ESG tracks its localization offset, translating, rotating, and shifting the active world cells to stay pinned under the player.
    • Asynchronous Generation Threads: The ESG processes height maps and deforms Unity terrain tiles on background CPU threads, preventing costly bottlenecks on the main rendering thread to guarantee stutter-free 90Hz+ framerates.

    Terrain Sculpting

    In order to keep things procedural, the terrain’s appearance can be modeled by using map nodes in contrast to traditional manual terrain painting. Maps can contain any float value and therefore be used to define the heights and texture weights (aka control texture) of a Unity Terrain.

    The Spatial Experience SDK utilizes Unity’s default Terrain Layer assets referenced by Texture Layer nodes. The heightmap can also be used to determine the spawn height of objects that should spawn on the terrain surface.


    Settings Window

    The Graph Settings window can be accessed from the top-left corner of the graph editor. It contains options related to the preview functionality and the processing state of the nodes, which is indicated by flashing when enabled.

    The WorldExtents, FilterResolution, and Location are independent from the scene the graph is used in. If an Elastic Scene Generator is using an opened graph, the previews will be replaced by the actual buffers that are used during play mode.


    Terrain Sculpting & Map Processing (Sub-Chapters)

    To master procedural terrain sculpting and grayscale map math, complete the following child chapters:

    1. Map Nodes – Detailed introduction to generating, scaling, and processing maps.
    2. Distances & Heights – Learn how to compute continuous road clearances and sculpt rolling hills with Perlin Noise.
    3. Masks & Texture Layers – Master procedural multi-texture blending, slope-dependent layers, and the critical Sum-of-1 rule.

    Map Nodes ❯
    In This Article

    Back to top
    ©   holoride
    Privacy   Imprint