openusd

Version 1.0.0 for Ruby 3.2+

OpenUSD,
in Ruby alone.

Read, compose, edit, and write USDA and USDZ assets without native libraries. Built for pipeline automation, validation, conversion, and scene generation.

gem install openusd no native build
scene.usda composed

/World <Xform>

/Camera <Camera>

/Model <Xform>

/Cube <Mesh>

Runtime dependencies
0
Asset formats
USDA + USDZ
License
MIT

From scene path to portable package.

A deliberately focused implementation of the formats and operations Ruby pipelines use most.

Read

Parse layers, metadata, relationships, time samples, variants, and typed values.

Compose

Resolve authored sublayers and references with explicit missing-asset policies.

Author

Create stages, prims, attributes, schemas, and deterministic USDA output.

Package

Build and inspect aligned USDZ archives with path, CRC, and bounds validation.

A stage in twelve lines.

The Ruby API follows OpenUSD vocabulary, so scene code reads like the asset it creates.

require "openusd"

stage = OpenUSD::Stage.create("scene.usda")
stage.define_prim("/World", "Xform")
cube = stage.define_prim("/World/Cube", "Cube")

cube.create_attribute("size", "double").set(2.0)
cube.create_attribute(
  "xformOp:translate", "double3"
).set([0, 1, 0])

stage.save

Keep the pipeline Ruby.

Add OpenUSD asset tooling without compiling bindings or shipping a native runtime.

Get openusd on RubyGems