ue3d如何使用Unity中的HDRP细分置换?

如何使用Unity中的HDRP细分置换?

分类:

HDRP 中的细分(Tessellation)是 Unity 中的着色器(材质)类型,是一个较为重要的功能,可以根据游戏对象的表面根据视角变化实时的计算细分曲面的 3D 技术。

ue3d - 如何使用Unity中的HDRP细分置换?

本文将探讨在 Unity HDRP 中如何使用镶嵌细分。

这个示例,我使用了下面这个免费沙漠悬崖峭壁砂岩纹理作为演示:

纹理提供了五个通道,咱这里只使用漫反射纹理、法线和高度贴图。

使用沙漠悬崖峭壁砂岩纹理作为示例演示
使用沙漠悬崖峭壁砂岩纹理作为示例演示

添加HDPR细分的步骤

1. 一切就绪后将漫反射纹理直接拖放到平面对象上,通常漫反射是对象表面的基本纹路。

Unity中的基本平面对象仅有四个顶点
Unity中的基本平面对象仅有四个顶点

2. 赋予之后,会发现平面没有任何起伏,从侧面看更加明显,就是一个面片。

添加漫反射只能表现该对象的基本纹路,并不会有置换效果
添加漫反射只能表现该对象的基本纹路,并不会有置换效果

3. 此时我们将法线贴图纹理添加到法线通道,可以看到贴图上有一些起伏变化,但这是一个假象,不要被迷惑哦,因为它并不是真正意义上的细分置换的变化,而是通过光照对我们人眼产生的凹凸错觉,因为该场景的灯光在左侧,因此会得到下面的结果。

法线通道通常可以模拟模型假视觉的起伏变化,但不是真正意义上的置换
法线通道通常可以模拟模型假视觉的起伏变化,但不是真正意义上的置换

4. 解决该问题,我们需要将 Shader(着色器)类型更改为 HDPRLitTessalate,会在 Displacement Mode(置换模式)下新增一个 Tesselation Displacement(细分置换)选项。

将着色器更改为HDPRLitTessalate
将着色器更改为HDPRLitTessalate

5. 将 Displacement Mode 更改为 Tesselation Displacement,这样就会在表面输入下增加一个 Height Map(高度贴图)选项。

置换模式下提供的Tesselation Displacement选项
置换模式下提供的Tesselation Displacement选项

6. 将沙漠悬崖砂岩纹理包下的高度图拖拽到 Height Map(高度贴图)通道,将 Min 和 Max 值适当的调整一下。

只有切换为细分置换才会新增 Height Map 通道,以便使用高度图
只有切换为细分置换才会新增 Height Map 通道,以便使用高度图

7. 此时我们转到 Tessellation Options(细分选项)下,通过调整参数来获取细分曲面,特别需要重点关注 Tessellation Factor(细分因素)以及 Start/End Fade Distance(开始/结束距离)。

Tessellation Factor 参数类似细分数量,调整之后在模型表现有明显的置换起伏
Tessellation Factor 参数类似细分数量,调整之后在模型表现有明显的置换起伏

8. 为了更好的解释设置的效果,可以通过线框模式查看刚开始仅只有四个顶点的平面最终的细分分布情况。

通过线框模式可以观察到对象上的细分分布情况
通过线框模式可以观察到对象上的细分分布情况

本文总结

Tessellation 的精度主要由 Tessellation Factor 决定,表面的起伏高度由 Height Map (高度贴图) 通道下的 Min 和 Max 值决定,反差越大置换效果越明显。

至于 Start/End Fade Distance 可以理解为 Unity 摄像机的裁切功能,离摄像机近的细分较多(看到),远的细分较少(看不到) ,这种方式如果应用在一条很长的小路上,让离摄像机近的细分高一点,远的甚至可以为零,可以优化对象。

看看最终的结果吧,具有从近至远(随视角)智能调整细分。

在 Unity HDRP 中为模型添加细分置换的最终结果,近距离细腻一点
在 Unity HDRP 中为模型添加细分置换的最终结果,近距离细腻一点
Tesselation 随视角智能调整细分
Tesselation 随视角智能调整细分

相关信息

  • 类型:方法
  • 字数:679
  • 字符:1864
  • 适用软件:Unity
  • 说明:无
  • 编号:94417

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!