赞
踩
毛发的渲染技法有很多。我们主要讨论模型和着色的方案。
这类毛发可以参考GFur Pro插件。
https://www.unrealengine.com/marketplace/zh-CN/product/gfur-pro
这类毛发技术使用的是多层渲染。如下图所示,只要这些面片距离足够的近,我们就有一种是单根头发的错觉。
这类技术的问题是如果我们需要长的毛发,那么我们就需要非常多的截面,性能受到的影响就越大。
当然我们并不是一个面片一个面片进行绘制,密集毛发是通过在单个多边形上绘制多个毛发横截面来实现的。
如果我们以一个球体为例,我们想用毛皮覆盖它,我们需要复制球体并稍微膨胀它的表面,以便我们得到第一层,我们在其上绘制毛皮的第一个横截面。然后我们继续添加更多层,每一层都略高于另一层,直到我们到达毛皮的预期尖端。这些层也被称为Shell,因此得名这项技术。
我们可以在顶点着色器中移动shell的顶点。
传统而言,虽然存在个体差异,但是人体发量大体在10w左右。使用真实意义上的strands去渲染对性能影响巨大。因此划分面片或者Mesh 的操作将是一种妥协式的解决方案。
Epic放出的老的数字人的demo和Paragon都是使用的这种方案,只不过在面片的精度上Paragon要稍微低一点。
《最后生还者》即采用了这种方式来模拟头发。
根据画面风格的不同,我们将选取Mesh或者Card的方式进行。针对偏向卡通风格可能更适合Mesh,而写实风格则使用面片。
英伟达的HairWorks,最早的Hairwork用于2013年的《使命召唤:幽灵》上,用于模拟剧中那种狗狗“莱利”的毛发。虽然从效果上看一般,和《古墓丽影》中的柔丝顺滑相比视觉上并不吸引眼球。后来又用在了又叫好又叫座的惊世大作《巫师3:狂猎》上。HairWorks 基于曲面细分。对HairWorks的官方支持在虚幻引擎4.16版就停止了。现在已经开源。
AMD的TressFX,开源。2013年新版《古墓丽影》第一个引入了这种技术。
sig19,frostbite提出的基于strand的方式以及进一步处理single/multiple scattering。虚幻在4.24提供的Groom作为解决方案。4.26放出的MeerkatDemo里面,也使用了这个技术。
kajiya是基于经验的着色模型,也就是并不是完全的着色物理正确。不过对于大多数硬件性能较低的平台也算够用。
在Kajiya-Kay模型中,头发纤维被抽象化为一个不透明的圆柱体,不能够透射和产生内部反射。因此,Kajiya-Kay模型不能表现一些肉眼观察到的头发效果,同时也是能量不守恒的。在kajiya中,光照主要分为diffuse和Specular。
C o l o r = D i f f u s e + S p e c u l a r Color=Diffuse+Specular Color=Diffuse+Specul
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。