赞
踩
贴图
本系列以UE4引擎为例,介绍游戏角色写实头发的制作。首先介绍贴图制作技法。
UE4的hair shading model采用PBR计算,所以只需要4张Mask贴图通道,不再需要美术手绘颜色信息。这四张贴图通道分别是Alpha, Depth, ID, Root,作用分别是:
所有的贴图通道都是通过工具生成,工具包括Maya, Xgen, XNormal, 以及自己用Python开发的两个Maya Tool。具体步骤如下:
·Pipeline中有部分工作,现有的工具无法完成,需要自己开发两个Python工具。第一个工具是Mesh生成工具。因为XGen导出的Curve不能渲染,必须通过工具转换成所需要的可渲染烘培发丝几何模型。第二个工具是随机选择工具。为了生成ID Map,发丝的几何模型必须随机分成N组,每一组指定不同的ID。
材质
写实头发材质部分,也就是讲下Shading Model实现.
Kajiya-Kay[1989]关于头发的Shading Model沿用至今,已经快30年。Kajiya模型的优点是:
但Kajiya模型又被称作Painter's Illusion, 难以获取真实的头发材质效果,其不足在于:
因为以上的问题,导致Kajiya Model是non-physically based。 游戏出售经验值参数导致光照能量不守恒。弊端是在Artist在特定的光照情况调出来的头发效果,光照发生变化之后,可能会出现明显的瑕疵,很多时候需要Artist把头发的颜色预先画在贴图上。
针对Kajiya模型的不足,Marschner[2003]提出了一个新的模型,其特点:
这个模型基本模拟了所有较明显的头发光照效果,因此在CG和游戏领域被广泛采用。
下面以Marschner. 2002. Light Scattering from Human Hair Fibers的论文以及UE4.20的实现来详细介绍Marschner Hair Model的近似解析解。
假设我们要求解的头发纤维散射函数为 S(φi,θi,φr,θr)。通过几何推导和实测数据验证,S有三个特性:
因此得到解析解的形式:
S(φi,θi,φr,θr) = ∑pM(θh) * N(φ)* A(p), p∈{R, TT, TRT, TRRT, GLINT........}
M为θ分布函数,N为φ分布函数,A = Absorption * Fresnel
(UE4里只考虑前三项的影响,且只处理圆形横截面)
最后还有scattering diffuse. 这一项的physically based计算非常复杂,UE4对这部分做了最简单的处理,参考了Kajiaya的diffuse term,同时用经验值和视线矫正过的NoL做了线性插值。UE4 Hair Shading Model作者也认为这部分的优化空间很大。Marschner.2008.Efficient Multiple Scattering in Hair Using Spherical Harmonics是一个很好的参考改进方案。
造型设计
头发的造型设计本来是纯美术的工作,但是因为操作方式太繁琐的原因,导致角色美术师普遍不喜欢制作头发部分。这一块可以根据角色美术师常用的建模习惯,在DCC软件内构建一个快捷环境,视频是笔者开发的类似功能展示,可以提升角色头发造型设计的效率。
插片制作 A Non-Destructive Method
接上篇,用Xgen打型输出的Primitive无法参与实时渲染,最终还是要转成面片的形式。以第三方插件Ornatrix为例,介绍一种Non-Destructive插片制作头发技法。头发插片一般分3层: 打底层,中间过渡层,最外层。下面介绍下最外层头发面片生成的流程基本设置。
所谓Non-Destructive是指制作流程中的每个环节都是单独模块化,对输入和输出的任何修改操作,都不会对其他环节造成破坏。而且每个环节对应一个节点,操作直观简单,还可以反复叠加,创作更复杂的效果。
Ornatrix提供有SDK和Python接口,TA更可以在其基础上开发流程工具,进一步提升效率,大大缩短头发制作的时间周期。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。