基于UE4的写实头发制作流程

前言

按照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