UDIM 是一种称为虚拟纹理的技术,在虚幻UE引擎中也提供了该工作流程,它允许通过将纹理的必要部分而不是整个纹理放置在专用内存中来有效地管理大量纹理。

通常虚拟纹理分为俩种,一种是流式虚拟纹理,另外一种是运行时虚拟纹理,本文将介绍 UDIM 是什么以及在虚幻UE引擎中的流媒体虚拟纹理工作流。
什么是UDIM?
首先我们需要了解 UDIM 是什么?UDIM 是 U-Dimension,是我们常说的虚拟纹理技术,用于标识 UV 空间中的每个整数块,一种增强 UV 映射和纹理的工作流程,可以更轻松地创建 UV 和纹理。
以前在创建 UV 岛时通常会导致 UV 之间的间隙中过于大,导致浪费,如果在 UV 岛中设置的太紧,但又不太可取。
直接做张图吧,通过下图,可以看到该模型的 UV 间隙差不多了,但是如果需要从新添加一个对象到这张 UV 当中,是不是得考虑将大部分的 UV 和纹理进行更改,因为剩下的 UV 间隙就那么点了,硬要使劲往塞东西,就那么大点正方形,必然造成无法抉择,到底哪个重要?事实上呢?

此时 UDIM 就派上用场了,它能够在几种不同的纹理下分布,它会将 UV 视为一个单元,一个模型可以有多个单元,那么以前那种正方形的单元就不需要在考虑了,从而可以方便的管理和修改 UV,也降低了成本。

UDIM 网格由正方形单元格组成,有 10 个水平单元格以及大量垂直单元格组成,从 初始 1001 开始到 9999,这些单元格均可以使用,其中的数学计算咱也不懂,所以不细究,了解它大概的工作原理就行。
例如这张图:

这张图可以非常清晰的看到它是基于一个 tile 系统( UV Tile 工作流通常也是这样的格子,只是颜色不一样),它从 1001 开始一直到 9999,也就是常说的“重复”或者“平铺”,其中每个单元格在整个 UDIM 纹理数组中是不同的纹理。

而且基本上每个贴图都有自己的 UV 空间,并有自己的纹理分配给该贴图。
因此在 UV Tile 管理中(三维软件),可以创建不同分辨率的纹理。例如,可以将一个高分辨率的纹理给很重要的离观众较近的模型,也就是主体部分,较低纹理则给那些不太重要的模型,不在主视角下的对象。
分配好后,通过导出时的纹理一般情况下会附带一些编号,从 1001 开始,一直到…。
如果在三维软件中通过渲染引擎使用的 UDIM 工作流,则需手动更改这些序号,例如 i3dttcom_albedo.1001.jpg,这是 UDIM 识别的正确命名约定,也是虚拟纹理强制性的命名规则,相当于每个单元格的识别号,只能遵守。

到这里我相信你应该对 UDIM 有一定的了解,也是在使用 UV Tile 工作流前须了解的 UDIM 基本概念,因为本文不涉及虚幻引擎之外的 UV Tile 工作流程,因此你如果想学习可通过百度搜索自行查阅。
设置虚幻引擎中虚拟纹理
要让UE引擎游戏支持虚拟纹理,需要在项目设置 – 渲染选项 – 启用虚拟纹理,默认是不启用的。

启用后从新启动虚幻引擎。(5.1重启后不起作用,并且勾选后重启会自动还原,不清楚是不是 BUG,因此使用5.0.3)
此时将模型和纹理导入至内容中。

这里需要双击 OCC 贴图,对其参数稍作修改,去选 sRGB 选项。

接着新建一个材质,将纹理拖拽到编辑器中,将对应的通道都进行链接,可以在贴图细节面板中看到材质表达式选项下的采样器类型为虚拟线性颜色。

到这里在虚幻UE引擎中设置虚拟纹理的步骤就已完成,下图为设置好的角色展示。

虚拟纹理设置视频教程
最后附上一个完整的虚拟纹理设置教程,视频仅为桌面录制,有加速,但不影响每个步骤的展示。
本文总结
对于 UDIM 的理解非常简单,仅仅只是将贴图嵌入到文件中,UDIM 在 2002 年就已提出,是否会在以后作为资产制作的主要工作流,很难说,毕竟 20 年已过去。
现在几乎流行的软件都支持 UDIM,例如 3DMax、C4D、Maya、Blender 等,感觉对于游戏方便用处大一点点,其他方便还得看自己的工作场景而定。