見出し画像

UE日記 ノーマルマップの色

みなさんこんにちは。
今日もチビチビUEを触っております。

さて今回はノーマルマップについて復習しようとおもいます。
「疑似的な高さ」を描写してくるマップなんですが、
どんな仕組みなんでしょうか。


ノーマル(法線)マップとコンピューターの関係

ノーマルマップは日本語訳で「法線マップ」と言います。

Nomarl:  「(線が)垂直の」    って調べたら載ってるんですよね。ビックリ

コンピューターは人間が認識できる
例えば「四角」や「球体」「三角」という言葉の意味は理解できません。
色情報も「赤」や「ピンク」「茶色」なんて言っても通じません。

なので
コンピューターが理解できるようにコンパイル(変換)してあげる必要があるんですね。
そこで使うのが3次元のベクトルになります。
X,Y,Zの数値で「モノの形」や「色の情報」を認識するわけですね。
(書きながら思ったんですが、コンピューター言語のコンパイルって
そういう意味なのかと)



ノーマルマップと色情報

ノーマルマップは法線の向きをもとにコンピューターが
色情報をベクトルで認識するんでしたね。

次の↓下の画像を見てください。

手前にY、右にX、上にZ ベクトルを指す

これはマテリアルノードの「PixelNormalWS」を使って表したものです。
このノードはノーマル(法線)の向き情報(ベクトル情報)を
取得できるものです。

現行の形式だと
X(右)=R、Y(手前)=G、Z(上)=B を表します。
それぞれが3次元ベクトルの+方向を向いていれば
手前の立方体のようにRGB値1をつけるわけです。

他の丸みを帯びた面を持つ立体は
例えば黄色は、XYの間の45度を向いているため
(1,1,0)となるわけです。

また三角錐は底面以外の全ての面が
上を向くため、必ずBの値を持ちます。

逆に立体が 3次元ベクトルのー(マイナス)方向を向いていると
↓下の画像のようになります。

全ての立体の底面は
Z軸に対して 完全にマイナスなので (0,0,0)なわけです。
X軸とY軸に マイナス向きをとる面(0,0,0)も 黒になります。

※※
黒=0と書きましたが、正確にはマイナスは0~-1までをとります。
0以下からは同じなので間違っていました。


もちろんですが、
アクタを回転させてもワールド座標は決まっているので
色の変化はありません


まとめ

今までなんとなく使ってきたノーマルマップの意味が分かってきました。

・ノーマル(法線)マップは向きの情報をコンピューターが認識できるように、RGB値をベクター変数で格納する
・X,Y,Zのプラス軸はそれぞれ R,G,Bと相関している
・それぞれの軸との角度が0度ならRGB値の1をとる。逆にマイナス方向だと
値の0をとり黒になる
・おまけに全方向を向く面は存在しないので白はない

とのことでした。
前回のLinearinterpolateと続いてスッキリする内容でした。
色情報をベクター変数として扱うのはUEからなので
中々難しいことも多いですが、1つずつ覚えていきたいですね。

では、また。








この記事が気に入ったらサポートをしてみませんか?