Node Graph Basics¶
The node graph is your workspace in Nodo. Understanding how it works is essential to building procedural models efficiently.
What is a Node Graph?¶
A node graph is a visual representation of operations and data flow:
┌─────────┐ ┌───────────┐ ┌────────┐
│ Input A │────→│ Operation │────→│ Output │
└─────────┘ └───────────┘ └────────┘
↓
┌─────────┐
│ Input B │
└─────────┘
Think of it as: A flowchart where: - Nodes = Operations or generators - Connections = Data flowing between nodes - Parameters = Settings that control each node
Node Anatomy¶
Basic Structure¶
┌──────────────────────────┐
│ Node Title │ ← Node name
├──────────────────────────┤
│ ○ Input 1 │ ← Input ports (left)
│ ○ Input 2 │
├──────────────────────────┤
│ Parameters shown here │ ← Internal controls
├──────────────────────────┤
│ Output ○ │ ← Output port (right)
└──────────────────────────┘
Node Components¶
1. Title Bar - Node name (double-click to rename) - Node type/category - Status indicators
2. Input Ports (Left Side) - Circles where connections attach - Accept geometry from other nodes - Can have multiple inputs (e.g., Boolean node)
3. Parameters (Middle Section) - Adjustable values (sliders, spinboxes) - Expression mode available (click ≡ button) - Control the node's behavior
4. Output Port (Right Side) - Single circle sending data downstream - Can connect to multiple nodes
Data Flow¶
Left to Right¶
Data flows left → right in Nodo:
Example:
Execution Order¶
Nodo automatically determines execution order:
Execution: A → B → C → D (parallel paths merge at D)
Key Point: You don't specify order - connections define it!
Node Types¶
1. Generator Nodes¶
Purpose: Create geometry from scratch
Examples: - Sphere, Box, Cylinder, Torus - Grid, Line
Characteristics: - No input ports (create data) - Generate base geometry - Controlled by parameters only
Use: Starting points for any model
2. Modifier Nodes¶
Purpose: Change existing geometry
Examples: - Transform, Extrude, Smooth - Subdivide, Mirror, Bend, Twist
Characteristics: - One input port (geometry to modify) - One output port (modified result) - Chain together for complex effects
Use: Refine and shape geometry
3. Boolean Nodes¶
Purpose: Combine multiple geometries
Examples: - Boolean (Union/Subtract/Intersect) - Merge (Combine without CSG)
Characteristics: - Multiple input ports - Combine or cut geometry - Order matters (A subtract B ≠ B subtract A)
Use: Complex shapes from simple primitives
4. Array Nodes¶
Purpose: Duplicate and distribute
Examples: - Array (linear/grid/circular) - Scatter (random distribution) - Copy to Points (instance at positions)
Characteristics: - Input: geometry to duplicate - Output: many copies - Powerful for patterns
Use: Repetition and instancing
5. Attribute Nodes¶
Purpose: Manage vertex/face data
Examples: - Attribute Create - Attribute Delete - Color
Characteristics: - Modify per-point/face attributes - Enable advanced workflows - Support expressions
Use: Data-driven modeling
6. Group Nodes¶
Purpose: Select and filter geometry
Examples: - Group (select by pattern/expression) - Group Delete (remove selected) - Group Combine (merge selections)
Characteristics: - Create named selections - Filter operations to subsets - Powerful with expressions
Use: Selective operations
Making Connections¶
How to Connect¶
- Click and drag from an output port
- Release on an input port
- Connection appears as a line
Visual:
Connection Rules¶
✅ Can Connect: - Output → Input - One output → Many inputs (branching) - Compatible types (geometry → geometry)
❌ Cannot Connect: - Input → Output (wrong direction) - Input → Input - Output → Output
Disconnecting¶
- Click the connection line → Select it
- Press Delete or Backspace
- Or drag output to empty space
Graph Navigation¶
Panning¶
- Middle mouse button + drag
- Or Space + Left mouse drag
Zooming¶
- Mouse wheel scroll
- Ctrl + Middle mouse drag
Framing¶
- F key - Frame selected node(s)
- A key - Frame all nodes
Node Operations¶
Creating Nodes¶
Method 1: Tab Menu 1. Press Tab in graph 2. Type to search (e.g., "sphere") 3. Click or press Enter
Method 2: Right-Click Menu 1. Right-click in graph 2. Navigate categories 3. Select node
Method 3: Keyboard Shortcuts - S - Add Sphere - B - Add Box - T - Add Transform - (See full list in Keyboard Shortcuts)
Selecting Nodes¶
- Left-click - Select single node
- Ctrl + Left-click - Add to selection
- Click + Drag box around nodes - Multi-select
- Ctrl + A - Select all
Moving Nodes¶
- Left-click and drag node
- Or select + arrow keys for precise placement
Deleting Nodes¶
- Select node(s)
- Press Delete or Backspace
- Connections are removed automatically
Duplicating Nodes¶
- Select node(s)
- Ctrl + D - Duplicate
- Connections are NOT copied
Copying Parameters¶
- Ctrl + C on parameter value
- Ctrl + V on target parameter
- Or right-click → Copy/Paste Value
Execution Flow¶
Dependency Chain¶
Each node waits for its inputs:
Live Evaluation¶
Nodo evaluates on-demand:
- You change a parameter
- Node marks itself "dirty"
- All downstream nodes mark dirty
- Display node re-executes chain
- Viewport updates
Result: Only affected nodes re-execute (efficient!).
Circular Dependencies¶
Not allowed:
Nodo will detect and warn about cycles.
Best Practices¶
1. Organize Your Graph¶
Good Layout:
┌──────┐ ┌───────┐ ┌───────┐
│ Gen │───→│ Mod 1 │───→│ Mod 2 │───→ Output
└──────┘ └───────┘ └───────┘
Bad Layout:
Tips: - Keep flow left → right - Align nodes vertically when possible - Use space to group related nodes
2. Name Your Nodes¶
How: Double-click title → Type new name
3. Use Comments¶
Future feature: Sticky notes to annotate graphs
Current: Use descriptive node names as documentation
4. Break Into Sections¶
Conceptual stages:
Visually separate with spacing.
5. Avoid Spaghetti¶
Too many crossing connections = hard to read
Solution: - Rearrange nodes to minimize crossings - Consider using subgraphs (future feature)
Common Patterns¶
Linear Chain¶
Use: Sequential operations (build, refine, finish)
Parallel Branches¶
Use: Combine separate parts (e.g., base + details)
Scatter-Gather¶
Use: Apply variations, then merge
Feedback Loop (via Parameters)¶
Use: One-way parameter references (not geometry cycles)
Graph vs. Timeline¶
Nodo is Spatial, Not Temporal¶
Not Like: - Video editing (timeline-based) - Animation software (keyframe-based)
More Like: - Programming flowcharts - Data processing pipelines - Spreadsheet formulas
Key Difference: - No "playhead" or "current time" - Graph is the complete procedure - Evaluate, don't animate (yet)
Debugging Your Graph¶
Node Not Updating?¶
Check: 1. Is it connected to the output chain? 2. Are inputs valid (connected nodes)? 3. Are parameters in valid ranges? 4. Any error indicators on node?
Unexpected Result?¶
Isolate: 1. Select node producing wrong result 2. Temporarily delete downstream nodes 3. Examine intermediate output 4. Narrow down problem node
Performance Issues?¶
Optimize: 1. Check for accidentally high poly counts 2. Disable expensive nodes while tweaking 3. Use lower resolution for preview 4. Optimize execution order
Advanced Techniques¶
Expression-Driven Graphs¶
Use expressions to automate:
Now array adapts to building height automatically!
Graph Parameters¶
Expose controls in Graph Parameters panel:
$master_scale - Controls all size parameters
$detail_level - Switches LOD variants
$random_seed - Changes all randomization
Cross-Node References¶
Link parameters between nodes:
Cylinder automatically half of sphere's size!
Keyboard Shortcuts¶
Essential graph shortcuts:
| Action | Shortcut |
|---|---|
| Create Node | Tab |
| Delete | Delete / Backspace |
| Duplicate | Ctrl + D |
| Select All | Ctrl + A |
| Frame All | A |
| Frame Selected | F |
| Pan | MMB drag / Space + LMB |
| Zoom | Scroll wheel |
Next Steps¶
- Understand Geometry - Geometry Types
- Learn Attributes - Attributes
- Use Groups - Groups
- Try a Workflow - Architectural Modeling
Key Takeaways¶
✅ Node graphs = Visual flowcharts for 3D procedures ✅ Data flows left → right through connections ✅ Nodes = Generators, Modifiers, Booleans, Arrays, etc. ✅ Live evaluation - Changes propagate instantly ✅ Organize for readability (naming, layout, spacing) ✅ Think procedurally - Build generators, not static models
Remember: A good node graph is like good code - readable, organized, and maintainable!