読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

水のマテリアル研究⑩ ノーマルマップの合成

「これまでの研究で、M_LakeWater_01マテリアルの構造はだいたい解明できたけど、もう1つちょっと変なのが残ってる」

f:id:una_unagi:20161215234702p:plain

「2つのノーマルマップをAddノードで接続してる。これは2つの法線ベクトルの中間、足して2で割ったような角度になる。同じのを2つ足した場合角度は変わらない。なんでそうなるかというとこんな風な感じな計算結果になるから」

f:id:una_unagi:20161215234835p:plain

XYZの値が問題じゃなくて、そのベクトルが向いてる方向だけがノーマルマップで必要になる。ここではY軸の分は省略してるけど原理は同じ」

妹「足して2で割るんじゃなくて、足すだけで終わりなの?」

「割ってもいいんだけど、角度としては同じだから、ベクトルの長さが2か1かというだけの問題で、それはどっちでも計算上問題ない。割るとその分遅くから、このマテリアルでも割ってないんだと思う」

妹「図の最後のとこにある、Xだけ足した場合っていうのは?」

「これが最初わからなかった部分なんだけど、違う形のノーマルマップを合成するのはわかるけど、その前にMultiplyで黄色と掛け算してるのはなんなんだろうなあと」

f:id:una_unagi:20161216000105p:plain

「これも例によって数字の計算なんだけど、(R)1.0, (G)1.0, (B)0.0 を掛けると、RとBは1を掛けても元のままで、Bだけ0になる。赤と緑だけ残る。それをベースカラーにつなぐと、こういう毒の沼みたいな画像になる」

妹「気持ち悪いですな……」

「途中結果だから。でこれを元の画像にAddで足すと、赤と緑の分の角度が強く反映される。中間じゃなくて、毒の沼寄りの角度になる」

f:id:una_unagi:20161216001433p:plain素の状態
f:id:una_unagi:20161216001458p:plain元のとRGB1,1,0を掛けた画像をAdd
f:id:una_unagi:20161216001505p:plain元のとRGB5,5,0を掛けた画像をAdd

妹「デコボコがすごくなってるのはわかる」

「デコボコがない真っ直ぐな状態は、赤も緑も0だから、そこをプラスかマイナスに強調するとデコボコが大きくなる。ただ角度は真横以上にならないから、これに100とか1000とか掛けても変わらない。今回はただ計算してみただけだから、単純にデコボコを深くしたいなら、先日紹介したNormalMap-Onlineのオプションでやった方が簡単だし速いんだけど」