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

通过了实名认证的内容创造者

发布于 2024-5-12 04:45:57

您需要 登录 才可以下载或查看,没有账号?注册

x
81206981b603f57a91c07389ac43df78.jpg

image.png
Hello . 大家好
今天给大家带来矢量顶点置换的概述我是高鹏涛






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 实际上可以被视为几何图像的一种形式,这是一种应用在UE5中的Nanite而流行起来的技术。

‍2Vector Displacement Mapping应用场景


矢量位移贴图不仅仅用于渲染,它还大量用于资产制作。这是将雕刻细节当作印章,重新应用的好方法,以确保设计之间的一致性。您实际上可以使用 ZBrush 和 Mudbox 创建您自己的 VDM Stamp。您可以像 Nicolas Swijngedau 一样在他出色的恐怖 VDM 笔刷包中进行混合搭配。



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

‍3VDMs和Amplify Shader Editor的实践


我们一直在寻找一种可能的简化工作流程,使用户能够实时使用到 VDM,而不会被技术要求所困扰。事实证明,最麻烦的部分实际上是获取可以在Unity3D等引擎中使用的数据。一旦我们掌握了如何使用 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”,在列表中设置高模,选择“AbsoluteTangent”,并确保将其保存为 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 纹理等等领域。





- End -

   
ABOUT US
关于我们




微信群

公众号

知识店铺

喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。公众号是我们最为官方的窗口,更多内容都必须关注公众号后才能获取。另外现已开通网站:www.thepoly.cn更多精彩请关注我们。

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表