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文件格式则是为了打破这些界限。更详细些的说明如下:
-
用以制作电影,动画,游戏的渲染流水线,通常会生成、存储和传输大量的 3D 数据,我们称之为“场景描述”。管道中的每一个协作应用程序(译注:可以理解为渲染流水线中的每一个具体功能)(如建模、着色、动画、照明、特效、渲染等)中的每一种,通常都有其特殊形式的场景描述,这些场景描述是为应用程序的特定需求和工作流程量身定制的,任何其他应用程序都无法读取或编辑应用。 Universal Scene Description (USD) 是第一个公开可用的软件,它满足了稳健和可扩展地交换和增强“可能由许多元素资产组成的”任意3D场景的需求。
-
USD 提供基本资产(例如模型)或动画的交换。但与其他交换包不同,通过“在单个场景图中,使用一个单一且一致的 API”的方式,USD 还可以将任意数量的资产组装和组织到虚拟场景、场景、镜头和世界中,然后将它们从一个应用程序传输到另一个应用程序,并以覆盖的方式,对它们进行非破坏性编辑。USD 提供了丰富的工具集,用于读取、编写、编辑和快速预览 3D 几何、阴影、照明、物理以及越来越多的其他图形相关领域。此外,由于 USD 的核心场景图和合成引擎,不受任何特定领域的影响与限制,故而可以可维护的方式扩展 USD,以在其他领域编码和合成数据。
-
与许多其他交换包一样,USD 提供了一个低阶数据模型,该模型在“文件格式级别”规定了数据的编码和组织方式,以及一组(可扩展的)高级模式,这些模式提供有意义的 API,以及对”网格“或”变换“等概念,进行组织。有了这样的基础,就可以创建几何体、材质、光源和其他属性的资产定义。但 USD 进一步提供了一组可自由组合的组合弧,这些组合弧通过一个高性能的运行时求值引擎,,可用于打包、聚合、变化和覆盖各种(场景中的)基本元素和资产,在一个被称为”Stage“的紧凑型场景中,可以用来解析生成的组合场景描述,并从中提取(和创作)数据。
-
通过组合弧,允许多位艺术家在相同的资产和场景上进行协作。 使得并行操作同一个数字内容成为可能。举个例子:假定A公司要做一个10公里x10公里的虚拟场景,A公司分包给B,C,D,E四个公司做,每个公司各认领东南西北5x5公里的区域的,各自用各自的趁手工具,比如B公司用3DS MAX,C公司用Maya,D和E公司用Blender去做。通过USD这个格式,并行而统一地开发这个大场景。
-
与许多媒体一样,实现高质量数字艺术的最重要因素之一是能够快速且经常迭代设计。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到什么程度了?
- Unity提供了名为USD的扩展包,一定程度上支持了USD文件的使用
- 必须使用.NET 4.x。所以目前位置,可能只能在桌面平台上使用
- 要使用最高保真度的顶点蒙皮,所以在Quality界面中的Skin Weights选项要选择Unlimited。
- USD支持导入.usd,.udsa,.usdc,以及Alembic的.abc。对于一份USD文件,可以将其导入成一个场景中的GameObject,一个Prefab,或者是一段Timeline动画的动画剪辑(如果USD本身含有动画的话)
- 目前版本的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。它将 在年底前发布测试版