当前位置:   article > 正文

毛发渲染总结_shell 毛发渲染

shell 毛发渲染

毛发的渲染技法有很多。我们主要讨论模型和着色的方案。

一.毛发模型方案

1.1 Shell Based Fur

这类毛发可以参考GFur Pro插件。

20210602145811

https://www.unrealengine.com/marketplace/zh-CN/product/gfur-pro

这类毛发技术使用的是多层渲染。如下图所示,只要这些面片距离足够的近,我们就有一种是单根头发的错觉。

20210602150050

这类技术的问题是如果我们需要长的毛发,那么我们就需要非常多的截面,性能受到的影响就越大。

当然我们并不是一个面片一个面片进行绘制,密集毛发是通过在单个多边形上绘制多个毛发横截面来实现的。

20210602150357

如果我们以一个球体为例,我们想用毛皮覆盖它,我们需要复制球体并稍微膨胀它的表面,以便我们得到第一层,我们在其上绘制毛皮的第一个横截面。然后我们继续添加更多层,每一层都略高于另一层,直到我们到达毛皮的预期尖端。这些层也被称为Shell,因此得名这项技术。

我们可以在顶点着色器中移动shell的顶点。
20210602150455

1.2 面片(card)与Mesh

传统而言,虽然存在个体差异,但是人体发量大体在10w左右。使用真实意义上的strands去渲染对性能影响巨大。因此划分面片或者Mesh 的操作将是一种妥协式的解决方案。

20210602112848

Epic放出的老的数字人的demo和Paragon都是使用的这种方案,只不过在面片的精度上Paragon要稍微低一点。

20210602141946

20210602174600

《最后生还者》即采用了这种方式来模拟头发。

根据画面风格的不同,我们将选取Mesh或者Card的方式进行。针对偏向卡通风格可能更适合Mesh,而写实风格则使用面片。

1.3 HairWorks&TressFX

20210602113337

英伟达的HairWorks,最早的Hairwork用于2013年的《使命召唤:幽灵》上,用于模拟剧中那种狗狗“莱利”的毛发。虽然从效果上看一般,和《古墓丽影》中的柔丝顺滑相比视觉上并不吸引眼球。后来又用在了又叫好又叫座的惊世大作《巫师3:狂猎》上。HairWorks 基于曲面细分。对HairWorks的官方支持在虚幻引擎4.16版就停止了。现在已经开源。

AMD的TressFX,开源。2013年新版《古墓丽影》第一个引入了这种技术。

1.4 Strand

sig19,frostbite提出的基于strand的方式以及进一步处理single/multiple scattering。虚幻在4.24提供的Groom作为解决方案。4.26放出的MeerkatDemo里面,也使用了这个技术。

20210602152116

1.5其他

20210602113351

二.着色模型

2.1 kajiya-kay(1989)

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/108540
推荐阅读
  

闽ICP备14008679号