> 影视 >

聚焦:什么是USD?它对于3D流程有多么重要

时间:2022-08-23 07:39:45       来源:哔哩哔哩

如果您还不知道美元是什么,那是完全可以理解的。它代表“通用场景描述”,它是皮克斯在多年和电影中创建的文件格式,并于 2016 年向公众开源。虽然这不是一个完全准确的描述,而且会有很多更多内容在这篇文章的其余部分。


(资料图)

美元已用于皮克斯的电影,如玩具总动员 4,但也用于蜘蛛侠:英雄归来、雷神:诸神黄昏和猛禽小队等电影。它已被证明是有用的,并且多年来一直用于电影和离线渲染的管道中。对于实时渲染,我还没有看到它用得太多,但我猜很多工作室都在尝试转向它。Maya、3dsMax、Houdini 等 DDC 都在缓慢但肯定地将 USD 工作流程集成到其中,因此正在为每个人使用它铺平道路。

那是什么意思?大多数从事 3D 工作的人会转向美元吗?并且,通过扩展,这是否意味着它将是元节的文件格式?我认同。

但是,要实现美元的普遍使用,还有很多问题。如果您是视频游戏领域、视觉特效领域、医疗领域、建筑、AR/VR 或其他任何使用 3D 的专业人士,您可能已经听说过 USD,但还不了解它是什么. 然而,即使是现在正在使用 USD 的人,也常常对它是什么以及它可以做什么没有一个完整的概念。如果您不了解美元,那不是您的错。不过,作为一个 3D 专业人士社区,这是一个我们可以纠正的错误。

如何?通过清楚、坦率和诚实地打破当前的进入壁垒。我希望每个人都使用 USD,因为它肯定也会帮助我们获得更好的工具,而且我非常关心工具方面的良好用户体验。如果每个人都使用 USD,我们也许可以通过使用 USD 的所有工具获得类似的用户体验!那岂不是很神奇?是否在美元的 DCC 中具有相同的范式、心理工作流程和肌肉记忆?

所以让我们讨论一些问题。是什么阻碍了美元?

1. 文档

美元目前很难学习和理解。如果你去文档网站,它会立即谈论 API、层、变体、base、usd 等。现在你可能会说“等等,一个 API?我认为这应该是 3D 文件格式?”,这就是这里的问题之一。您也可以访问其他文档网站,看起来更友好一些。这两页都没有任何图片或显示任何层次结构,这对于理解美元如何运作以及它的作用至关重要。

如果您随后前往美元术语和概念页面,您会看到很多术语,您将很难理解哪些是重要的基本术语。它们是按字母顺序排列的,所以没有任何关于从哪里开始的线索。如果我们点击那里的第一个“活动/非活动”,我们会读到:

“激活是prims的元数据/行为,它模拟了一个阶段的“非破坏性和可逆的 prim 删除 。Prims 默认情况下是活动的,这意味着它们和它们的活动子代将由阶段遍历组成和访问。”

当您刚接触美元时,我祝您好运。那里有很多术语,下划线,你也必须知道和理解,才能理解那个句子。例如,让我们试着理解“prims”,它的第一句话是:

"Prim 是 USD 中的主要容器对象:prims 可以包含(和排序)其他 prims,在Stage上创建“命名空间层次结构” ,并且 prims 还可以包含(和排序)保存有意义数据的属性。”

然后你会经历美元条款的螺旋式上升。这里有一个先有鸡还是先有蛋的问题,要理解一个术语,您必须首先了解许多其他术语。你从哪里开始?除非您需要了解这对您的工作是如何工作的,否则您可能不会。你可能会被卡住并反弹。

例如,要解释什么是 prim,您可以先更简单地描述它,原始句子在结尾处暗示了这一点。例如用我自己的话来说:

“Prim 包含属性和数据。它们包含“东西”,层次结构中的每一行都是一个prim。prim 可以是网格、材质、纹理链接、样条曲线、灯光等,就像您以前使用过层次结构时所习惯的一样。”

