ノーマルマップとは

ノーマルマップとはポリゴン表面の凹凸を疑似的に表現できる機能です。主に青紫色のテクスチャーで表現されます。
ノーマルマップをマテリアルに設定すると、3Dモデルを軽量かつリッチに表現することができます。

マテリアルについてはこちらの記事を参考にしてください。
WEBサービスを使ってノーマルマップをつくる
ノーマルマップをつくる方法は色々な方法があります。自分に合ったものを探してみてください。
まずは「NORMALMAP ONLINE」というWebサービスを利用した方法です。このサービスを使うと、テクスチャを入力するだけでノーマルマップをつくることができます。
使い方はとてもシンプルです!
- ページ左側の正方形をクリック、もしくは画像をドラッグ・アンド・ドロップするとテクスチャを読み込めます。
- 次は中央のスライダーで Strength や、Level などを変更することでノーマルマップの強弱を調整できます。
- ノーマルマップの反映結果は右側の正方形内に表示されているので、プレビューを見ながら調節しましょう!

- 「Invert」の項目にチェックマークを入れることでノーマルマップの凹凸を反転することができます。また、プレビューは初期状態では他の影響を受けて表示されています。
- ノーマルマップの結果だけを確認したい場合は、「Normal」以外のチェックマークを外してください。
- 納得のいく見た目になったら画面中央の「Download」ボタンからノーマルマップ画像をダウンロードしましょう!

Blenderを使ってノーマルマップをつくる
また、Blender などのモデリングソフトを用いてもノーマルマップをつくることができます。この方法ではポリゴン数の多いモデルからポリゴン数の少ないモデルに向けてノーマルマップを作成することで、見た目を大きく変えることなく軽量化することができます。
まずはポリゴン数の少ないローポリモデルを用意しましょう。今回は平面の Plane を作成しました。次に平面を複製して、面を割ったり押し出しなどを用いながらポリゴン数の多いハイポリモデルをつくります。

次にローポリモデルだけをUV展開しましょう。UV展開の方法はこちらの記事を参考にしてください。
- ローポリモデルを選択した状態でマテリアルを新規作成します。
- Blender の Shading タブを開いてください。

- ノードエディタに「追加 > テクスチャ > 画像テクスチャ」から画像テクスチャノードを追加します。
- 「新規」ボタンを押してノーマルマップを保存する先の画像をつくりましょう。

- ノーマルマップの仕上がりを確認するために「追加 > ベクトル > ノーマルマップ」からノーマルマップノードを追加します。
- 追加したら下の図のように画像テクスチャノードとノーマルマップノードを繋いでください。

次にハイポリゴンからローポリゴンにベイクするための設定を行います。
- レンダープロパティを開きベイクタブを展開してください。
- レンダーエンジンを「Cycles」に、ベイクタイプを「ノーマル」に、「選択→アクティブ」にチェックマークを入れます。
- 押し出しやレイの最大距離はベイク結果が黄色くなってしまったときに数値を調節してみてください。

- 設定ができたら「ハイポリゴン → ローポリゴン」の順に3Dモデルを選択してください。
- ローポリゴンのモデルの文字の色が薄いオレンジ色になっていればOKです!
- ハイポリモデルとローポリゴンのモデルを全く同じ座標に配置しているか確認できたら、レンダープロパティから「ベイク」ボタンを押してください。

- うまくノーマルマップのベイクが成功すると平面ポリゴンに凹凸が現れています。画像タブの「≡」マークを押して、ノーマルマップ画像に名前をつけて保存してください。

Unity で設定しよう
- まずは作成したノーマルマップを Unity へドラッグ・アンド・ドロップをしてインポートしてください。
- インポートしたテクスチャーを選択して設定を変更します。Inspector ウィンドウにある Texture Type を Normal Map に変更し適用しましょう。
- これで Unity がこの画像をノーマルマップとして認識するようになりました。
- 次は3Dモデルに割り当てるため、Standardマテリアルを作成します。
- Project ウィンドウ上で右クリックをして、「Create > Material」からマテリアルを作成しましょう。つくったマテリアルを選択し、ノーマルマップを割り当てます。◎マークを押してインポートしたノーマルマップを選択してください。
- ノーマルマップの強弱は数値を入力することで凹凸の強弱を調節することができます。

ノーマルマップを設定したものと設定していないものを比較するとこのようになります。

同じ3Dモデルを利用していますが、設定したものには凹凸しているように見えます。
ポリゴン数を割かなくともリッチな表現ができるようになるため、ぜひノーマルマップを利用してみてください!