UE4的绒毛与Mikkt
起因是因为UE不支持多pass,而美术自己max去生成模型不直观,于是又开始用一些小技巧去做这个材质效果。为了美术方便制作,能更可视化
起因是因为UE不支持多pass,而美术自己max去生成模型不直观,于是又开始用一些小技巧去做这个材质效果。
为了美术方便制作,能更可视化的调整离线生成的绒毛模型,于是,在UE里面用HDA工具在生成绒毛的同时,已经是给予了绒毛的材质,所以HDA生成的过程可以是最终的整体效果了。
这个时候,就遇到了问题,众所周知,毛发类材质,都是加了各向异性的,于是,在最开始的HDA工具生成绒毛的时候,材质显示的各向异性效果是。。。这样的:
很奇怪,HDA工具本身是写有导出模型的功能(方便美术同学能再导出已经调整好整体效果的绒毛模型),我就直接导出模型,然后再导入UE里面,再看却是正确的:
导出模型fbx再导入UE,就正确了,那么在HDA阶段的切线为什么是错误的呢。。是为什么呢?
于是就看到了Mikkt。
因为UE用的TangentSpace是Mikkt,而我在HDA生成的模型时候,用的默认的tangent,TangentSpace跟UE的不一样,导致计算错误,而导出去fbx再导入UE的话就正确,是因为大家都很熟悉的导入模型的时候,UE会弹出的这个窗口:
Normalmap的烘培是要跟模型一样使用相同的TangentSpace,但并不能保证计算正确。
上面MikktSpace网站有说明,当用到了镜像网格,那么这个时候左右的切线空间也可能是不一样的。比如这样的镜像了两边之后的模型:
而Mikkt计算的TangentSpace,可以避免这些问题。
解决办法:HDA生成模型时,不用默认的生成切线空间的计算,改用Mikkt,修正之后的结果:
最终效果:
材质效果参考的是大佬的妲己的尾巴的那篇文章,在这里不做赘述了,材质参考的相关链接:
真香预警!新版“峡谷第一美”妲己尾巴毛发制作分享YOung:Unity的PBR扩展——皮毛材质Mikkt相关文章和源码git链接:
MikkTSpace.comhttps://github.com/teared/mikktspace-for-houdini/tree/master/sourceMikkelsen大佬的那篇全面解读这种TangentSpace的计算过程的原文章:
http://image.diku.dk/projects/media/morten.mikkelsen.08.pdf
在这里感谢刘汉隆老师和康康大大给我的指点!
如果文章对你们有帮助的话,记得关注一下我呀~