System overview

Scenaven uses a hybrid architecture: native VTK simulation data lives on the server, lightweight USD surfaces stream to the browser, and Three.js renders the interactive viewport.

VTK VTK
OpenUSD OpenUSD
Three.js Three.js
┌─────────────────────────────────────────────────────────────┐
│  Browser (Scenaven viewer)                                   │
│  Three.js · scene tree · HUD · filters UI                    │
└───────────────────────────┬─────────────────────────────────┘
                            │ HTTPS (geometry, compile, upload)
┌───────────────────────────▼─────────────────────────────────┐
│  mesh-api (Python + VTK)                                     │
│  Convert · filter · timeline · Python REPL                   │
└───────────────────────────┬─────────────────────────────────┘
                            │
              ┌─────────────┴─────────────┐
              ▼                           ▼
        Google Cloud (GCS)         Local Docker volume

Why this split?

Concern Where it runs
VTK/HDF parsing, clip, warp, extract mesh-api (server)
USD scene packaging for the client mesh-api (server)
Camera, picking, colormaps, HUD Browser (client)
Long-term storage of session assets GCS or local volume

The browser never loads full volumetric grids into WebGL. It requests renderable surface geometry and field metadata, keeping the viewport responsive even for large simulations.

Why Three.js and not WASM? See Why Three.js? for the comparison with Vu-Verse-style WebAssembly viewers.

Main components

Viewer (embed)

The production UI you interact with:

  • Full-screen WebGL viewport
  • Floating sidebar cards (Scene, Rendering, Filters, Viewport)
  • Top HUD for alignment, tools, time, and file actions
  • Agent rail for Python and amAIra (when enabled)

This bundle is served by viewer-ui — the same static app in cloud and on-prem Docker.

mesh-api

The simulation backend:

  • Accepts uploads and converts VTK/HDF to session assets
  • Serves geometry, timelines, and scene metadata
  • Compiles clip, warp, and extract operations on the canonical VTK source
  • Hosts a sandboxed Python REPL on the active session

Auth shell (optional)

A local sign-in page that embeds the viewer in an iframe and passes your AntiNode session to the embed. Most cloud users see this once at login; the embed itself handles visualization.

AntiNode

Provides identity and tenant orchestration for cloud deployments. Your session token authorizes upload, compile, and REPL calls to mesh-api.

One image, two runtimes

The same Docker image runs in:

Mode Storage Typical user
Cloud Google Cloud Storage per tenant Hosted SaaS
On-prem Bind-mounted /data/storage Isolated customer network
Cloud Cloud
On-prem On-prem

Only environment variables and storage backends change — not the viewer or conversion logic.

Related topics