はじめに
今回はNormalMap
について取り上げたいと思います。

NormalMap
を使うことでモデルの表面の法線を設定することができ、光の反射の仕方などに影響を及ぼすことができます。
また実際にメッシュに凹凸をつけたりすればいいのではないかと思われるかもしれませんが、公式ドキュメントには以下のように書かれています。
このような場合に、そんな小さなディティールを “実際の” ジオメトリで作成するのは、通常、よい方法ではありません。右側に、ディティールのネジ一個を作成するのに必要なポリゴン数が表示されています。実際にモデル表面にディティールを沢山作り込んだ大きなモデルは、描画するためにとても多くのポリゴンを必要とします。このような状況は避けるべきなので、実際のディティールを作り込む代わりに法線マップを使い、大きなモデルのポリゴン数をできるだけ抑えます。
法線マップ(Normal Map)(Bump mapping) - Unity マニュアル
今回は左図にあるようなただの円柱を、NormalMap
を用いてリアルな床っぽく見せることを目的にやっていきたいと思います。
早速みていきましょう。
NormalMapとは
少し知っている方には青紫のテクスチャの奴で伝わるかもしれませんが、例えば以下の画像みたいなものです。

Normal Map
はピクセル単位で法線ベクトルを表しています。
各ピクセルの色はRGB
(赤・緑・青)の0 ~ 1
の3つの値で表現することができますが,それぞれをXYZ
軸の-1.0 ~ 1.0
として見立てます。
(Z
が上方向になります)

UnityでNormalMapを設定する
作成したNormal Map
をUnity
に持ってきて適応してみましょう。
Texture type
をNormal Map
にすることで、Normal Map
として利用することができます。

次にMaterial
を作成し、テクスチャ・NormalMap
を適応してあげれば準備は完了です。

あとは任意の3Dオブジェクト(今回はCylinder
)に先程作成したマテリアルを適応してあげればサンプルの完成になります。


さいごに
Normal Map
をつけるだけで見た目がグッと上がって、ただのCube
とかでもそれなりの見た目にすることができると思います。
またアセットを購入したりした場合でも、よくNormal Map
が同梱されていても適応してないとかもあるので、気にしてみると良いかもしれません。
ではまた。