锅炉信息网 > 锅炉知识 > 锅炉资讯

UE4的绒毛与Mikkt

起因是因为UE不支持多pass,而美术自己max去生成模型不直观,于是又开始用一些小技巧去做这个材质效果。为了美术方便制作,能更可视化

起因是因为UE不支持多pass,而美术自己max去生成模型不直观,于是又开始用一些小技巧去做这个材质效果。

为了美术方便制作,能更可视化的调整离线生成的绒毛模型,于是,在UE里面用HDA工具在生成绒毛的同时,已经是给予了绒毛的材质,所以HDA生成的过程可以是最终的整体效果了。

这个时候,就遇到了问题,众所周知,毛发类材质,都是加了各向异性的,于是,在最开始的HDA工具生成绒毛的时候,材质显示的各向异性效果是。。。这样的:

最初的效果
只输出各项异性的结果

很奇怪,HDA工具本身是写有导出模型的功能(方便美术同学能再导出已经调整好整体效果的绒毛模型),我就直接导出模型,然后再导入UE里面,再看却是正确的:

HDA直接生成之后导出模型为FBX
查看切线
单独输出各项异性结果

导出模型fbx再导入UE,就正确了,那么在HDA阶段的切线为什么是错误的呢。。是为什么呢?

于是就看到了Mikkt。

因为UE用的TangentSpace是Mikkt,而我在HDA生成的模型时候,用的默认的tangent,TangentSpace跟UE的不一样,导致计算错误,而导出去fbx再导入UE的话就正确,是因为大家都很熟悉的导入模型的时候,UE会弹出的这个窗口:

默认导入设置

Normalmap的烘培是要跟模型一样使用相同的TangentSpace,但并不能保证计算正确。

引用http://mikktspace.com/

上面MikktSpace网站有说明,当用到了镜像网格,那么这个时候左右的切线空间也可能是不一样的。比如这样的镜像了两边之后的模型:

没有Mikkt的镜像位置会不同步

而Mikkt计算的TangentSpace,可以避免这些问题。

引用http://mikktspace.com/
有Mikkt的镜像位置会同步

解决办法:HDA生成模型时,不用默认的生成切线空间的计算,改用Mikkt,修正之后的结果:

Hda加节点设置Mikkt类型计算
左边HDA的效果是错误的,右边HDA的效果是Mikkt的,是正确的

最终效果:

材质效果参考的是大佬的妲己的尾巴的那篇文章,在这里不做赘述了,材质参考的相关链接:

真香预警!新版“峡谷第一美”妲己尾巴毛发制作分享YOung:Unity的PBR扩展——皮毛材质

Mikkt相关文章和源码git链接:

MikkTSpace.comhttps://github.com/teared/mikktspace-for-houdini/tree/master/source

Mikkelsen大佬的那篇全面解读这种TangentSpace的计算过程的原文章:

http://image.diku.dk/projects/media/morten.mikkelsen.08.pdf


在这里感谢刘汉隆老师和康康大大给我的指点!

如果文章对你们有帮助的话,记得关注一下我呀~

上一篇:四列导向可定制卧式液压机是技术参数功能介绍

下一篇:UE444

锅炉资讯

锅炉资讯

锅炉学习

锅炉学习

锅炉视频

锅炉视频

锅炉百科

锅炉百科