USD Web View: Toward Full-Featured OpenUSD on the Web
USD Web View is an open-source, web application that emphasies meaningful, live OpenUSD stage access, access and interactivity. The project is an effort to make a real, inspectable OpenUSD stage available on the web (vs. what I call"USD-derived pixels") and to make the build, binding, and runtime layers public enough for anyone to study and extend.
You can try the live demo here, check out the repo (graciously hosted by the USD Working Group) here, and read on for more context:
Why this work
My first introduction to OpenUSD was upon joining Walt Disney Studios after spending the better part of a decade in real-time graphics, web, game engine and XR domains. Work in interactive 3D systems made the web's strengths especially clear: accessibility, platform independence, and a naturally collaborative ecosystem. But of course, onboarding to and working with major film studio and VFX pipelines such as Pixar's and ILM's made OpenUSD's power, flexibility, and ubiquity equally clear.
Standing at this juncture today, I strongly feel the web should be a natural ecosystem for OpenUSD. In some ways it already is—but much of the current landscape is still made of asset viewers, converters, and proprietary tools. The deepest implementation details are often difficult to study, reproduce, or adapt.
USD on the web is already real—with some fine print
Autodesk's WebAssembly compilation of OpenUSD unlocked significant browser-based capabilities, and the state of the art is moving quickly. USD is already parsed, converted and viewed in web contexts. What's still missing - and the opportunity here - is to make a general-purpose, usdview-inspired application whose runtime behavior and implementation trail are open for refence as well as general contribution.
Something that's not clear unless you've deeply engaged with OpenUSD is that rendering USD-derived pixels is not the same as running a USD stage. USD's value is composition: payloads, variants, layers, authored opinions, material bindings, and runtime stage edits. Flattening too early hides many of the behaviors a USD user actually needs to inspect. To quote the old party line, "It's Not Just A File Format" - it's so much more; but that "more" is often hidden under layers of complexity. This is where the web can help.
A living stage in the browser
Following in the footsteps of Autodesk's original implementation (and fleshing it out for a production-grade tool), USD Web View keeps OpenUSD as the semantic authority. The browser is responsible for interaction, rendering, and presentation; the composed stage remains the source of truth.
- WASM SDK: OpenUSD and the material stack compiled for the browser.
- Native bindings: stage APIs, extraction, edits, materials, splats, skeletal animation, and driver lifecycle.
- Runtime bridge: TypeScript handles file intake, stage loading, material payloads, redraws, animation timing, and UI integration.
- Viewport: Three.js provides WebGL/WebGPU rendering, picking, lighting, MaterialX handling, and navigation.
The current feature set includes USD, USDA, USDC, USDZ, folder drops, and sidecar resources; scene graph and attribute inspection; variant and payload controls; meshes, subsets, normals, UVs, and point instancers; UsdPreviewSurface and MaterialX materials; animation and skinned meshes; USD-authored Gaussian splats; plus visual regression and unit tests.
Inspection without losing the stage
The kitchen-set walkthrough shows the project as an inspection environment rather than just a renderer: orbit and game-engine navigation, scene-graph focus, selected-prim attributes, payload loading and unloading, and runtime variant review all remain available in the same session.
A render-side playground
The viewer also exposes practical lighting and display controls. HDR or EXR maps can be loaded as environment lighting; the background can be shown or hidden; and the interface provides intensity, output color space, tone mapping, and exposure controls. Again, this is just a starting point, driving home the usefulness of the web in general and ThreeJS in particluar in being a playground of ideas, technologies and implementations, limited only by our imagination (why not implement a ThreeJS path tracer? why not WebXR? Why not...)
Animation from stage-authored data
The playbar drives USD time, sampling the composed stage so time-varying transforms, skeletal animation, and animated scene data can be reviewed directly in the browser. Playback and scrubbing stay connected to navigation, material review, and scene inspection instead of becoming a separate export path.
MaterialX interoperability
MaterialX support is grounded in ongoing Three.js work and a fidelity suite that compares reference MaterialX output against Three.js and Blender across hundreds of samples and multiple surface models. The implementation is based on Ben Houston's great, recent work on mtlx standardization and testing across several real-time domains (most helpfully here, ThreeJS of course).
Gaussian splats as USD scene data
The splat implementation follows OpenUSD's ParticleField3DGaussianSplat schema direction. USD Web View extracts the authored particle-field data through the native runtime, then renders it alongside the mesh-stage path with SparkJS. The stage remains the authority while the web renderer provides interactive controls.
Testing, current constraints, and an invitation
Visual regression baselines preserve concrete rendering expectations, while unit tests protect the runtime contracts behind file intake, geometry assembly, stage edits, and automation gates. In its current state, the project has several real constraints: MaterialX depends on active upstream work, MaterialX and splats currently use different renderer paths, and WASM build complexity is still substantial. But it's already a useful reference point: not just for anyone who wants to meaningfully engage with USD on the web, but anyone who wants to utilize a similar infrastructure and doesn't want to invent the WASM-y messy parts from scratch.
The breadcrumbs are arugably the most useful part of this project!
Use the project at the depth that fits your work: as a viewer, as a TypeScript runtime bridge to extend, or as a reference for the native and WASM build layers. You can try the live demo and contribute to USD Web View on GitHub.
Thank you to Pixar, Autodesk, the USD Working Group, and everyone helping make USD on the web a reality—especially Nick Porcino and Jessica Wang for their guidance throughout the design and implementation of USD Web View.