水のマテリアル研究④ ワールド座標を使ったマテリアル
「マテリアルの中にワールド座標(WorldPotision)っていうノードがあるんだけど、これが結構重要で、水のマテリアルを見ると、ラフネスとノーマルの複雑なやつの最初も全部これになっている」
「これは”そのピクセルがワールド座標でいうとどのへんなのか?”を数字で返してくる関数。このフロアはワールド座標が0,0,0の位置においてあるから、真ん中より上の方はX軸がプラス、右の方はY軸がプラスということになる。それをそのままベースカラーにつなぐと最初の4色パネルになる」
妹「わかるようなわからないような……ワールド座標は、色ではないよね?」
「色じゃないんだけど、計算上は同じVecter型になってる。赤(R)がX、緑(G)がY、青(B)がZに相当する。逆に色を座標計算に利用することも出来る」
妹「やっぱりなんかむずかしい。これを例えば大きくしても4色になるの?」
「なる。なるけど、完全に4色になってるわけじゃなくて、境界線のあたりは実は微妙にグラデーションしてる。ただ、1cmで1で、1以上だとベースカラーに繋いでも無視されるから、こういう風に見える。例えば数字を100で割ってベースカラーにつなぐ、100cm地点で1になるから、グラデーションが目で見える」
「これでも結局100cmより先は同じ色になっちゃうんだけど。あとワールド座標が基準だから、回転したり動かしたりすると色が変わる。ローカル座標なら変わらない」
妹「これをどうやって使うの?」
「水のマテリアルの場合で言うと、水面のマテリアルを等間隔に、かつUVマップを無視して表示するのに使ってる」
「これは100cm間隔に0~1の数字を繰り返すパターンだけど、これをベースカラーじゃなくてテクスチャノードにつなぐと、テクスチャの貼り方を変えることが出来る。数字を1000にすれば1000cm間隔に。その都度メッシュの形状やUVマップを調整しなくていいのが利点」
妹「RとGだけでBを無視してるのは?」
「Zを含めると、ところどころに青い色が出ちゃうから。水面でRとGしか使ってないのも、水面の高さに関係なく同じ表示にするためだと思う」
妹「ワールド座標とローカル座標以外にもマテリアルで使う座標ってあるの?」
「例えばスクリーン座標だと、画面の上下左右どのへんにあるかで色が変わる物体とか作れる。他にも使いみちがよくわからない物もあったけど、何かしらの座標計算を入れることで、状況によって見え方が変化するマテリアルを作れる」