2018年,我们的演示短片《Siren》首次亮相时便产生了轰动,但短片中人物的秀发采用的仍然是传统的面片技术,所有秀发都是通过配有纹理的网格体实现的近似效果。这种方法在当时是最好的选择,即便它需要进行取舍,才能实现精细的发束效果、精准的阴影效果以及基于物理的模拟效果。英伟达的HairWorks提供了很大帮助,但它的官方支持在虚幻引擎4.16版就停止了。所以虚幻引擎必须增添一种本地化功能,以便支持实时毛发渲染。
在采用了全新的基于发束的工作流后,每一丝头发都能以精准的动作呈现,从而极大地提升画面质量。虚幻引擎4.24引入了一套完整的毛发着色器和渲染系统,它拥有光源多重散射效果和光线追踪阴影,并能通过特效编辑器Niagara进行动态集成。
图中秀发在渲染上使用了我们的多重散射方法,能够产生更为真实的外观。
导入工作流
虚幻引擎4.24版本的一大关注点是如何借助Alembic文件格式将毛发渲染和模拟系统轻松集成到现有开发流程中。我们提供了一种基于命名规范的架构,它有助于将静态毛发模型从数字内容创作软件中(例如Ornatrix、Yeti和XGen)导入虚幻引擎,并且这种架构提供了一种简洁明了的方式,可用于与其它工作室的专用毛发工具进行绑定。我们的架构能将“宽度”、“颜色”以及用于模拟插入毛发的“引导”属性转换到虚幻引擎中。单个Alembic文件中的多个毛发组可以通过“group_id”得到支持。我们与一些热门毛发创作软件的开发团队(Ornatrix和Yetid)展开了合作,以便提供内置支持,并且两款软件全都能够从本地将我们的Alembic协议导出至虚幻引擎的4.24版本中。有关在XGEN中使用Alembic架构的指南可以在这篇文档中查阅。
毛发导入后即可附加到骨架网格体上了,所有毛发的发根都会绑定到离它最近的网格体的三角形上。这就使得变换和蒙皮变形成为了可能,而这对于将毛发约束到皮肤动画上至关重要。
由Biotic Factory的角色美术师Yuriy Dulich在Yeti中创作的鸵鸟毛发。毛发由虚幻引擎渲染。
着色和渲染
渲染发束时需要应对三方面的挑战:锯齿、光线与单根毛发纤维的相互作用、以及光线在纤维之间的反射。普通人的头上有着成千上万根发丝,每根发丝的平均直径大约是100微米。在生成一张带有头发的图片时,每个像素点中都需要渲染许多可见的发丝。在采用我们的工作流程进行渲染时,导入的发束会被转换成单根多段线,然后被渲染成朝向摄像机的薄三角形条带。
创建数千根发丝所面临的一个问题是,我们必须仔细斟酌该系统中光散射行为的复杂性;我们将这个难题交给了我们的基于物理的毛发着色模型去解决。它能为单根发丝提供更为真实的效果。
为了精确估计出每根发丝通过的光线数量,我们混合使用了深度不透明度贴图和运行时体素化。在知道了发丝体积中有多少光线通过后,我们会使用双重散射近似来估计局部光线散射,以便估计出多重散射。这使得虚幻引擎能够更为忠实地渲染出毛发的效果,特别是浅色的金发效果,而这点在以往恰恰是最难的。
图中的人物秀发由XGen生成,随后被导入至虚幻引擎。它包含大约5万根弯曲的发丝。
模拟
毛发模拟是Niagara的其中一部分内容,并可以通过GPU实现。一旦创建完物理资源,模拟解算器就会开始处理体积碰撞。Niagara会处理自身碰撞,并根据平均速度场计算它们。弯曲、拉伸、厚度等可调整参数可以在不打开Niagara编辑器的情况下访问。性能
那些浓密的毛发轻易就能拥有成千上万根甚至数百万根发丝。而每根发束都能包含几十个控制顶点(CV)。这两个因素在相互结合后,就会对导入、渲染和模拟在性能层面上产生影响。如果要在高端电脑上实时渲染毛发,我们总结出的经验是,如果是长发并且CV值相对较高,那么发丝的平均数量在5万左右,如果是短发并且CV值相对较低,那么发丝的平均数量在20万左右。总结
我们对于能够在虚幻引擎4.24版本中推出基于发丝的毛发渲染系统感到非常兴奋,因为它在毛发实时渲染的历史上意义非凡。但是,这仅仅标志着开始。今后,我们将继续提升该系统的质量和性能。就着色和渲染而言,我们计划通过提供额外参数来增强我们的毛发BSDF,以产生更出色和更为精确的光照交互效果。尽管我们的多重散射方法已经能在实时环境中以前所未有的出色方式表现浅色毛发的效果,但我们仍将改善引擎,以便进一步提升毛发质量。
此外,我们还将开发出更为优秀的碰撞反馈和弹性材质,并且进一步细化模拟系统的美术控制选项。我们会在今后版本中推出一系列优化升级,以便支持更为浓密的毛发效果,并确保所有平台上的可延展性,同时我们也会考虑为低端设备提供基于面片的毛发生成方案。
总而言之,我们的目标是创建一个能够帮助客户开发出惊艳项目的毛发系统,并且我们希望听到您的反馈,以便更好地为您服务。该功能目前还处于测试阶段,您只需下载最新版本的虚幻引擎即可体验这一功能。此外,请查阅我们的毛发渲染和模拟文档以了解更多信息。