一切从通用格式开始
Omniverse 中资产的主要表示方式采用 Pixar 的开源通用场景描述 (USD) 表示法。USD 不仅仅是一种文件格式,也是一种丰富的场景表示,可利用 API 支持复杂的属性继承、实例化、分层、延迟加载以及其他各类关键特性。Omniverse 使用 USD,通过 Nucleus DB 服务实现资产交换。
这一切的核心是 Omniverse Nucleus
Omniverse Nucleus 提供一组基本服务,使各种客户端应用、渲染器和微服务能够共享和修改虚拟世界的表示。
Nucleus 在发布/订阅模式下运行。根据访问控制,Omniverse 客户端可以将对数字资产和虚拟世界的修改发布到 Nucleus 数据库 (DB),或订阅这些更改。更改在互联的应用之间实时传输。数字资产包括几何图形、灯光、材质、纹理,以及描述虚拟世界及其演变的其他数据。
Connector 为各类应用打开互连门户
Omniverse Connect 库以插件的形式分布,使客户端应用能够连接到 Nucleus,以及发布和订阅单个资产和整个世界。
完成必要的同步后,DCC 插件将使用 Omniverse Connect 库应用从外部接收的更新,并在必要时发布内部生成的更改。
当应用更改场景的 USD 表示时,Omniverse Connect 会跟踪自上次发布活动后的所有本地更改。当应用发出请求后,Omniverse Connect 库将针对每个差异构建一个独立文件,并将其发布到 Nucleus,然后转发给所有订阅者。
Omniverse 流程
在左侧,我们可以看到许多热门 DCC 应用,以及使用 Kit 为 Omniverse 专门创建的新应用。这些应用都能导出 USD 文件格式,并支持 MDL 材质。得益于 Omniverse Connector 插件助力创建的 Omniverse 门户,这些应用可实现与 Nucleus 数据库的连接。
利用 Omniverse Kit 创建您自己的应用
Kit 并非单体应用,而是由一些扩展程序组成,这些扩展程序可作为构建块以多种方式组装,进而助力创建不同类型的应用。由于均采用 Python 编写,所有 UI 元素、工作流程和一般性功能具有很高的可定制性。
Omniverse Kit 是一个用于构建原生 Omniverse 应用和微服务的工具包,基于基础框架而构建,该框架可通过一组轻量级扩展程序提供各类功能。这些独立扩展程序是用 Python 或 C++ 语言编写的插件。
经过设计,Kit 成为了一个灵活且可扩展的应用和微服务开发平台。它可在无外设模式下,或通过 UI 创建微服务。UI 应用可完全使用 UI 引擎编写,从而获得完全的可定制性。
如需获得更出色的性能或访问某些 C++ API,则可以在这些扩展程序中添加较低级别的 C++ 插件,并且也可将这些插件通过绑定连接到 UI。这些扩展程序包括它们单独运行所需的图标、图像和配置