英文原文:https://docs.omniverse.nvidia.com/kit/docs/kit-manual/latest/guide/kit_overview.html
Omniverse Kit 是用于构建创建和查看等Omniverse应用程序的SDK。 它也可用于开发自己的Omniverse应用程序。
它汇集了几个主要组成部分:
- USD/Hydra (see also omni.usd)
- Omniverse (via Omniverse client library)
- Carbonite
- Omniverse RTX 渲染器
- 脚本编写
- A UI Toolkit (omni.ui)
作为开发人员,您可以使用这些组合来构建自己的应用程序,或者只是扩展或修改已经存在的内容。
USD/Hydra
USD是Kit使用的主要场景描述,既用于内存/创作/运行时使用,也用作序列化格式。
USD可以直接通过外部共享库访问。 如果您的插件通过C++使用USD,则必须链接到此库。 您还可以使用USD自己的python绑定从python中使用USD,这些绑定涵盖整个USD API(但不是所有的依赖项,如Tf,SDF等)。 我们为它生成了参考文档,请参阅pxr包。
Hydra允许USD将其内容流式传输到任何具有Hydra场景委托的渲染器-这些渲染器包括Pixar的HDStorm(目前作为Kit的一部分附带USD软件包)以及Omniverse RTX渲染器和IRay(两者均随 Kit 一起提供)
Omni.USD
Omni.USD(有关 API 文档,请参阅omni.usd 模块)是一个用 C++ 编写的 API,它位于 USD、Kit 的核心和 OmniClient 库之上,并提供与应用程序相关的服务,例如:
- 事件/监听
- 选择处理
- 访问 Omniverse USD 音频子系统
- 访问 Omniverse 客户端库以及处理 Omniverse 资产/URI
- USD 层处理
- USDContext 提供对主 USDStage 及其层以及各种 Hydra、渲染器和 Viewport 相关服务的便捷访问
- MDL 支持
- Python 绑定到上述所有内容,在大多数情况下使用 Python-3 异步 API
Omniverse Client Library
这是 Omniverse 客户端(例如 Kit)在加载和保存资源(例如 USD、MDL 和纹理)时用来与 Omniverse 服务器以及本地文件系统进行通信的库。 它包含了:
- 用于解析omniverse:// URI 的USD资产解析器
- 一些 SDF 文件格式插件支持特殊用例,包括 Omniverse 的实时编辑模式
- 用于在 Omniverse Nucleus 服务器上读/写/复制数据/文件和类似文件系统的查询的 API
- 支持管理与 Omniverse 服务器的连接
- Python 绑定到上述所有内容,在大多数情况下使用 Python-3 异步 API
Carbonite
Carbonite SDK 提供所有 Omniverse 应用程序的核心功能。 这是一个基于 C++ 的 SDK,提供以下功能:
- 插件管理
- 输入处理
- 文件访问
- 持久设置管理
- 声音
- 资产加载和管理
- 线程和任务管理
- 图片加载
- 本土化
- 同步
- 基本窗口
所有这些都是通过一个独立于平台的 API 提供的。
插件
Carbonite插件基本上是具有C风格接口的共享库,可以动态加载和卸载。 接口按语义进行版本控制并支持向后兼容性。
大多数插件接口都有 python 绑定,即它们可以从 python 访问。 使用 pybind11 库。 对于您自己的插件,您还可以编写 python 绑定并使其可以直接从 python 访问。
Omniverse RTX 渲染器
如上所述,Pixar 的 Hydra 用于 USD 和 RTX 之间的接口。 这是一个架构复杂性很高的领域,因为 Kit 需要支持大量渲染器、多个自定义场景委托、多个 Hydra 引擎(以支持 GL、Vulkan、DX12)和许多其他要求,在 Kit 应用程序内提供带有 Gizmos 和其他控件的视口,所有这些都以高帧速率异步渲染
脚本编写
套件附带 python 版本(当前为 3.7)。 您可以在基于 Kit 的应用程序中运行任意 python 脚本,这些脚本可以:
- 访问通过 python 绑定公开的所有插件
- 访问USD Python API
- Access Kit 仅包含 python 模块
- 加载并访问您的 C++ Carbonite 插件
目前有3种方式运行脚本:
- 在应用程序启动时通过传递 cmd 参数。 例如:kit.exe --exec“some_script.py”
- 使用控制台窗口
- 使用脚本编辑器窗口
Kit 扩展
构建在脚本和 Carbonite 插件之上的是最高级别且可能是最关键的构建块:套件扩展。 您可以将扩展视为具有运行时启用/禁用状态的版本化包。 这些扩展可以依赖于其他扩展。
omni.ui
我们的 UI 框架 Omni.ui 构建在 Dear Imgui 之上。 用 C++ 编写,但仅公开 Python API。