
USD交换格式是由皮克斯(Pixar)开发的一种开源格式,用于稳健且可扩展地交换及增强任意3D场景,而这些场景可能包含众多的基本资产。
USD不仅提供多类工具集,可用于读取、写入、编辑和快速预览3D几何图形和着色,还提供元素资产(例如模型)或动画的交换。
与其他交换包不同,USD还支持将任意数量的资产汇编和整理到虚拟布景、场景和镜头中。然后,你可以在单个场景图中使用单个一致的API将这些内容在应用程序间传输,允许多个艺术家在同一个镜头或资产上以非破坏性的方式编辑它们,而无需覆盖彼此的工作。
简单来说USD和USB很像,一条数据线(API)传输各种媒介信息(USB是传输音频、图片、视频等信息;USD是包含了灯光、模型、特效等场景数据)。
为什么选择使用USD?
USD提供了一种通用的语言供用户在多个3D应用程序之间迁移大量数据。这为你的美术管线决策提供了灵活性,并使用迭代和非破坏性的方法促进了3D美术师(动画师、光照或美术师、建模师、特效美术师等)之间的多人协作。
- 为定义、打包、组装和编辑3D数据,便于使用多个数字内容创建应用。
- 允许多个美术师协作处理相同的资产和场景;无论哪个部门的成员都能看到所有的内容
- 延迟最小化
虚幻引擎中的USD支持
目前,虚幻引擎通过USD舞台和双向Python工作流提供USD支持。
USD舞台(USD Stage)窗口。
USD Stage流程不将USD数据转换为静态网格体(Static Mesh)和材质(Material)等原生虚幻引擎资产,而是使用USD Stage Actor和USD Stage舞台编辑器窗口以原生方式处理USD的数据,可以加快将USD数据并入虚幻引擎的速度,并在你更改磁盘上的源USD文件时,处理实时更新。
导出
为什么我们要先讲导出呢,因为目前有一个非常重要的问题摆在我们面前,那就是过于行业内的资产都是由各种FBX、OBJ甚至是UE中的UASSET等等构成的,我们如何才能把以往的资产能够顺利转化为USD资产这是个极其复杂的问题,可能很多人觉得,不是导出就行了吗;可是如何导出?以什么标准?prim、kind等层级如何设置?这样的问题在这个全新的流程中会以各种角度进一步凸显。
接下来我们看一下UE如何把FBX资产转为UE资产,以一棵树为例:
这棵树有44W个三角面、五张贴图,
FBX和Texture一共60.9MB
我们正常将其导入,新建材质、寻找贴图,这里有个需要注意的事,那就是Nanite;
请务必关闭Nanite!!! 否则USD将会以Nanite形式导出最大簇级的NaniteMesh.
如下图:
右侧为当左侧模型启用Nanite时导出USD后在UE中的状态,再次提醒,要转换为USD的资产不可开启Nanite
转换后可以在USD Actor下面开启Nanite选项。
右键导出、选择usd格式、设置各项属性、导出。
导入
你可以使用以下方法将USD舞台上显示的内容( 静态网格体* 、 骨骼网格体 、 光源 、 植被 和 *地形 )导入到虚幻引擎中:
- 使用 文件(File)> 导入到关卡中(Import Into Level) 。该流程将导入资产(静态网格体、骨骼网格体、材质和纹理等等)和Actor。
- 使用内容浏览器(Content Browser)中的 添加/导入(Add/Import) 按钮。该流程仅导入资产。
- 将文件拖放到内容浏览器(Content Browser)中。该流程仅导入资产。
- 使用 USD舞台编辑器(USD Stage Editor)中的** 操作(Action)> 导入(Import) 选项。该流程将导入资产和Actor。导入过程完成后,USD舞台上的资产将替换为 内容浏览器中的新Actor。
动画
使用在 USDStageActor* *的 属性(Properties) 面板中找到的关联关卡序列,可以访问存储在USD文件中的动画。
选择USD关卡舞台(USD Level Stage),并双击属性(Properties)面板中的序列(Sequence),从而打开关卡序列(Level Sequence)。
USD运行时支持
通过调用关卡内USD舞台Actor上的Set Root Layer Blueprint节点,虚幻引擎支持在运行时加载USD文件。
Set Root Layer节点。
该节点将创建所需的资产,并将Actor和组件生成到关卡中,与在编辑器中处理该过程的方式相同。用于控制各种USD舞台Actor属性的其他蓝图函数包括:
与USD结合使用的常见蓝图函数。
多用户编辑支持(非常局限)
许多USD舞台操作都支持多用户编辑,包括:
- 添加和删除图元。
- 重命名图元。
- 编辑图元属性。
- 切换可视性。
- 打开、关闭或更改当前舞台。 要为你的USD项目启用多用户支持,请启用 USD 多用户同步(USD Multi-User synchronization) 插件。
在多用户编辑会话期间,务必要让所有用户使用相同的文件路径访问USD文件。为了确保每个客户端都可以访问相同的文件,我们建议将目标USD文件存储在项目文件夹中,并使用源控制进行管理。
USD Stage舞台工作流
使用USD舞台编辑器中的 文件(File)> 保存(Save) 菜单保存对USD舞台所做的更改,这会将这些更改写回你的USD文件。
1. 创建USD舞台Actor
在虚幻编辑器中,点击 窗口(Window) 菜单并选择 USD舞台(USD Stage)。
如果没有这个选项,在编辑_插件中搜索USD,都打开然后重启编辑器即可。
你可以使用USD舞台编辑器(USD Stage Editor)窗口的**属性(Properties)**分段,编辑你的USD舞台Actor和图元的属性。
使用***USD舞台(USD Stage)窗口的属性(Properties)***分段编辑图元属性。
如果您使用的DCC软件在USD导出设置中有相应的Unreal设置,应该不需要执行下一步,直接跳去第3步
2.更改USD舞台Actor的UpAxis
点击USD舞台(USD Stage)窗口中层级顶部的 舞台(Stage)。
选择层级顶部的舞台(Stage)选项。
在属性(Properties)分段中,找到 upAxis 属性并打开下拉菜单。选择新轴来代表你的USD数据。
选择最适合你的USD数据的轴。
常见的各个软件坐标系
3.更改图元
在USD舞台编辑(USD Stage Editor)中,打开 选项(Options)>选择(Selection) 菜单并启用 与编辑器同步(Synchronize with Editor)。这会同步你在虚幻引擎关卡和USD舞台编辑器窗口之间的选择。
4.多个USD导入同一个场景
在放置Actor搜索框搜索USD,将其拖入到场景
在USDStage(阶段/舞台)中选择对应的Actor
文件-新建,在File中选择磁盘内的USD文件
重复此过程
USD交换格式是由皮克斯(Pixar)开发的一种开源格式,用于稳健且可扩展地交换及增强任意3D场景,而这些场景可能包含众多的基本资产。
USD不仅提供多类工具集,可用于读取、写入、编辑和快速预览3D几何图形和着色,还提供元素资产(例如模型)或动画的交换。
与其他交换包不同,USD还支持将任意数量的资产汇编和整理到虚拟布景、场景和镜头中。然后,你可以在单个场景图中使用单个一致的API将这些内容在应用程序间传输,并以非破坏性的方式编辑它们(作为覆盖)。
USD Stage流程不将USD数据转换为静态网格体(Static Mesh)和材质(Material)等原生虚幻引擎资产,而是使用USD Stage Actor和USD Stage舞台编辑器窗口以原生方式处理USD的数据,可以加快将USD数据并入虚幻引擎的速度,并在你更改磁盘上的源USD文件时,处理实时更新。