#vfx #unsafe-bindings #usd #omniverse

sys omniverse_sys

Rust interface for Omniverse

3 unstable releases

0.2.0 Apr 28, 2024
0.1.1 Jan 9, 2024
0.1.0 Jan 8, 2024

#443 in Simulation

25 downloads per month
Used in 2 crates (via omniverse)

MIT/Apache

86KB
1.5K SLoC

omniverse_rs

crates.io Rust Docker deps.rs codecov.io

Rust interface for NVIDIA Omniverse.

Status

This project is in early development and is not ready for production use. Not all of the Omniverse Kit API is currently exposed.

Documentation and examples are currently lacking but will be the focus once the crates are more stable.

Overview

The workspace contains these packages:

Most of the bindings are automatically generated from the Omniverse headers using autocxx, while some are hand-written via rust-cpp. The Omniverse Kit can be automatically downloaded during the cargo build process if the vendored feature is enabled.

Dependencies

The complete list of dependencies can be found within Dockerfile.

Instructions

Rust

Add omniverse as a Rust dependency to your Cargo.toml manifest.

[dependencies]
omniverse = { version = "0.2" }

Note that the first build might take up to 1 hour because OpenUSD and Omniverse Kit will be automatically downloaded with the vendored feature enabled (most of the time is spent compiling OpenUSD). The artifacts will be cached in OUT_DIR and reused for subsequent builds.

Alternatively, you can specify the paths to existing OpenUSD and Omniverse Kit installation directories via the following environment variables.

export OPENUSD_PATH=/path/to/pxr/openusd
export CARB_APP_PATH=/path/to/omniverse/kit

It is highly recommended to use lld or mold linker because ld might currently fail.

Docker

To install Docker on your system, you can run .docker/host/install_docker.bash to configure Docker with NVIDIA GPU support.

.docker/host/install_docker.bash

By running the Docker container, you are implicitly agreeing to the NVIDIA Omniverse EULA. If you do not agree to this license agreement, do not use this container.

Build Image

To build a new Docker image from Dockerfile, you can run .docker/build.bash as shown below.

.docker/build.bash ${TAG:-latest} ${BUILD_ARGS}

Run Container

To run the Docker container, you can use .docker/run.bash as shown below.

.docker/run.bash ${TAG:-latest} ${CMD}

Run Dev Container

To run the Docker container in a development mode (source code mounted as a volume), you can use .docker/dev.bash as shown below.

.docker/dev.bash ${TAG:-latest} ${CMD}

As an alternative, VS Code users familiar with Dev Containers can modify the included .devcontainer/devcontainer.json to their needs. For convenience, .devcontainer/open.bash script is available to open this repository as a Dev Container in VS Code.

.devcontainer/open.bash

Join Container

To join a running Docker container from another terminal, you can use .docker/join.bash as shown below.

.docker/join.bash ${CMD:-bash}

Disclaimer

This project is not affiliated with NVIDIA Corporation.

License

This project is dual-licensed to be compatible with the Rust project, under either the MIT or Apache 2.0 licenses.

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~4–11MB
~209K SLoC