Data flow
This page describes what happens behind the UI when you load data, apply filters, or open an example.
Load path (VTK / VTKHDF / HDF)
You click Open and select a file
→ Browser uploads to mesh-api
→ VTK pipeline reads the volume or surface
→ Master USD + timeline assets written to storage
→ Viewer requests geometry for the active session
→ Three.js mesh appears; scene tree shows Source
What you see in the UI
- Sidebar footer may show Cloud conversion or Local conversion with a progress bar.
- When complete, the viewport renders the surface and the Scene card lists your source node.
- Scalar fields appear in the Rendering card dropdown after metadata arrives.
Surface-native formats (.vtp, .vtu, some USD) may skip heavy conversion but still flow through the same session model.
Filter and compile path
You edit warp or clip in the sidebar
→ Viewer sends a compile request to mesh-api
→ VTK filter runs on the canonical source mesh
→ New derived surface exported to USD
→ Scene tree gains a child node (Clip, Warp, …)
→ Viewer refreshes geometry for the active node
What you see in the UI
- A processing overlay may appear (*Applying clip filter*, *Applying warp filter*, etc.).
- The new node appears under Source in the scene tree.
- Select the child to view only that result, or toggle visibility to compare parent and child.
Clip planes can also be dragged in the viewport when Show clip plane in viewport is enabled — the compile request updates when you finish dragging.
Extract path (HUD tools)
You rubber-band a region and choose Extract cells or Extract points
→ Viewer sends selection + extract request
→ mesh-api runs VTK extract on the server
→ Derived node added to the scene tree
Extract requires an active server session and a loaded volumetric source. The tools are disabled until a mesh is ready.
Examples gallery path
You pick an example from the gallery
→ mesh-api activates pre-seeded assets (no re-upload)
→ Same geometry load path as a user upload
→ Scene tree shows the example as Source
Examples are stored on mesh-api storage (examples/{id}/) and seeded during cloud deploy or on first Docker start.
Time animation path
Your dataset has multiple time steps in storage
→ Viewer loads timeline metadata
→ Time controls enable in the top HUD
→ Stepping or playing requests geometry per frame
→ Active filters re-apply per step (server bake when needed)
When clip or warp is active across time, the first play action may trigger Building animation… while mesh-api bakes frames.
What stays lightweight
| Operation | Runs on |
|---|---|
| Orbit / pan / zoom | Browser |
| Colormap, opacity, display style | Browser |
| Point / cell probe (readout) | Browser (samples cached fields) |
| Upload, convert, clip, warp, extract, REPL | mesh-api |
Geometry reads are designed to be fast; destructive or compute-heavy routes show progress in the UI.
Related
- Why Three.js? — why compute stays on mesh-api
- Load simulation data