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-corepackage. It is the testing distribution channel for the Pyodide/wasm build of theusd-coremodule 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 officialusd-corefor those. - Cannot coexist with
usd-core. Both distributions own thepxrimport package, so they cannot be installed into the same environment. In practice this never conflicts:usd-corepublishes 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), nousdGenSchema/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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grill_usd_core-26.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl.
File metadata
- Download URL: grill_usd_core-26.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
- Upload date:
- Size: 11.8 MB
- Tags: CPython 3.14, PyEmscripten 2026.0 wasm32
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
278c8782601a5a6ca9e1ab663c3ac9075b97639a071cf1c9de0ea5ce0be2acd9
|
|
| MD5 |
52aec9fa3a51c3b8034ac7072840f5ec
|
|
| BLAKE2b-256 |
49c19ab0236ad449400df6982fcec2df08fc3944eb757e64df3071f52dabb576
|