这是完全而且总是完全正确的吗?它是否涵盖所有技术方面?不,但它以一种对人类有意义的方式解释它。这让我想起了理查德·费曼在纪录片《想象的乐趣》中的一句话。有人问他磁铁是如何工作的:

是的,对 prim 的解释并不是它真正的全部,但它让任何熟悉 3D 概念的人都可以理解。以这种方式开始解释概念并不是一件坏事。我认为使用基本术语来快速描述美元的运作方式要好得多,就像用橡皮筋快速轻松地解释磁铁而不是关于磁场和电力的数学细节一样好。

2. 命名法(命名)

如前所述,在谷歌上搜索 USD 最常为您提供有关美元的信息。还有更多诸如此类的问题,例如,让我们回到prim。Prim 是原始的缩写。你可能会想“啊!一个原始人!所以就像我们通常在 3D 世界中所知道的图元一样,例如立方体、球体、金字塔等?” 我们再次回到:是的,但不是真的。如果您正在考虑立方体、球体、金字塔等 3D 的基本图元,那么您将谈论 UsdGeom,它是一个包含这些图元的模式,例如 UsdGeomCube、UsdGeomSphere 等。但您可能会问: “等等,什么是模式?” 好吧,没关系,又是鸡和蛋的问题。

所以 prim 是原语的缩写,但它不是您可能知道的 3D 原语,而是它们是数据、属性等的容器。起初这有点令人困惑。然后我们可以进入其他术语,如阶段、参考、有效载荷、变体等,而且我们很快就会进入深层次。用更简单但不是 100% 准确的技术术语来说:

阶段是所有加载的 USD 的最终 3D 表示。

引用本质上是将一个 USD 的整个或部分层次结构附加到另一个 USD 层次结构的一部分上,当它被加载到舞台上时。

有效负载是您可以决定在稍后加载美元时而不是立即加载的参考。

变体本质上是一种状态。您可以同时激活多个状态,它们可以影响相同的属性和 prims。这会很快变得复杂,但也可以非常简单地使用,例如让一个状态包含椅子的整个层次结构,而另一个状态包含桌子的整个层次结构。现在,您可以在加载美元时实时在这两种状态、这两种变体以及层次结构之间进行切换。那是强大的东西!

我并不是说我们必须以美元更改事物的名称!为时已晚,我们现在被他们困住了。我认为承认这一点是关键:当人们在学习美元时,要诚实而认真地告诉他们:“嘿,这会令人困惑,但我们必须解决这个问题。如果你要问我 3-4 次什么是什么,请不要为此感到羞耻。有时,在不同 DCC 和 API 的命名法之间切换时,我也会忘记。”我看到人们害怕询问有关美元的问题的次数,好像每个人都应该是这方面的专家,这令人恐惧。它不是出于技术原因,而是出于社会原因限制了美元的使用。我不希望这种情况发生。从我个人的经验来看:即使是在皮克斯工作多年的人也不知道关于美元的一切!这很好。它就是那么大,强大,适应性强。那是双向的。

有些教程在解释基础知识方面做得越来越好,例如关于 USD 的 Nvidia 课程。苹果还发布了一段关于美元基本面的视频。但是,我们还没有一个清晰的解释,任何 3D 艺术家、设计师和制作人都可以拿起、观看并得出一个基本的了解。如果美元要像我希望的那样成为每个人的格式,那就必须解决这个问题。我想帮助完成这项工作,因此这篇文章,以及未来的更多内容。

再举一个例子,把命名点带回家:在您的 3D 编辑器和管道中,什么是资产、实体或对象?根据您所熟悉的内容,您将在每一个背后有不同的含义,或者对于其中的 2 个甚至全部 3 个具有相同的含义。我会在某个时候写一篇关于这个的博文,因为它不仅与美元有关,而且希望这能让您了解问题命名可能是什么。

