欢迎光临散文网 会员登陆 & 注册

5.2 毛发和皮毛渲染

2023-09-06 18:32 作者:Dragon_1997  | 我要投稿

5.2 毛发和皮毛渲染

转载 :虚幻引擎           

https://mp.weixin.qq.com/s/MJ7UxpniuJmjK48x9ABMXA                                                           023-09-04  09:00   发表于上海                      


概述

在实时游戏引擎中,毛发和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 2048r.HairStrands.DeepShadow.DepthBiasScale 10r.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:在半透明对象之后,但在景深之后的半透明渲染之前合成毛发(这允许针对毛发深度进行深度测试)


5.2 毛发和皮毛渲染的评论 (共 条)

分享到微博请遵守国家法律