A Stratified/Multi-Layer Z-Depth Node Editor UI to Eliminate Spaghetti
The Problem: Encapsulation via Node Groups solves the Single Responsibility Principle, but inside complex shader/geometry networks, we still suffer from massive visual clutter due to overlapping wires. Plugins like Node Portals solve the aesthetic mess by going wireless, but they introduce hidden coupling (acting essentially like Global Variables/GOTO statements), breaking explicit data-flow traceability.
The Concept: Instead of hiding wires completely or flattening everything on an XY plane, introduce a Stratified Node Graph utilizing a toggleable Z-depth layer space. Connections are segregated into 3 semantic priority planes:
- Layer 1 (The Backbone): Primary pipeline flow (e.g., Geometry stream or primary BSDF).
- Layer 2 (Core Logic): Procedural generators, vector math, and internal calculations.
- Layer 3 (Globals/Constants): Scene variables, Frame time, or Master Group Inputs.
Proposed UX Mechanics to Overcome Navigation Fatigue:
- The "Explode/Flatten" Toggle (Tab or Space): Instantly animation-collapses the layers into a standard flat 2D workspace for multi-layer marquee selections or macroscopic graph editing. Exiting this view smoothly separates the nodes back into their respective Z-planes. (this would operate like the "Exploded View" in CAD software or Mission Control / Exposé on macOS.)
- Screen-Edge "Docks/Sills": To solve socket ambiguity between layers, data passing between planes is routed to an "Input/Output Sill" at the left and right screen boundaries. Layer 2 reads from the Left Sill without needing a long noodle cutting across the graph to Layer 1. Double-clicking a Sill terminal instantly hyperlinks the view back to the originating layer/node.
Why this works: It provides a hardware-inspired UI wrapper for Dependency Inversion. The internal math layers remain decoupled from the main execution layers, preserving explicit data contracts without the messy wire overhead.
1 Comment
nice