3. 3D 工具尚未准备好USD 已发布,但允许所有人以简单方式编辑和创建 USD 的出色 3D 工具并未发布。发布了一些工具,但用于 3D 工作的命令行工具却是 1990 年代的事。此外,当您访问 Pixar 文档网站上的美元教程时,您的首要任务是阅读和理解 Python 脚本,然后运行它。 它可以让你相信你必须了解 python 才能使用 USD,但事实并非如此。

如前所述,美元有大量的概念在起作用。能够编辑美元上所有这些不同的功能,并以适当、快速和易于使用的方式使用它们,目前还不存在。有可能,只是不容易。其他时候,美元还不是一等公民。例如,3dsMax 不附带美元,您必须单独下载工具,以便“美元”显示为导出选项。但是,导出窗口中没有任何信息表明它丢失了,所以在谷歌搜索之前你可能不知道。

Maya 和 Houdini 在 USD 上的表现越来越好,尤其是 Houdini 掌握得很好。然而,要构建一个美元,用户首先需要了解 Houdini,这是一项与了解美元一样困难和耗时的重大任务。您必须使用节点构建层次结构吗?每个节点都有属性并影响其他节点,您必须设置它们以确保层次结构和层次结构的 3D 表示有意义?这是一种完全不同的构建内容的方式,大多数人都不习惯。它很强大,Houdini 取得了惊人的成果,我想我们都同意这需要一段时间来学习。

除此之外,美元文件相互引用。例如,一个 USD 文件可以引用另一个 USD 文件,甚至是该 USD 文件中的一个 prim,它通过查看该 USD 文件的位置和名称来做到这一点。因此,您可以让 USD 文件尝试引用以下内容:

“…art/assets/furniture/chairs/chairwood/chair_wood.usd/MyAmazingMeshPrim”.

如果您要移动或重命名这些文件夹中的任何一个,则该引用将中断。如果您重命名美元,引用将中断。如果您在 DCC 中处理 USD 时打喷嚏太用力,并且不小心敲击了键盘,在 prim 中添加了一个字母,那么引用就会中断(这不是开玩笑,它确实发生在我身上,我不得不花一些时间调试它以找出在 Houdini 中我不小心在字段中添加了一个字母。)撤消那些损坏的引用,重命名文件,并允许 DCC 访问您的文件夹结构,无论它是在您的本地计算机上还是在服务器上,确实如此还没有作为一个好的工作流程存在。目前,错误会以美元为单位受到严厉惩罚,如果您想调试某些东西,最好希望该工具能告诉您哪里出了问题。目前,它通常不会。

当然,根据工具的不同,美元可能会在几秒钟或几小时内加载。例如,Aras 做了一些非常酷的工作,使迪士尼发布的 Moana 场景能够在 Blender 中更快地加载。但是 4 小时到 10 分钟是一个相当大的差距。在 Animal Logic 的 ALab 场景中可以发现类似的问题,在 USDView 中加载可能需要很长时间或崩溃,而在 Houdini 中几乎是立即加载。我认为这与该工具是否尊重美元的“目的”概念有关,但它也产生了一个如何使用目的的问题,我将在稍后进行更多讨论。无论哪种方式,我都非常感谢 Aras 和 Animal Logic 完成这项工作,因为它让我们看到了问题,并展示了解决方案!

当然我们可以说用户根本不需要调试 USD,所有 USD 工具都应该自动修复 USD,但是,让我们一步一步来?

4. 适应性强

任何人都可以用美元做任何事情。毕竟,这是通用场景描述。我真的相信它是普遍的!也就是说,如果你有时间让它做你想做的事情。目前学习如何创建新的 prim 类型或模式并不容易。但首先,我要解释一下:有 prim 类型,每种类型都包含一组不同的默认值,例如,您可以创建一个“Chair”类型,并说它应该有“4 个腿”作为值默认情况下,如果有人使用“椅子”类型的 prim,他们总是会从一个值开始,说它有 4 条腿,然后他们可以根据需要进行调整。例如,您的工具可以使用该值来生成正确数量的边。您如何定义存在哪些类型,以及类型上存在哪些值?使用模式,您可以根据该模式告诉它哪些类型应该具有哪些值。同样,一个简单的解释可能不是 100% 准确,但你明白了要点。

