BlueRose
文章97
标签28
分类7
Ue4中的场景物体融合方式与优化

Ue4中的场景物体融合方式与优化

前言

突然想起几个月前在Quixel发布的一篇技术文章,里面归纳了几个场景物体融合方式(主要是与地形融合),甚是不错。隧简单翻译并分享给大家。

原文地址:https://quixel.com/blog/2020/1/22/blending-megascans-assets-in-ue4?utm_campaign=Tutorials&utm_source=youtube&utm_medium=social&utm_content=Goddess%20Temple%20in%20UE4:%20Lighting%20%26%20Blending

这里使用MegaScans中的”Damp Soil”、”Cut Grass 2×2 M”与”Grass Clumps”资产。

World aligned texturing


直接译为世界坐标映射贴图。通过模型顶点的世界坐标将贴图映射到模型上。大致原理如下:

官方的AutomotiveMaterialPack与TwinmotionMaterialsPack材质包使用这个方法。这个方法广泛用在CAD、建筑等方面。这里介绍的主要是与地形融合的思路.

大致用法如下:

上图展示了通过控制x、y值来控制贴图平铺效果。

映射到球体模型的效果如下:

一个完整的PBR材质大概是这个样子的:

材质实现:https://blueprintue.com/blueprint/101g7t_k/

这个方法的缺点在于平面与模型的接缝处过度十分突兀。但它的性能十分的好,配合其他方法使用能得到很好的效果。

Pixel depth offset


为了解决过度突兀的问题,我们可以通过像素深度偏移(Pixel depth offset)配合DitherTemporalAA节点来解决这个问题。

大致用法如下:

效果如下:

仔细观察过度处,可以看得出过度非常自然了。同时因为这个方法主要用到了TAA的抖动算法,通过视觉暂留现象来实现半透明过度,所以性能十分的好。缺点是材质Alpha较低时,交界面容易产生错误的混合效果。当Alpha较高时容易产生TAA特有的鬼影现象。

材质实现:https://blueprintue.com/blueprint/bwa_kbpc/

Distance field mesh blending


该文作者认为这个可能是最佳方案。因为距离场模型融合是直接修改地形顶点,属于真实的过度效果。所以不会出现任何抖动问题。

大致效果如下:

使用之前需要执行以下步骤:

  1. 在Settings-Project Settings中搜索distance fields,确保Generate Mesh Distance Fields选项处于勾选状态。
  2. 在想要融合到地面的物体的属性中,取消勾选Affect Distance Field Lighting选项。

接下来就创建材质了:

右边的粉色框中节点将会连入Normal槽,你可以用一个参数变量来控制混合强度。因为当前材质没有混合地形与模型物体的纹理,只是平滑了交接面附近的法线。所以为了得到更好的效果,我们使用WorldAlignedTexture工作流程,并给它们与地形接近的纹理,这会达到一个更好的融合效果。

由于我们禁用了Affects Distance Field Lighting,这使得该融合物体无法使用距离场AO以及距离场阴影。这个方法性能消耗较大(用了曲面细分以及置换),虽然会有很好的效果,但如果你对性能优化以及场景的把控不足,还是不建议使用。

材质实现:https://blueprintue.com/blueprint/bqo9vg8i/

Runtime virtual texturing

实时虚拟贴图(RVT),这个文档上都有就不翻译了。

材质实现:https://blueprintue.com/blueprint/md12pcb5/

另一个视频中的优化技巧

这里我再追加另一个Quiexl视频中的性能技巧:

  • 使用Ue4的MergeActor将多个Mesh进行合并。视频2:00
  • 使用MegaScans的Ue4插件,将多个材质合并到一起。视频2:50

具体操作请参考: