#vfx #usd

pxr

Rust 对 OpenUSD 的接口

4 个版本

0.2.0 2024年4月27日
0.1.2 2024年1月9日
0.1.1 2024年1月8日
0.1.0 2024年1月5日

#56 in 模拟

Download history 15/week @ 2024-04-20 275/week @ 2024-04-27 9/week @ 2024-05-04 28/week @ 2024-05-11 38/week @ 2024-05-18 15/week @ 2024-05-25 19/week @ 2024-06-01 15/week @ 2024-06-08 17/week @ 2024-06-15 22/week @ 2024-06-22 3/week @ 2024-06-29 1/week @ 2024-07-06 31/week @ 2024-07-13 19/week @ 2024-07-20 14/week @ 2024-07-27 12/week @ 2024-08-03

每月下载量 76
3 个 Crates 中使用 (2 直接)

MIT/Apache

215KB
5.5K SLoC

pxr_rs

crates.io Rust Docker deps.rs codecov.io

OpenUSD 的 Rust 接口。

状态

该项目处于早期开发阶段,尚未准备好用于生产。目前并未完全暴露 OpenUSD API。

文档和示例目前不足,但将在 Crates 更加稳定后成为重点。

目前,该项目主要针对通过 pxr_sys 的默认功能 编译的 OpenUSD 22.11 进行开发。

概述

工作空间包含以下包

  • pxr_build: 构建 OpenUSD 绑定的辅助 Crates
  • pxr_sys: OpenUSD 的不安全 Rust 绑定
  • pxr: OpenUSD 的安全 Rust 绑定(WIP)

大多数绑定都是通过使用 autocxx 从 OpenUSD 标头自动生成的,而有些则是通过 rust-cpppxr_build 内的附加宏手工编写的。如果启用 vendored 功能,OpenUSD 的 C++ 库可以在 cargo 构建过程中自动下载和编译。

依赖项

完整的依赖项列表可以在 Dockerfile 中找到。

启用额外的非默认功能可能需要额外的依赖项。目前尚未测试/记录。

说明

Rust

pxr 添加到您的 Cargo.toml 清单中的 Rust 依赖项。

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

请注意,第一次构建可能需要50分钟,因为OpenUSD将被自动下载并编译,同时启用vendored功能。构建物将被缓存在OUT_DIR中,并在后续构建中复用。

或者,您可以通过以下环境变量指定现有OpenUSD安装目录的路径。

export OPENUSD_PATH=/path/to/pxr/openusd

强烈建议使用lldmold链接器,因为ld可能会目前失败。

Docker

要在您的系统上安装Docker,您可以通过运行.docker/host/install_docker.bash来配置具有NVIDIA GPU支持的Docker。

.docker/host/install_docker.bash

构建镜像

要从Dockerfile构建新的Docker镜像,您可以运行以下命令。

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

运行容器

要运行Docker容器,您可以运行以下命令。

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

运行开发容器

要运行以开发模式(源代码作为卷挂载)运行的Docker容器,您可以运行以下命令。

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

作为替代方案,熟悉Dev Containers的VS Code用户可以修改包含的.devcontainer/devcontainer.json。为了方便起见,提供了.devcontainer/open.bash脚本来将此存储库作为VS Code中的开发容器打开。

.devcontainer/open.bash

加入容器

要从另一个终端加入正在运行的Docker容器,您可以运行以下命令。

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

免责声明

本项目与OpenUSD联盟(AOUSD)无关。

许可协议

本项目双许可以与Rust项目兼容,可在MITApache 2.0许可证下使用。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将按照上述方式双许可,无需任何附加条款或条件。

依赖项

~3.5–9MB
~169K SLoC