1 unstable release
Uses new Rust 2024
| 0.1.0 | Jul 24, 2025 |
|---|
#223 in Data formats
140KB
4K
SLoC
OpenUSD-rs
Work in progress, opinionated implementation of OpenUSD in pure Rust
For now, the focus is on reading from flattened files. It is already possible to extract basic scene information for rendering. Expect major API changes during the early stages of development. Once the official OpenUSD specification is released, we aim to be compliant where possible.
Currently mostly reflects the needs of our own engine but contributions are more than welcome.
Example
use openusd_rs::{gf, vt, usd, usd_geom};
let stage = usd::Stage::open("FlattenedUsdFile.usdc");
let mesh = usd_geom::Mesh::define(&stage, "/Path/To/Mesh/Prim");
// These are arrays of 3D vectors and integers,
// they can be used directly with a graphics API.
let points = mesh.points_attr().get::<vt::Array<gf::Vec3f>>();
let normals = mesh.normals_attr().get::<vt::Array<gf::Vec3f>>();
let indices = usd_geom::triangulate(&mesh);
// Iterate over all top level prims on the stage.
for prim in stage.pseudo_root().children() {
println!("{}", prim.path());
}
Installation
Add openusd-rs to the [dependencies] section of your Cargo.toml.
Credits
Based on Pixar Animations Studios OpenUSD.
Maintained by Lauro Oyen (@laurooyen).
Licensed under MIT or Apache-2.0.
Dependencies
~7MB
~200K SLoC