前言
按照UE4的头发shading model需要发片和四张贴图,为了得到四张比较高质量的贴图,需要在Xgen中做出非常逼真的头发,然后用这个头发把四张贴图烘出来。
这个思想其实跟我们平常熟悉的流程是一样的,先做出高模,也就是质量尽可能高的美术资源,然后用这个美术资源重新整合渲染所需要的信息,把它转化为低模和贴图的形式,再放到引擎里做计算。
现在UE4.24新推出了基于发丝的渲染之后,在流程上就跳过了中间,在Xgen中把头发做完导出abc文件就能放进引擎里使用。
下面先介绍一下Xgen这个工具制作头发的逻辑,然后介绍如何做UE4需要的发片和贴图。
内容预览
一、Xgen制作头发的流程
mesh cards -> curves -> guides -> strands,以及细节调整
二、Unreal渲染头发的美术素材准备
贴图、插片
Xgen制作头发的流程
Xgen生成发丝strand都是基于Guides来生成,所以要得到头发先要得到这些guides,Xgen内部有通过curves和hair base自动生成guides的功能,所以在使用xgen之前要先准备好curves和hair base。
1、zbursh打形
主要是做出头发的走向,这样下一步做发丝的时候跟着这个导向做会容易一些
2、用maya的拓扑工具画mesh cards
这里就是根据头发的走向,画一些比较有代表性的面片
3、mesh cards -> curves
将mesh cards转curves工具maya里就有
4、建立hair base
就是需要长出头发的头皮区域,hair base需要有uv
5、curves -> guides
准备好curve和hair base之后就可以用xgen了,通过这两个东西生成有头发生长规律的Guides引导线,这个引导线就是Xgen生成头发的基础,接下来如果要长头发的话都是跟着这个引导线。现在这个引导线自动生成,效果非常的差,所以就需要做一些调整。引导线本身就是直接可编辑的,可以手动去调,但最好还是先把自动的效果做的好一点,然后手动微调
比如把curve的起点往内收缩一点,以及调整某些生成引导线的参数,然后重新生成一下
生成一个还可以的,这个结果再去手动微调会比较方便
6、guides -> strand
直接自动生成的话比较挫。下面介绍一下Xgen是如何设计工具,使得美术能够比较直观的调整头发的效果的
一个是density map,可以控制头发生长的密度,白色密度大,深色密度小
再生成出来的头发就比刚刚好很多
还有一个是region map,就是给头发分区的,就比如这个地方有一条头发的发线,就可以用region map让头发以此为界往两边长
接下来是提高头发真实感的一个很重要的工具,就是添加Clumps layer,把头发弄成一缕一缕的。可以调节一些参数比如发束的密度,就是这些绿色的细线就是密度的一种可视化,还有控制发束收拢速率的曲线。一般情况下一层clumps是不够的,这里是做了密度递增的三层
左边是一层就很假,右边就是三层,大发束里又有小发束 ,就跟真实的情况比较接近
还可以进行很多细节调整,比如头发的杂色,这里不继续说了,总之以hair base的mesh和guides为基础,可以通过xgen的工具可以生成非常真实的头发,xgen有很多功能可以帮助你得到你想要的头发效果,还是有比较高的自由度的。
这就是比较完整的,纯美术的做头发的流程。但是这样的头发肯定是放不到游戏里的,所以下面就讲一下如何做发片和贴图。
Unreal渲染头发的美术素材准备
1、贴图
五张贴图分别是
Diffuse:其实不常用,因为基本上赋一个纯色就行
Alpha:做透贴
Root:发根到发梢的渐变效果
Depth:头发遮挡关系的信息
ID:不可能所有的发丝都是一样的,就需要随机地给不同的发丝指定不同的ID,让头发有几种不同属性的发丝混杂在一起
制作贴图比较流行的方法是用前面讲的方法,在Xgen中制作几种需要的发束,然后通过这些发束模型在Xnormal这个工具中把贴图烘出来
xgen中做好需要的几种发束,转换成mesh
然后给发丝分不同id,因为要做idmap,这个就是随机给他们分,Maya目前没有直接的工具,TA如果设计这个流程就需要做一个工具可以随机给发丝分ID
alpha和depth差不多就是直接烘,rootmap需要实现准备好渐变的贴图,idmap需要准备好几个不同灰度的图片,比如如果有五个id就需要五张。然后xnormal bake出需要的四张贴图。
Xnormal烘的结果
现在还有一种方法不需要Xgen做出发束再去bake,就直接在substance designer里把这几张贴图模拟出来,但要模拟得好比较困难。这一段gif是把一张刮痕贴图得刮痕调整成发丝的样子。
2、发片
做插片的方法有很多,目前用的比较多的工具是Ornatrix,可以通过Xgen的头发曲线把分好uv的插片放上去。Xgen自己也可以生成面片。
但xgen生成面片的话分uv比较累,就是要手动把面片的uv分到不同的发簇上。其实现在大家做的游戏发片都比较少,用工具都不如手动插快,就是直接把分好uv的发片插上去。
可以看到现在的流程是非常繁琐的,而且很多步骤其实可以通过完善工具链来提高效率,就需要TA去做这个事情。
比如Maya做一个工具箱,直接一键把xgen做的发束分好id,用Maya的阿诺德烘好贴图。
Reference
https://80.lv/articles/creating-hair-for-real-time-projects/
https://medium.com/@EightyLevel/tips-tricks-on-hair-for-games-66367a1b8be7
https://www.youtube.com/watch?v=_BSlDfF-Iys
https://www.youtube.com/playlist?list=PLklk5VvcgwJCTorNMvCWx_Faby5ZQ-3Wr