Blenderで法線マップをベイクしてSpark ARで使う方法
どうもたつぷりです。前回に引き続きSpark ARでエフェクトを作成していきます。 今回は前回の投稿、 tatsupuri.hatenablog.com
において作成したエフェクトのグラフィックスを少し改善することを考えます。具体的には、前回作成した段階では表面の凹凸の情報などを取り込んでいなかったので、Blenderで表面の凹凸情報を法線マップにベイクしてそれをSpark ARで利用するための一連の手順についてまとめます。
Blenderで法線マップをベイクする
Blenderのマテリアルの情報をUnityやSpark ARなどで用いるためには、Normal Map, Smoothness (Roughness) Mapなどに焼き直して読み込ませるのが良い。今回がこの一連の方法についてまとめる。
今回用いるのは以前作成したヘルメットである。傷やへこみ、質感などをマテリアルで設定している。
例えば、口の部分などは以下のようにマテリアルを設定している。
このモデルをこのままFBXとかに出力しても、質感などは反映されないので、表面の情報、特にこの場合は法線マップに凹凸の情報をベイクすることを考える。それには、法線マップをベイクするテクスチャを新しく作成する。つまり新しくImageTextureを追加し、そこでターゲットとなるテクスチャを設定すればよい。 これでマテリアル側の設定は完了した。次にRender PropertyでRender EngineをCyclesに設定しておく。さらに、今回は法線マップを作成するのでBake TypeはNormalに設定しておく。以上でベイクの準備できたので、「Bake」ボタンを押してベイクを開始する。
しばらく待つと、以下のようにベイクした結果が得られる。
以上でブレンダーのマテリアルから法線マップをベイクすることができた。
法線マップをSpark ARで利用する
次に上で作成した法線マップをSpark ARで利用する。今回はSpark ARのデフォルトマテリアルに法線マップを割り当てる。PBRマテリアルを用いた方法は本質的には何も変わらないが、今後の投稿で改めてまとめる。
法線マップをまずはAssetに取り込む。Add Assetで取り込む法線マップを選択してインポートする。
法線マップを適用したいマテリアルを選択し、インスペクターのNormal プロパティをアクティブにする。その上でテクスチャに先ほどインポートした法線マップを適用する。
上が法線マップ適用前、下が法線マップ適用後の見た目である。このように表面の傷を取り込むことができた。