UE4中的通用场景描述

介绍如何将USD文件导入虚幻引擎4并处理其内容。

Windows
MacOS
Linux

大多数计算机图形制作(电影、游戏或其他形式)通常会生成、存储和传输大量3D数据。此类数据可能来自各种来源(动画师、光照和阴影设计师、模型师、特效师等),他们会在通道中使用各种各样的应用程序(虚幻引擎、Maya、Houdini、Blender),而且此类数据历来根据特定需求和任务/应用程序工作流定制其自己独特的场景描述,任何其他应用程序可能无法读取或编辑这些描述。

通用场景描述(USD)格式由Pixar制定,旨在以一种可扩展的强大方式交换和增强任意3D场景,而这些场景可能由许多基本资源组成。USD不仅提供了丰富的工具集来读取、写入、编辑和快速预览3D几何体和阴影,还提供了元素资源(例如模型)或动画的交换。

但与其他交换包不同,USD还支持将任意数量的资源汇总组织成虚幻集合、场景和镜头,然后可以从一个应用程序传输到另一个应用程序,并利用一个统一的API在单个场景图表中进行非破坏性编辑(作为覆盖)。

虚幻引擎4中的USD

在4.24版之前,虚幻引擎有两种方式处理USD文件,但都存在很大的缺点:

  • 导入USD插件(C++):这可以从USD文件将对象导入虚幻资源,然后再导入关卡中生成的Actor。但只能导入静态网格体(没有动画、摄像机、材质或光源)。这更像是一种内部交换形式,而不是有效的工作流。

  • Python USD导入/导出:双向Python工作流提供了与C++类似的功能,同时增加了将对象导回USD文件的能力。但由于此方法作为Python脚本实现,因此整体性能较缓慢。而且这种实现对导入和导出的支持也有限。

引擎4.24版增加了处理USD文件的新方法:USD暂存ActorUSD暂存编辑器

可利用新的 USD暂存Actor(USD Stage Actor)USD暂存编辑器(USD Stage Editor) 窗口在本地处理USD数据,而不是将USD数据转换为静态网格体、材质等本地虚幻引擎资源。因此可更快地将USD数据导入虚幻,从而更清楚地看到USD内容最初是如何构建的,同时在更改磁盘上的USD源文件时可处理实时更新。

这一工作流程还提供了许多其他改进:

  • 能下载 .usd.usda (ASCII)、.usdc(二进制)格式。

  • 可查看USD场景图表和图层层级。

  • 支持静态网格体、摄像机、骨架网格体、变体、动画。

  • 支持材质(PreviewSurface和DisplayColor)。

  • 支持USD预览表面的纹理。

  • 能启用或禁用有效荷载(用于加载和卸载内容)。

  • 能将静态网格体资源导出为USD几何体网格体、支持顶点、法线和UV。

  • 支持USD插件,例如Alembic或自定义路径解析器。

尽管目前还处于测试阶段,但我们建议大多数需要USD支持的用户使用此方法。以下部分介绍如何使用此方法与USD内容进行交互。

启用USD导入插件

在虚幻编辑器中处理USD文件之前,需要从 插件(Plugins) 菜单中启用 USD导入器(USD Importer) 插件:

  1. 编辑(Edit) 中选择 插件(Plugins)

    PluginsOption.png

  2. 在搜索栏中搜索 USD,然后启用 USD导入器(USD Importer) 插件并重启编辑器。

    USDImporter.png

编辑器重新启动时,将看到 窗口(Window) 菜单下列出了新的 USD暂存编辑器(USD Stage Editor) 选项:

USDStageOption.png

模式(Modes) 面板还列出了一些新的USD Actor,可添加到关卡:

USDAssets.png

实时USD暂存工作流

要在编辑器中处理USD内容,请执行以下步骤:

  1. 窗口(Window) 菜单选择 USD暂存编辑器(USD Stage Editor)

  2. USD暂存编辑器(USD Stage Editor) 面板的菜单中,选择 文件(File)> 打开(Open) 并浏览至USD文件。

    USDEditorLoadUSD.png

面板将填充从所选USD文件中读取的场景层级。

根据USD数据的复杂性,加载时间可能有所不同。若为较大场景,可设置 USD暂存Actor 以便起初不从USD文件加载任何数据,然后再根据需要仅加载各个有效荷载。参见下文的USD暂存Actor的属性

还会在关卡中添加 USD暂存Actor。此Actor容纳从文件读取的USD数据,并在关卡中为此类数据提供一个位置。

从USD文件加载的3D场景对象以及在视口中看到的3D场景对象与虚幻引擎的大多数其他功能完全兼容,在大多数情况下,在虚幻引擎中可完全像处理其他Actor一样进行处理。例如,可添加光源、其他静态网格体、材质、蓝图类等等。还可在视口中从USD场景中选择各个对象,然后像控制其他Actor一样进行控制。

USD暂存编辑器(USD Stage Editor) 中,还可在USD文件中定义的任何变体之间进行切换,可看到场景立即对这些更改做出反应。可在关卡中添加其他USD暂停Actor,包括动画化的骨架网格体。USD文件中的动画与关卡序列相关联,可用来擦除或播放动画。

若在 USD暂存编辑器(USD Stage Editor) 中对USD暂存进行了更改,可将这些更改写回USD文件。

USD暂存编辑器

USD暂存编辑器 概括了USD文件中的场景层级,同时还提供了修改USD数据的工具。这包括:

  • 打开、保存和重新加载USD文件。

  • 切换可见性和有效载荷,或为原语选择变体。

  • 创建新图层、打开现有图层或静音图层。

橙色行是合成弧,可右键单击任何prim来添加对它的引用(或清除对其的引用)。其他右键选项包括添加或删除prim以及切换、加载或卸载有效负载的功能。

USD暂存编辑器 中的 详细信息(Details) 面板显示了当前选项的信息,同时还提供了在所有定义 变体 中选择的功能。

USD暂存Actor的属性

创建USD Actor后,可使用 详细信息(Details) 面板中的属性来控制Actor访问和使用其USD文件中的数据的方式。

USDDetailsPanel.png

属性

说明

Root Layer(@@@)

选择此Actor要使用的USD文件。

Initial Load Set(@@@)

定义启动关卡时加载USD场景的哪些部分。全部加载(Load All) 加载暂存中的所有数据,不加载(Load None) 抑制加载暂存中的任何对象,直到加载在 USD暂存编辑器(USD Stage Editor) 窗口中。

时间(Time)

此Actor计算USD暂存所处的时间码。

开始时间码(Start Time Code)

此Actor开始计算所处的时间码。

结束时间码(End Time Code)

此Actor停止计算所处的时间码。

每秒时间码数(Time Codes Per Second)

每秒计算的时间码数。

Level Sequence(关卡序列)

与此Actor有关的关卡序列。

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见