UE5.2毛发和毛皮渲染
黑科技自营
2023年09月04日 22:42
收录于文集
共8篇
虚幻引擎ue5教程

概述

在实时游戏引擎中,毛发和Groom的渲染往往存在很多特殊的困难。本教程将介绍关于使用虚幻引擎中的MRQ来渲染高质量毛发和Groom渲染的一些基本提示和技巧以及问题。

下方链接提供了有关UE中的毛发和Groom主题的一些额外信息:

https://docs.unrealengine.com/5.2/en-US/hair-rendering-and-simulation-in-unreal-engine/

基本设置

阴影

默认情况下,阴影由体素体积投射。此体积的大小与物理资产相关,将随Groom的绑定几何体发生变化。

1) 你可以按如下方式提高分辨率(介于0.1 - 0.05之间的值比较合适,默认为0.3): 

r.HairStrands.Voxelization.Virtual.VoxelWorldSize 0

(此控制台变量也可以添加到MRQ中的控制台变量)

另一种方法: 

2) 你也可以切换光源以使用深阴影。(此选项在光源本身上)

注意:UE4中Groom的毛发还会通过反射捕获来接收间接光照,如果你在场景中没有设置反射捕获,毛发可能会更暗一些。 

一些推荐的设置

(确保视口设置为“实时”) 

要潜在改进毛发的纤细程度, 

  • 请增加取样数量:

    • r.HairStrands.Visibility.MSAA.SamplePerPixel 8

  • 更改光栅化方法(这实际上成本更高,会拖慢系统):

    • r.HairStrands.Visibility.PPLL 1

  • 减小光栅比例:

    • r.HairStrands.RasterizationScale 0.3

对于环境光照,如下更改环境集成: 

r.HairStrands.SkyLighting.IntegrationType 1

要使用体素改进阴影和投射精度:

r.HairStrands.Voxelization.Raymarching.SteppingScale 1

其他推荐的设置

MRQ设置

不像稻草的纤细发束的一些额外设置

调试

问题:“毛发看起来太像稻草”

对于实时版本:

r.HairStrands.Visibility.MSAA.SamplePerPixel 8

r.HairStrands.Voxelization.Raymarching.SteppingScale 1.15

对于离线版本(你仍可以在视口在运行该功能,但前两个选项可能调整快慢):

r.HairStrands.Visibility.PPLL 1

r.HairStrands.SkyLighting.IntegrationType 1

r.HairStrands.Voxelization.Raymarching.SteppingScale 1

r.HairStrands.DeepShadow.SuperSampling 1

在这两种情况下,建议设置以下变量:

r.HairStrands.Voxelization.Virtual.VoxelWorlSize 0.1

r.HairStrands.VelocityRasterizationScale 0.5

对于光照也进行以下操作: 

  • 在边沿光源上启用深阴影,因为这有助于减少噪点

  • 更改毛发着色器,以增加一点随机性,打破常规,因为目前它看起来太平坦

  • 更改毛发宽度。为此,打开Groom资产,并转至“发束(Strands)”选项卡。在其中,你可以将发束宽度从0.01增加到0.015/0.02,避免“看起来太透明”

深度问题

增加每个像素的取样数: 

r.HairStrands.Visibility.MSAA.SamplePerPixel 8

或切换到PPLL渲染:

r.HairStrands.Visibility.PPLL 1

(使用此功能会对性能造成很大的影响,但可带来最美观的结果。) 

如果这是深度精度问题,你可以尝试增加近Z值,看看是否有帮助。 

例如:

r.SetNearClipPlane 0.1 

你可以设置或调整的其他控制台变量是:

r.HairStrands.DeepShadow.Resolution 2048

r.HairStrands.DeepShadow.DepthBiasScale 10

r.HairStrands.DeepShadow.InjectVoxelDepth .5

渲染设置案例研究:

此简短示例来自真实客户的真实案例研究,毛发中有多余的噪点和阴影变暗。

在此例中,不论是否使用TAA,毛发在渲染后都留下了过多的噪点。在调试问题时,我们怀疑多余噪点来自当前的一组控制台变量。尤其是:

将这两个变量降至1以下会造成多余噪点,这通常可由TAA解决。

阴影变暗可通过资产或组件上的阴影密度来解决或调整,对其产生影响。还有一个全局变量用于这一用途:

r.HairStrands.Voxelization.DensityScale

技巧提示

深黑色或纯黑色提示

在r.HairStrands.Visibility.PPLL = 1时,减小毛发末端比例参数会造成一些奇怪的瑕疵(基本上末端会变为纯黑色)

更清晰的阴影

要实现更清晰的阴影,请在光源上打开“深阴影(Deep Shadows)”

Groom渲染中的瑕疵

要帮助解决Groom渲染中的瑕疵,请调整以下值:

r.HairStrands.SkyLighting.SampleCount

控制台变量 - 可视化和调试

r.HairStrands.StrandsMode(发束的渲染调试模式。0:关闭,1:模拟发束,2:使用彩色模拟发束影响来渲染发束;3:毛发UV,4:毛发根部UV,5:毛发种子,6:尺寸)

r.HairStrands.DebugMode将显示大量有用的渲染属性。r.HairStrands.DebugMode 12将聚焦毛发附着物。选取后,你可以选择可视化大量信息:

  • r.HairStrands.MeshProjection.DebugInUVsSpace,

  • r.HairStrands.MeshProjection.DebugSkinCache

  • r.HairStrands.MeshProjection.Render.Rest.Triangles

  • r.HairStrands.MeshProjection.Render.Rest.Frames

  • r.HairStrands.MeshProjection.Render.Deformed.Triangles

  • r.HairStrands.MeshProjection.Render.Deformed.Frames

  • r.HairStrands.MeshProjection.Sim.Rest.Triangles

  • r.HairStrands.MeshProjection.Sim.Rest.Frames

  • r.HairStrands.MeshProjection.Sim.Deformed.Triangles

  • r.HairStrands.MeshProjection.Sim.Deformed.Frames

如果你想渲染调试信息,这些信息也有很多,可用于模拟调试、显示Groom物理资产图元 + (r.HairStrands.StrandsMode 1 + r.HairStrands.StrandWidth 0.5)

半透明(Translucency)

要确保在半透明对象前面渲染发束,就需要另一个控制台变量设置:

r.HairStrands.ComposeAfterTranslucency

下面是r.HairStrands.ComposeAfter半透明度的后续选项:

 0:在半透明对象之前合成毛发。

 1:在半透明对象之后,但在单独的半透明对象之前合成毛发。

 2:在所有/单独的半透明对象之后合成毛发

 3:在半透明对象之后,但在景深之后的半透明渲染之前合成毛发(这允许针对毛发深度进行深度测试)

转载自:https://mp.weixin.qq.com/s/MJ7UxpniuJmjK48x9ABMXA​