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.

VTK VTK
OpenUSD OpenUSD
Three.js Three.js

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 .vtu files
  • 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