Blenderで凸凹を表現できるノーマル(法線)マップの作り方、出力をする方法について説明しています。Ver2.91以降に対応していますが今後のアプデで仕様が変わるかもしれません。
ノーマル(法線)マップとは
ノーマルマップとはモデルの表面の凸凹を画像で表現したもの。法線マップとも言われることがある。これを使うとモデルの形状を変えずに画像で凸凹を擬似的に表現できるようになる。
今のご時世パソコンの性能も高いから別にノーマルマップを作らなくてもいいじゃないか、と思う人がいるかもしれないがパソコン以外のゲーム機(特にスマホ)によってはスペックが足りずゲームが動かなかったりするほかファイルサイズを小さくしてデータを切り詰める必要もある。そういうときにノーマルマップが活躍する。
ノーマル(法線)マップの作り方
ここでは2つのモデルから作る方法を紹介。他にも画像から作る方法がありますがそれはこちら。
モデルの準備
まずはローポリゴンのモデルとハイポリゴンのモデル2つを用意する。このとき2つのモデルを同じ位置にしておくこと。
次にローポリゴンの方のモデルのUV展開をして、マテリアルの作成をする。マテリアルの設定は作成したマテリアルをローポリゴンの方モデルに割り当てるだけでよし。
シェーダーの設定
モデルの準備が済んだら次はシェーダーの設定をする。
トップバーから「シェーディング」を選択してシェーディング画面に移動する。
ノード画面から「追加」→「テクスチャ」→「画像テクスチャ」を選択する。
追加した「画像テクスチャ」から「新規」をクリックし、新規画像を作成する。画像サイズ(幅、高さ)は任意の大きさで構わないが2の倍数にしておくのが無難(512, 1024, 2048あたり)。
同じくノード画面から「追加」→「ベクトル」→「ノーマルマップ」を選択する。
追加したノードを下の画像の様に配置する。「画像テクスチャ」のカラーを「ノーマルマップ」のカラーに、「ノーマルマップ」のノーマルを「プリンシプルBSDF」のノーマルに接続する。また「画像テクスチャ」の色空間を「非カラー(Raw)」にする。
ノーマルマップのベイクをする
シェーダーの設定が終わったらいよいよノーマルマップの作成。
まずプロパティからレンダーエンジンを「Cycles」に変更する。
レンダーエンジンを設定したらアウトライナー画面から「Ctrl」キーを押しながらハイポリゴンモデル→ローポリゴンモデルの順に選択する。
ベイクの設定をする。ベイクのタブをクリックして開いて「ベイクタイプ」を「ノーマル」に、「選択物→アクティブ」にチェックを入れて「レイの最大距離」を0.1にする。
「出力」でターゲットが画像テクスチャになっているのを確認したら「ベイク」をクリックしてノーマルマップのベイクを始める。時間がかかるので気長に待ちましょう。質を下げても速くしたい場合はレンダーのサンプリング数を下げる。
シェーディング画面の画像表示画面から「画像テクスチャ」で作成した画像を指定するとベイク結果が表示される。
もしベイク結果に黄色などの部分ができたらベイクがうまくできていないので「押し出し」や「レイの最大距離」の値を変えて再度ベイクする。
上手くノーマルマップのベイクができたら結果を画像として保存するのを忘れずに。
ノーマルマップ以外に凸凹を表現する機能
画像で凸凹を表現する方法としてノーマルマップ以外にも「バンプマップ」や「ディスプレイスメント」といった機能がある。
バンプマップは白黒で凸凹の高さを表現したもの。ノーマルマップとは違い手描きでも作成することができるが細かい表現はノーマルマップに劣る。
ディスプレイスメントはテクスチャから凸凹を実際に作るという機能。一番リアルな凸凹を表現できるが処理が重く、ある程度モデルを細分化しておかないと効果が得られないのが難点。
基本はノーマルマップで十分だと思うがバンプマップやディスプレイスメントも知っておくと表現の幅が広がるので覚えておくとよし。
コメント