无论如何,如果有人可以为他们对 USD 的特定用途制作模式和类型,那就太强大了!他们可以解决他们遇到的任何问题,并以他们的工具理解的方式将其定义并保存到他们的美元中!

这也意味着,如果您将该 USD 文件共享给其他人,而不共享您的架构和工具,那么他们将不会看到与您相同的结果。这是我们放置我们都知道和爱/恨的强制性 XKCD 漫画的地方。 美元作为一种格式是一种新标准,我们应该使用它,但我们确实面临着它具有如此适应性的风险,以至于在美元内部我们可能有多个相互竞争的标准。至少我们都在使用 USD,这听起来已经是一种改进,但是如果模式和工具可以以某种方式与 USD 文件轻松共享,其他工具可以读取它们并正确显示它们,那就更好了无论他们有什么独特之处。当然,说起来容易做起来难,但如果我们想解决这个问题,我们必须诚实地谈论这个问题,谢天谢地,很多人已经有了。

5. 什么是好的美元?

您创建了一个美元。它使用所有默认模式,没有任何自定义。您想与其他人共享此美元,以便他们也可以查看和编辑它。你把它寄过来,他们仍然难以掌握和编辑它。为什么?

因为几乎可以按照您想要的任何方式构建层次结构!这真的很强大,因为它允许任何人按照自己喜欢的方式构建东西。他们还可以以任何他们喜欢的方式命名 prim。因此,如果您熟悉 Photoshop,打开美元通常就像打开某人的 .PSD。你最好希望前一个人正确命名了他们的所有层,如果有数百个,则将它们组织在文件夹和子文件夹中,否则你将进入一个痛苦的世界来编辑该文件。美元也是如此。考虑到文档、命名法和工具的前面几点,您可以看到这是如何造成脆弱的情况的。

3D 空间中的每个人都不会同意单一的命名约定,因此我也不相信每个人都会同意一种构建和组织 USD 层次结构的方式。例如,材料应该在范围内还是在 xform 之下?可能是一个范围,因为它没有变换值,但是您可以将材质放在 xform 下,而 USD 不会阻止您这样做。这只是众多例子中的一个。

那么骨架、动画、网格等呢?它们是否应该单独保存、引用或加载?应该在哪里使用目的,在哪里不应该使用?USD 的巨大力量在于,巨大的作品可以由数百美元组成,因此每个单独的 USD 都可以在您喜欢的版本控制软件(如 Git 或 Perforce)中单独打开、编辑、保存和提交。

我们不会达成一项全球性的协议,承认这一点很好,但试图达成一项协议也不是一件坏事。我很高兴有些人发布了他们的工作,因此每个人都可以了解如何构建 USD 的层次结构。

美元将改变游戏规则

我希望此时您不会想“哦,不,这一切听起来很糟糕……”,因为美元真的很整洁!我什至没有提到所有其他很棒的 USD 功能,例如 PointInstancers、overs、子层、usdc、usda 和 usdz!美元还有很多很棒的地方。我将在未来写另一篇关于这些美元概念的博文,并附上简单的解释和伴随这些解释的视觉效果。因为我认为美元值得了解,值得使用,尤其是随着时间的推移它会变得更好。

同时,我认为大声说出这些问题,并作为一个社区来讨论它们,就像创造更好的工具和修复错误一样,可以推动我们前进。  因为如果我们不考虑人类如何看待美元、3D 内容和组织内容,我们怎么知道要为每个人创建什么工具?我希望看到美元成功。作为一个 3D 社区,我们可以一起实现这一目标。

精彩推送