Universal Scene Description概述

什么是USD,为什么要使用USD

Univsersal Scene Description (USD)是一种易于扩展的开源 3D 场景描述和文件格式,由Pixar开发,用于不同工具之间的内容创建和交换。USD是是 NVIDIA Omniverse™ 的基础,NVIDIA Omniverse™是一个实时协作平台,可将各种内容创建工具相互连接,并将之连接到NVIDIA的实时NVIDIA RTX™光线追踪技术。简单地说:3DS MAX有.max格式,Maya有.mb格式,Cinema4D有.c4d格式,这些格式互不兼容。usd文件格式则是为了打破这些界限。更详细些的说明如下:

  1. 用以制作电影,动画,游戏的渲染流水线,通常会生成、存储和传输大量的 3D 数据,我们称之为“场景描述”。管道中的每一个协作应用程序(译注:可以理解为渲染流水线中的每一个具体功能)(如建模、着色、动画、照明、特效、渲染等)中的每一种,通常都有其特殊形式的场景描述,这些场景描述是为应用程序的特定需求和工作流程量身定制的,任何其他应用程序都无法读取或编辑应用。 Universal Scene Description (USD) 是第一个公开可用的软件,它满足了稳健和可扩展地交换和增强“可能由许多元素资产组成的”任意3D场景的需求。

  2. USD 提供基本资产(例如模型)或动画的交换。但与其他交换包不同,通过“在单个场景图中,使用一个单一且一致的 API”的方式,USD 还可以将任意数量的资产组装和组织到虚拟场景、场景、镜头和世界中,然后将它们从一个应用程序传输到另一个应用程序,并以覆盖的方式,对它们进行非破坏性编辑。USD 提供了丰富的工具集,用于读取、编写、编辑和快速预览 3D 几何、阴影、照明、物理以及越来越多的其他图形相关领域。此外,由于 USD 的核心场景图合成引擎,不受任何特定领域的影响与限制,故而可以可维护的方式扩展 USD,以在其他领域编码和合成数据。

  3. 与许多其他交换包一样,USD 提供了一个低阶数据模型,该模型在“文件格式级别”规定了数据的编码和组织方式,以及一组(可扩展的)高级模式,这些模式提供有意义的 API,以及对”网格“或”变换“等概念,进行组织。有了这样的基础,就可以创建几何体、材质、光源和其他属性的资产定义。但 USD 进一步提供了一组可自由组合的组合弧,这些组合弧通过一个高性能的运行时求值引擎,,可用于打包、聚合、变化和覆盖各种(场景中的)基本元素和资产,在一个被称为”Stage“的紧凑型场景中,可以用来解析生成的组合场景描述,并从中提取(和创作)数据。

  4. 通过组合弧,允许多位艺术家在相同的资产和场景上进行协作。 使得并行操作同一个数字内容成为可能。举个例子:假定A公司要做一个10公里x10公里的虚拟场景,A公司分包给B,C,D,E四个公司做,每个公司各认领东南西北5x5公里的区域的,各自用各自的趁手工具,比如B公司用3DS MAX,C公司用Maya,D和E公司用Blender去做。通过USD这个格式,并行而统一地开发这个大场景。

  5. 与许多媒体一样,实现高质量数字艺术的最重要因素之一是能够快速且经常迭代设计。USD将利用现代多核系统和 GPU ,大幅度地提升迭代设计的效率。

USD是不是只是一种跨软件的3D文件格式

简单地说,USD除了可以视为.FBX,.C4D等3D软件的文件格式,“即描述组成一个3D场景的数据是如何组织的”之外, 还存储了“怎样去渲染3D场景”的行为方法。USD 有许多插件点,包括如何解释可自定义的资产如何对当前所描述的场景进行成像教授 USD 如何读取其他文件格式,等等。

Omniverse和USD之间的关系

Omniverse是完全围绕USD构建的应用程序。Omniverse的USD不仅仅只是导入和导出的一种格式而已,你在Omniverse里面实际操作、制作的文件就是USD本身。在Omniverse中,打开一个场景就会发现右边列出了所有光线追踪效果,这些都是通过USD表达的,你也可以改变其属性。比如你改变了灯光或者移动了某个物体时,可以看到右边USD的某项值在发生改变,这证明你操作的文件就是USD自身,这在Omniverse中首次实现。

Unity支持USD到什么程度了?

  1. Unity提供了名为USD的扩展包,一定程度上支持了USD文件的使用
  2. 必须使用.NET 4.x。所以目前位置,可能只能在桌面平台上使用
  3. 要使用最高保真度的顶点蒙皮,所以在Quality界面中的Skin Weights选项要选择Unlimited
  4. USD支持导入.usd,.udsa,.usdc,以及Alembic的.abc。对于一份USD文件,可以将其导入成一个场景中的GameObject一个Prefab,或者是一段Timeline动画的动画剪辑(如果USD本身含有动画的话)
  5. 目前版本的USD支持导入材质,但局限于HDRP,旧管线,还有部分支持LWRP,目前官方文档尚未明确说明支持URP。目前USD扩展包提供的几个shader都很简单,而且是基于旧管线的。

总得来说,如果不考虑别的,不考虑整合Onmiverse,仅把USD作为一个通用的格式文件的话,还是可以载入到Unity中使用的,但可能需要对USD内容生产者作出约束和规范。因为Unity对USD的支持还在持续完善中,有些USD的功能未必在当下的Unity能得到支持。

Unity和Omniverse整合到什么程度

  • 任何一个软件,想和NVIDIA Omniverse架构整合,则需要编写NVIDIA Omniverse Connector
  • 在发布时,Omniverse 已与 Unreal Engine 兼容, 但缺乏对 Unity 的支持。实际上, NVIDIA 开始同时开发这两种连接器,但 UE 的开发速度要快得多
  • NVIDIA 在 GTC 2022 上正式宣布为 Omniverse 开发 Unity connector。它将 在年底前发布测试版

参考网页

NVIDIA的USD相关网页汇总入口 Pixar的Introduction to USD Pixar的USD API文档 USD 能统一元宇宙吗?
Pixar USD 浅谈(一) Pixar USD 浅谈(二) Pixar USD 浅谈(三) USD文件格式简介
Unity与USD Unreal与USD 皮克斯USD流程以及它的优点 【UE4】USD使用指南(解放生产力!)
Pixar USD介绍 《Insight Pixar USD》目录 Pixar USD编写和高级功能 NVIDIA announces Unity connector for Omniverse at GTC 2022
Omniverse先锋人物大聊元宇宙,详解CG行业核心痛点