实时矢量顶点置换(VDM)概述


Amplify Creations 团队分享了有关Vector Displacement Mapping的大量文章以及他们使用 VDM 和 Amplify Shader Editor 进行的实验,并逐步解释了如何创建 VDM 并在 Unity 中使用它。

1

简介



Displacement(不要与Parallax Mapping或 POM 混淆)传统上用于沿网格面法线偏移顶点。将岩石地面或砖块材质应用于简单的四边形,偏移(displace)其顶点,由于,是有限的多边形数量,您将获得不太理想的效果。当你,对该网格进行细分,我们将开始看到置换纹理的更接近的效果。但有一个问题,您的常规置换纹理仅包含高度数据以在单个方向上偏移顶点。这就是Amplify Shader Editor的Vector Displacement Mapping派上用场的地方。

由于资产面数的限制,传统的displacement通常在游戏中不太常见,开发人员倾向于青睐Parallax Mapping等技术,它提供了不错的视觉效果。令人惊讶的是,displacement或offsetting在实时 VFX 中是非常常见的。

一个值得注意的例外是地形,游戏中几乎所有地形,都是通过常规height displacement创建的。

Vector Displacement Mapping的使用更为罕见,通常应用于电影和其他离线渲染领域,并以某种形式的细分相结合,因为,置换网格需要更高的顶点数,才能准确渲染其细节。这通常出现在更加精细的角色中,无论是人物还是有鳞片的龙。VDM 是渲染超精细模型,同时仍能够使用相对简化网格,最高效方法之一。

VDM 实际上可以被视为几何图像的一种形式,这是一种应用在UE 5中的Nanite而流行起来的技术。


2

Vector Displacement Mapping应用场景




矢量位移贴图不仅仅用于渲染,它还大量用于资产制作。这是将雕刻细节当作印章,重新应用的好方法,以确保设计之间的一致性。您实际上可以使用 ZBrush 和 Mudbox 创建您自己的 VDM Stamp。

您可以像 Nicolas Swijngedau 一样在他出色的恐怖 VDM 笔刷包中进行混合搭配。

以这个蘑菇为例:如果没有矢量位移,您只能使用displacement,而且效果不一定好,但使用了VDM,您实际上可以实现更接近原始雕刻的效果。

3

VDMs和Amplify Shader Editor的实践




我们一直在寻找一种可能的简化工作流程,使用户能够实时使用到 VDM,而不会被技术要求所困扰。事实证明,最麻烦的部分实际上是获取可以在Unity 3D等引擎中使用的数据。一旦我们掌握了如何使用 Mudbox 创建 VDM,我们就开始尝试使用 Amplify Shader Editor for Unity。

VDM 实际上色器编辑器中设置非常简单,并且完全基于节点,因此尝试起来很愉快。

我们首先可以试下我们在示例中看到的 “蘑菇”。同样要注意的是,我们特意使用极端示例(低面数四边形到高面数多边形)。用户仍然可以使用与高多边形网格非常相似的低多边形网格。

这种类型的 VDM 非常适合单个对象,但它也可用于复杂的对象;我们甚至可以使用抠图着色器来隐藏未使用的底层四边形。由于我们使用的是 Tessellation,我们还可以根据摄像机距离进行自由的控制LOD。


我们对结果非常满意,但我们决定尝试一些更实用的东西,所以,我们选择了下一个合乎逻辑的东西,一台屏幕上带有噪点的电视。

我们首先构建一个带有 UV 的低面数电视,然后,将其带到 Mudbox 进行细节设计。每个元素都在单独的层中完成,以便我们可以单独导出它们,以供以后在着色器中进行操作。

在这个特殊效果中,我们将正面、侧面烘焙成单独的EXR 纹理,然后,根据命令与基础电视纹理混合在一起。

您在这里看到的实际上是法线值和displacement值之间的简单 Lerp。


4

如何在 Mudbox 中创建 VDM并将其导入 Unity




第一步应该是测试您的创作工具,以确保导出的map可以在 Unity 中使用。我们的编辑器包包含了一个 HDRP 示例,可帮助您入门,但可以使用 Amplify Shader Editor 轻松将其转换为其他渲染器。

1. 首先在 Mudbox 中创建一个 Plane,将其命名为 low。

2. 克隆Plane,命名为high。

3. 在高处雕刻一些东西,例如耳朵。

4. 选择底部,跳转到“Extract Maps”。

5. 切换“Vector Displacement”,在列表中设置高模,选择“Absolute Tangent”,并确保将其保存为 32 位 EXR。

6. 还要确保切换法线贴图,提取并使用细分方法烘焙它(法线纹理可以是8bit)。

Mudbox 方面就是这样。在编辑器中执行以下步骤:

1. 导入 32 位 EXR VDM 纹理和法线贴图。

2. 确保Unity中的法线贴图纹理参数设置为“Normal Map”。

3. 禁用 EXR VDM 上的 sRGB(颜色纹理)。

4. 确保您的项目设置为线性,否则,Unity 会通过限制 EXR 0-1 来弄乱您的负值。

5. 将法线拖放到画布中Amplify Shader Editor。

6.添加EXR VDM纹理;您需要添加一个append节点,以便可以将绿色通道交换为蓝色通道,还需要添加一个Transform Direction节点,以便可以从切线转到对象。

7. 如果您的位移显示为“关闭”,请尝试添加“比例乘数”节点。0,10 似乎适用于大多数适用于 Unity 的模型。

这些是基础知识。如果一切按预期进行,您最终应该得到如下结果:


我们使用 Substance Painter 对墙壁进行了一些额外的步骤,这是一种快速、轻松地为物体添加纹理的方法。

1. 我们导出了网格的低、中、高多边形版本。

2.使用Substance Painter生成不破坏的基底墙(可选)。

3.并导入损坏的中多边形来创建我们损坏的材质版本(我们使用相应的损坏的高多边形版本来生成地图)。

这是墙壁效果的完整指南:

5

可以使用的地方




虽然您可以通过基于距离的曲面细分,获得免费的LOD控制,但曲面细分本身目前是密集型的模型。我们相信,可以肯定的是,下一代 GPU 将通过使用网格着色器大大提高曲面细分性能和几何成像的效果。

目前,将其添加到常见的游戏中,目前可能不可行;但是,该技术在不受常规游戏性能约束的更封闭的场景中,还是有许多其他用途。


在尝试使用 VDM 时,会想到几个示例,例如具有复杂表面(外星人、生物、恐龙等)的详细角色、复杂的角色服装、高度细节的风景装饰品、科幻面板、墙壁/地面损坏贴花;还有那些常规置换或视差映射通常无法实现的细节的实际场景,甚至是洞穴墙壁的平铺 VDM 纹理等等领域。

展开阅读全文

页面更新:2024-05-05

标签:法线   多边形   曲面   位移   纹理   网格   节点   矢量   示例   顶点   实时   细节   效果

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top