VTK, OpenUSD & Three.js
Three technologies share the pipeline. Each one has a job, and the jobs stay separate so a simulation file can become an interactive view without putting the whole simulation inside the browser.
The recipe
VTK is the simulation on the server. OpenUSD is the scene description the server writes for the viewer. Three.js draws that scene in the browser.
You open a VTK file. The server converts and filters it with VTK, writes an OpenUSD scene, and the viewer draws the surfaces with Three.js.
VTK — the simulation
VTK is the format and the toolset simulation work already uses: meshes, fields, and time. Scenaven keeps that work on the server.
It is responsible for:
- Reading
.vtk,.vtkhdf,.vtp, and.vtufiles - Holding the simulation you loaded, which every filter and Python snippet uses
- Clip, warp, extract, and preparing frames for playback
- The Python session on that same simulation
The viewer does not draw with VTK, and you do not upload OpenUSD files. VTK stays on the server so the full grid does not have to fit in the browser.
OpenUSD — the scene the viewer loads
OpenUSD is the scene the server hands to the browser after conversion, and again after each filter. It carries:
- The structure you see in the Scene tree: the source, and children such as clip, warp, and extract
- Names of fields, value ranges, and time steps
- Which object is active, and what is visible
- The surfaces and field values the view can draw
OpenUSD does not replace VTK for the simulation math, and it is not something you upload. When you clip or warp, VTK runs on the server, the result is written into the scene, and a child appears in the scene tree. See Why OpenUSD?.
Three.js — the interactive view
Three.js draws the scene in the browser. It is responsible for:
- Orbit, pan, and zoom
- Colormaps, legends, opacity, and display style
- Picking, probes, and the rubber-band tools for extract
- The time controls, which ask the server for each frame
It does not read the full volume, run clip or warp on the simulation, or host Python. Those stay on the server, which is why the view can stay quick. See Why Three.js?.
How a file becomes a picture
Your VTK file
→ the server converts it with VTK
→ an OpenUSD scene is stored for the session
→ the browser fetches the surfaces and field values
→ Three.js draws the mesh
Editing a filter repeats the same loop: VTK runs on the server, the scene updates, and the view refreshes.
| Step | Technology | Where |
|---|---|---|
| Upload and convert | VTK | Server |
| Scene the viewer loads | OpenUSD | Server writes it, browser reads it |
| Filter, extract, Python | VTK | Server |
| View and controls | Three.js | Browser |
Why these three
| Choice | What it gives you |
|---|---|
| VTK | One simulation for opening files, filters, time, and Python |
| OpenUSD | A scene the browser can load without taking on VTK’s job |
| Three.js | A responsive 3D view for camera, color, and picking |
Large data stays on the server. Inspection stays in the browser.
Related topics
- System overview — browser, server, cloud, and on-prem
- Why OpenUSD? — the scene the server writes
- Why Three.js? — drawing in the browser
- Data flow — load, filter, and time, step by step
- Load simulation data — which files you can open