noodles_grid is a real-time visualization server for power system simulation data.
It loads precomputed datasets, builds optimized instance renderings, and streams live interactive scenes to connected clients.
Built for high scalability, flexible visualization, and fast interaction.
NREL SWR-25-93
- 📈 Visualize power system data — voltages, real power, reactive power, line loads
- 🔎 Interactive probes — drag and drop probes to inspect nearby line data
- 🛠 Instanced rendering — buses, lines, transformers, generators, hazards, and flows
- 🗺 Floorplan support — map datasets over embedded floorplan images
- 🔄 Automatic timestep playback — play, pause, or step through simulation time
- 🧩 Extensible server API — built-in method invocation system
- 🌐 Zero-config discovery — mDNS advertising for easy local client discovery
- Load Dataset:
- A Cap'n Proto file (
*.bin) describing the system lines, transformers, and generators.
- A Cap'n Proto file (
- Setup Geometry:
- Instanced geometry is created for every object type, optimized for GPU uploads.
- Stream Scene:
- A lightweight server pushes updates to clients using colabrodo infrastructure.
- Client Interaction:
- Users can step through time, move probes, inspect data, and trigger events.
- Rust 1.74+
- Cap'n Proto installed (for dataset generation)
- A
.bindataset file to visualize
git clone https://github.com/nicholasbl/noodle_grid.git
cd noodles_grid
cargo run --release -- your_dataset.packThe server will print:
Connect clients to port: 50000
Clients can connect directly, or discover via Bonjour/mDNS.
| Argument | Description | Default |
|---|---|---|
--port |
Port to host server on | 50000 |
--pack-path |
Path to .bin dataset file |
(Required) |
-
Base Map:
An optional floorplan or satellite image is displayed flat on the ground for geographic context. -
Conductors:
- Lines are shown rising up from the base map.
- Line height is determined by unit voltage (higher voltage floats higher).
- Line thickness is proportional to real and reactive power flow.
-
Buses:
- Shown as small points between connected conductors.
-
Transformers:
- Represented as vertical lines plunging from elevated conductors into the ground.
-
Generators:
- Shown as distinctive glyphs, sized according to real power output.
-
View Mode Switching:
- Using the "Toggle Line Load" method, users can switch to a percentage load view, where line height reflects how much of their rated capacity the lines are using.
-
Probes:
- Users can use the "Create Probe" method to place movable probes on the scene.
- Probes attach to the nearest conductor and automatically generate live charts of voltage, real power, and reactive power over time.
-
Bird's Eye View:
- Scene defaults to a top-down view for easy understanding of grid layout.
-
Project is modularized into:
state— core server state machineinstance— dynamic instance buffer generationmethods— API methods for interactiongeometry— primitive generationtexture— embedded texture managementprobe— interactive probe systemchart— chart generation (plotters backend)ruler— floor ruler generationimport_obj— OBJ loader utilities
-
Everything is documented for
cargo docoutput.
To generate developer documentation:
cargo doc --open- To be added!