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
在這里感謝劉漢隆老師和康康大大給我的指點!
如果文章對你們有幫助的話,記得關注一下我呀~
下一篇:UE444









