Skip to main content

Unofficial, experimental WebAssembly (Pyodide 314 / wasm32) build of Pixar's Universal Scene Description (usd-core module set)

Project description

grill-usd-core

Unofficial, experimental WebAssembly (Pyodide) build of Pixar's OpenUSD Python bindings.

This package is not affiliated with or endorsed by Pixar Animation Studios, and it is not the official usd-core package. It is the testing distribution channel for the Pyodide/wasm build of the usd-core module set, maintained in the chrizzFTD/OpenUSD fork for the grill / pyrepl-web tooling.

What it is

The complete usd-core Python module set (Tf, Sdf, Usd, UsdGeom, … — no imaging), cross-compiled to wasm32 for Pyodide 314 (CPython 3.14, Emscripten ABI 2026_0, PEP 783 pyemscripten_2026_0_wasm32 wheel tag).

The C++ core ships once as a shared libusd_ms.so Emscripten side module vendored in grill_usd_core.libs/, with thin _*.so extension modules dynamically linking against it, plus the USD plugin registry under pxr/pluginfo/.

Installing

In a Pyodide 314 runtime (browser or Node):

import micropip
await micropip.install("grill-usd-core")

Or with pyrepl-web:

<py-repl packages="grill-usd-core"></py-repl>

Or natively into a pyodide venv:

pyodide venv .venv-pyodide
.venv-pyodide/bin/pip install grill-usd-core

Usage

The import name is pxr, exactly like the official usd-core:

from pxr import Usd, UsdGeom

stage = Usd.Stage.CreateInMemory()
world = UsdGeom.Xform.Define(stage, "/World")
cube = UsdGeom.Cube.Define(stage, "/World/Cube")
stage.SetDefaultPrim(world.GetPrim())
print(stage.GetRootLayer().ExportToString())

Caveats

  • WebAssembly only. The wheel is pyemscripten_2026_0_wasm32 — it installs only under Pyodide 314 / Python 3.14 on Emscripten. There are no native (Linux/macOS/Windows) wheels here; use the official usd-core for those.
  • Cannot coexist with usd-core. Both distributions own the pxr import package, so they cannot be installed into the same environment. In practice this never conflicts: usd-core publishes no Emscripten wheels.
  • Experimental. This is an alpha-quality testing build; APIs match the upstream OpenUSD release it was built from, but the wasm port itself is young. No imaging (UsdImagingGL/usdview), no usdGenSchema/CLI tools.

Source and build

Built from the chrizzFTD/OpenUSD fork (build_scripts/pyodide/); see docs/pyodide/PLAN.md for the roadmap and a browser demo under extras/pyodide/demo/.

OpenUSD is licensed under the Tomorrow Open Source Technology License 1.0 (LicenseRef-TOST-1.0); see the bundled LICENSE.txt.

Project details


Release history Release notifications | RSS feed

This version

26.8

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grill_usd_core-26.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl (11.8 MB view details)

Uploaded CPython 3.14PyEmscripten 2026.0 wasm32

File details

Details for the file grill_usd_core-26.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl.

File metadata

File hashes

Hashes for grill_usd_core-26.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Algorithm Hash digest
SHA256 278c8782601a5a6ca9e1ab663c3ac9075b97639a071cf1c9de0ea5ce0be2acd9
MD5 52aec9fa3a51c3b8034ac7072840f5ec
BLAKE2b-256 49c19ab0236ad449400df6982fcec2df08fc3944eb757e64df3071f52dabb576

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page