妹でもわかるUnrealEngine4

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

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

水のマテリアル研究④ ワールド座標を使ったマテリアル

f:id:una_unagi:20161207233817p:plain

「マテリアルの中にワールド座標(WorldPotision)っていうノードがあるんだけど、これが結構重要で、水のマテリアルを見ると、ラフネスとノーマルの複雑なやつの最初も全部これになっている」

f:id:una_unagi:20161207234206p:plain

「これは”そのピクセルがワールド座標でいうとどのへんなのか?”を数字で返してくる関数。このフロアはワールド座標が0,0,0の位置においてあるから、真ん中より上の方はX軸がプラス、右の方はY軸がプラスということになる。それをそのままベースカラーにつなぐと最初の4色パネルになる」

妹「わかるようなわからないような……ワールド座標は、色ではないよね?」

「色じゃないんだけど、計算上は同じVecter型になってる。赤(R)がX、緑(G)がY、青(B)がZに相当する。逆に色を座標計算に利用することも出来る」

妹「やっぱりなんかむずかしい。これを例えば大きくしても4色になるの?」

「なる。なるけど、完全に4色になってるわけじゃなくて、境界線のあたりは実は微妙にグラデーションしてる。ただ、1cmで1で、1以上だとベースカラーに繋いでも無視されるから、こういう風に見える。例えば数字を100で割ってベースカラーにつなぐ、100cm地点で1になるから、グラデーションが目で見える」

f:id:una_unagi:20161207235227p:plain
f:id:una_unagi:20161207235258p:plain

「これでも結局100cmより先は同じ色になっちゃうんだけど。あとワールド座標が基準だから、回転したり動かしたりすると色が変わる。ローカル座標なら変わらない」

妹「これをどうやって使うの?」

「水のマテリアルの場合で言うと、水面のマテリアルを等間隔に、かつUVマップを無視して表示するのに使ってる」

f:id:una_unagi:20161207235523p:plain

「これは100cm間隔に0~1の数字を繰り返すパターンだけど、これをベースカラーじゃなくてテクスチャノードにつなぐと、テクスチャの貼り方を変えることが出来る。数字を1000にすれば1000cm間隔に。その都度メッシュの形状やUVマップを調整しなくていいのが利点」

妹「RとGだけでBを無視してるのは?」

「Zを含めると、ところどころに青い色が出ちゃうから。水面でRとGしか使ってないのも、水面の高さに関係なく同じ表示にするためだと思う」

妹「ワールド座標とローカル座標以外にもマテリアルで使う座標ってあるの?」

「例えばスクリーン座標だと、画面の上下左右どのへんにあるかで色が変わる物体とか作れる。他にも使いみちがよくわからない物もあったけど、何かしらの座標計算を入れることで、状況によって見え方が変化するマテリアルを作れる」