USD(通用场景描述)是皮克斯开发的一种文件格式,用于在数字内容创作应用程序之间交换3D计算机图形场景。它是一种可扩展的开源文件格式,可以存储关于3D几何体、着色、光照、物理和其他图形相关领域的信息。它还可以组合和覆盖来自多个来源的数据,创建一个可以非破坏性编辑的单一场景图。
USD被广泛应用于设计、建筑、动画和游戏等多个行业,并受到Blender、Cinema 4D、Houdini、Maya和苹果公司的SceneKit等众多软件应用程序的支持。USD也是皮克斯3D图形流程的核心,以及英伟达Omniverse平台的基础。
通用场景描述(USD)规范使用以下几种文件格式:
- .usd – 可以是ASCII或二进制编码
- .usda – ASCII编码
- .usdc – 二进制编码
- .usdz – 一种压缩率为零、未加密的zip压缩包格式的封装文件。可以包含.usd、.usda、.usdc、.png、.jpeg、.m4a、.mp3和.wav文件。
Blender(或任何其他3D软件)通过其界面让你轻松完成许多任务,但一旦你开始将其他软件引入你的流程,问题就会接踵而至。因此,让我们来谈谈你可能已经遇到的最大问题,以及皮克斯如何创造解决方案来克服这些问题,并将其发挥到极致。
问题所在
如果你曾经在Substance Painter中对模型进行纹理处理,将你的作品导入Unreal引擎,或者尝试与使用不同软件的人分享项目,你可能已经意识到这有多么麻烦。不得不处理不同的文件类型,针对每个软件制定正确的导出流程,并在过程中丢失宝贵的数据,会让你感觉像是在故意用头撞墙一样。
请相信我,这几乎是所有3D艺术家都会遇到的情况——无论你是一个使用自定义流程的独立创作者,还是像皮克斯这样的大型工作室,都必须遵守严格的流程约束,才能为其他1232名员工维持适当的工作流程。问题始终存在。
问题根源
但这很合理,不是吗?每个软件都使用一种专有的文件类型,以满足自身的需求。例如,来自Blender的文件经过编码,可以在Blender中使用,但不能在Substance Painter中使用。显然,在公司里,每个艺术家都需要一个与自己选择的工具兼容的文件,以便轻松甚至有可能继续进行项目工作。
这就是为什么在切换到不同的软件或将你的项目交给下一个人时,必须导出到更通用的文件类型(如FBX或OBJ)的原因。但即使是这些文件类型也有很多限制,比如无法正确存储模拟、光照以及Blender项目的许多其他方面。
USD介绍
那么,解决这个问题的答案是什么呢?通用场景描述(USD)!皮克斯于2016年首次将其作为开源软件发布,作为其新的核心流程,USD主要是为了让他们的艺术家更容易地在彼此和他们使用的工具之间移动数据。
自发布以来,USD一直在不断地进行更改和改进,这对于像Blender这样的开源软件来说很常见,Blender也在不断地更新和扩展。
什么是USD?
USD有很多功能,如果我深入研究它,它实际上可能是一个非常技术性和复杂的东西。但简单来说,USD是一种让Blender、Unreal、Houdini、Substance Painter、Maya、Nvidia Omniverse等应用程序能够相互通信和理解的方式。
在计算机行业中,实际上有一个专门的词来描述这一点——互操作性。有点难说!然而,无论它听起来多么花哨,它实际上并不像你想象的那么复杂。你今天就可以在自己的电脑上开始使用它,甚至可以与世界各地的多个朋友或同事一起使用。
USD的不同之处
传统上,流程是一个非常单向的东西,每个人只有在前一个人完成后才能开始工作。或者对于你个人而言,只有在建模完全完成后,你才能进入流程的下一步,例如纹理处理。
你可以将这比作烤蛋糕——在构建和制作这个蛋糕时,你必须完成每个步骤才能开始下一个步骤。你不能在混合面团之前烤蛋糕,也不能在烤箱里烤蛋糕之前构建它。每个步骤都依赖于前一个步骤的完成。
更重要的是,一旦你涂上糖霜和馅料,或者决定海绵蛋糕需要是巧克力味的,就没有回头路了。你不能把蛋糕拆开重新烤,把口味改成香草味,或者去掉糖霜。这就是我们所说的破坏性工作流程。
然而,USD更像是乐高积木。每个积木代表3D场景的一部分——角色、物体、环境等等——你可以独立地组装、拆卸和修改这些积木。
在传统的流程中,更改一个积木将需要调整其余的结构。但是,使用USD,每个构建块都可以独立工作,我可以简单地将一个积木更改为不同的颜色,而无需重建整个模型。
这是一种非破坏性的方法,它允许实验和协作工作流程,而不会受到流程限制的束缚。
USD的目标
使用USD的最终目标是创建一种数据可以在应用程序之间自由移动的方式,让艺术家和团队能够专注于创作,而不是专注于导出,以及被困在等待彼此完成工作才能继续工作。如果概念团队决定在稍后的阶段进行更改,艺术家不应该被迫重新开始。并且来自其他程序的文件格式不应该在你的首选软件中出现问题。
从服务层面来看,这似乎是USD的定位——一种高度互操作的文件格式,可以在不同的软件之间轻松交换。公平地说,这对大多数Blender用户来说就是这样,因为我们中的很多人倾向于单独工作。但USD不仅仅是一种文件类型……
它是一种将任意数量的资产组装和组织成虚拟场景、镜头和世界的方式——在应用程序之间使用它们,并经常实时地对它们进行非破坏性编辑。
如何使用USD
现在让我们来看看如何在Blender工作流程中使用USD。从最基本的形式来看,自从3.6版本以来,USD一直是Blender中的一个导出选项。因此,如果你正在处理一个文件,并想将其保存为USD文件,你可以转到文件 > 导出 > 通用场景描述,它会弹出一个窗口提示你保存文件。
它有很多选项,但主要需要注意的是:
- 仅选择 – 将仅包括你导出的所选对象
- 动画和头发 – 将包括/排除对象的动画和头发粒子数据
这是一个关于USD如何工作的绝佳例子。这是一个来自英伟达USD示例库的文件,该文件是在3ds Max和Substance Painter等一系列软件中制作的。如果你通过导入在Blender中打开它,它几乎可以100%立即工作!
正如你所看到的,它包含所有数据,包括灯光、景深、相机、材质等等。唯一没有正确导出的东西是HDRI灯光,我们需要自己设置。但令人难以置信的是,它在3DS Max的Arnold渲染器中看起来几乎完全相同,并且只需使用一种文件类型就可以导出到Blender,并且效果一样好!
它具有正确的层级结构、材质,并且基本上所有内容都已设置好。这真的很酷!总之,这说明了USD如何在不同的应用程序之间工作,以及它如何作为一种互操作的文件格式发挥作用。
USD的实际示例
现在让我们看一个更实际的例子。对于这个流程示例,我将使用一个典型的流程,即使用Blender为游戏建模。
传统的流程大概是这样的:
- 在Blender中创建模型
- UV展开模型
- 导出为FBX,因为Painter无法使用Blender文件
- 将FBX导入Substance Painter
- 在Substance Painter中添加材质
- 将纹理导出为图像
- 将FBX导入游戏引擎
- 手动设置纹理
- 创建渲染
使用USD,我们可以显著简化这个过程,并保留一个很大程度上非破坏性的工作流程。该流程与Blender和Substance Painter作为主要组件非常相似。
但由于USD不能在这些应用程序之间本地实时工作(主要是因为Blender仍然对USD的支持有限),我将使用 Nvidia Omniverse 为我们创建这种连接。
通过Omniverse,我可以访问英伟达构建的更兼容USD的Blender分支。我可以为Substance Painter启用Omniverse连接器,以实现LifeLink。我可以使用USD Composer来弥合应用程序之间的差距,并查看最终产品。
通过这种设置,我们现在可以在自定义Blender分支中打开我们的Blender项目。如果然后我们点击N并转到右侧,我们就会得到Nucleus插件,允许我们将它导出为USD文件。
如果然后我们转到USD Composer并打开该USD文件,我们就会得到一种 应用程序之间的实时链接。我现在可以对网格进行任何更改,重新导出它,并让USD Composer自动获取这些更改。
情况变得更好了!一旦我们导入模型,我们就可以打开Substance Painter,启用Omniverse连接器,然后转到“导入网格”,以自动将我们的对象从USD Composer导入到Substance Painter中。在这一点上,如果我们在Blender中进行更改,我们仍然可以重新导出并在USD Composer中获取这些更改,USD Composer会自动链接到Substance Painter。
但是,一旦我们在Substance Painter中添加纹理,再次执行此操作将会删除这些纹理。因此,一旦你满意了,在Substance Painter中添加你的材质,并且启用了Life Link,这些材质将自动出现在USD Composer中。
然后你所做的任何更改都会自动导出并在USD Composer中更新。真的,真的很酷!
对我来说,这个工作流程非常令人震惊。能够实时地在Blender和Substance Painter中进行更改,并让所有这些更改自动向下工作并在最终渲染中反映出来,这真是太棒了。
如果你有兴趣尝试英伟达Omniverse提供的所有功能,你可以通过描述中的链接免费下载它。如果你想了解更多关于USD和Omniverse一起提供的所有技术用例,你可以找到另一个免费下载链接,以及参加3月份GTC上虚拟或现场开放USD日会议的链接。
我真的建议你查看一下,因为这确实是3D工作流程的未来。
关于USD的更多信息
除了这个有趣的例子,USD还有更多功能。如果你充分利用其功能,你作为艺术家的效率将会提高很多。那么它还能做什么呢?
除了通用文件格式会让你的生活更轻松之外,它绝对是未来。自2023年8月以来,USD已经成为一个官方的非营利组织,简称开放USD联盟(AO USD)——皮克斯、苹果、Adobe、Autodesk和英伟达 是其创始成员。
我认为这充分说明了这些公司投入了多少,以及他们如何真正将此视为互操作文件格式的未来——每个人都应该能够非常容易地使用它。
除了作为一种文件格式,USD几乎存储所有内容——从灯光和相机到模拟缓存和场景数据——以类似于图层的结构,称为“prims”(图元简称)。它包含所有数据,以一种可由各种应用程序读取的格式来描述复杂的场景和资产。
现在知道了这一点,“通用场景描述”这个名称实际上就非常有意义了!
如果你熟悉Blender集合,USD的工作方式与之类似。你可以将任何东西嵌套在多个嵌套集合中,好处是USD将所有这些图层都视为实例。因此,它能够以一种优化的方式非常快速地加载和读取所有数据。
这与在Blender中实例化集合类似,这很好,因为实例比实际重复对象需要更少的计算。它也非常类似于After Effects中的预合成或Nuke中的合成——你基本上将东西分组在嵌套的组/图层中,这使得计算机更容易和更快地处理文件。
英伟达最新的USD示例项目“达芬奇的工作室”是这种优化的一个很好的例子。使用他们的USD Composer应用程序(非常适合查看具有实时照明的USD项目),我可以以接近120 FPS的速度播放这个巨大的67GB资产、纹理和灯光库,其中包含数百万个多边形,而没有任何滞后或问题。这之所以成为可能,是因为USD以一种极其优化的方式高效地加载文件和纹理。
类似地,对于过去通常导出为Alembic文件的动画,USD缓存现在快得多。Alembic文件通常很大,非常不优化,并且计算机读取速度很慢——通常会导致播放断断续续。使用USD,实现稳定的FPS根本不是问题,并且文件大小要小得多。
更多优势
另一个非常酷的功能是,你可以很容易地从文件外部访问你的USD项目中的图层。例如,如果一个prim图层包含一个球体在USD文件中是绿色的数据,通过简单地在像USD Composer这样兼容USD的编辑器中将该颜色更改为红色,我们就可以更改球体的颜色,而无需在Blender中打开文件!这非常强大。
虽然这显然是一个基本的例子,但它显示了潜力。另一个主要好处是 USD仍然允许你只在某个软件中处理复杂文件的单个图层。因此,即使你的文件包含一个完整的项目,包括相机、灯光等,你仍然可以只打开其中的一部分——例如单个模型——在Substance Painter中,并且只处理项目的那一部分,而不会影响其他任何内容。
如果有多个人在处理同一个文件,情况也是如此——这是USD的另一个主要优势。十个人可以处理同一个文件,因此第一个艺术家所做的更改会立即对第二个艺术家可见,从而使他们能够相应地调整自己的工作。能够与远程人员协作非常强大。
3D流程的未来
可以肯定地说,USD不仅仅是一种文件格式。它是一个全面的技术平台和生态系统,其使命与Blender的使命真正一致:自由创作,不受限制。
USD仍在开发中。梦想是真实的——一种可由行业内任何软件使用的通用软件文件格式,可由多位艺术家实时编辑。
我们都应该感谢皮克斯为这一令人难以置信的发展铺平了道路,并感谢像英伟达和苹果这样的公司贡献了自己的力量。