たつぷりの調査報告書

博士後期課程(理学)の学生が趣味でUnityやBlenderで遊ぶブログです。素人が独学で勉強した際の忘備録です。

Blenderで法線マップをベイクしてSpark ARで使う方法

どうもたつぷりです。前回に引き続きSpark ARでエフェクトを作成していきます。 今回は前回の投稿、 tatsupuri.hatenablog.com

において作成したエフェクトのグラフィックスを少し改善することを考えます。具体的には、前回作成した段階では表面の凹凸の情報などを取り込んでいなかったので、Blenderで表面の凹凸情報を法線マップにベイクしてそれをSpark ARで利用するための一連の手順についてまとめます。

Blenderで法線マップをベイクする

Blenderのマテリアルの情報をUnityやSpark ARなどで用いるためには、Normal Map, Smoothness (Roughness) Mapなどに焼き直して読み込ませるのが良い。今回がこの一連の方法についてまとめる。

今回用いるのは以前作成したヘルメットである。傷やへこみ、質感などをマテリアルで設定している。 f:id:Tatsupuri:20201005194614p:plain

例えば、口の部分などは以下のようにマテリアルを設定している。 f:id:Tatsupuri:20201005194622p:plain

このモデルをこのままFBXとかに出力しても、質感などは反映されないので、表面の情報、特にこの場合は法線マップに凹凸の情報をベイクすることを考える。それには、法線マップをベイクするテクスチャを新しく作成する。つまり新しくImageTextureを追加し、そこでターゲットとなるテクスチャを設定すればよい。 これでマテリアル側の設定は完了した。次にRender PropertyでRender EngineをCyclesに設定しておく。さらに、今回は法線マップを作成するのでBake TypeはNormalに設定しておく。以上でベイクの準備できたので、「Bake」ボタンを押してベイクを開始する。 f:id:Tatsupuri:20201005194630p:plain

しばらく待つと、以下のようにベイクした結果が得られる。 f:id:Tatsupuri:20201005194626p:plain

以上でブレンダーのマテリアルから法線マップをベイクすることができた。

法線マップをSpark ARで利用する

次に上で作成した法線マップをSpark ARで利用する。今回はSpark ARのデフォルトマテリアルに法線マップを割り当てる。PBRマテリアルを用いた方法は本質的には何も変わらないが、今後の投稿で改めてまとめる。

法線マップをまずはAssetに取り込む。Add Assetで取り込む法線マップを選択してインポートする。

f:id:Tatsupuri:20201005205238p:plain

法線マップを適用したいマテリアルを選択し、インスペクターのNormal プロパティをアクティブにする。その上でテクスチャに先ほどインポートした法線マップを適用する。 f:id:Tatsupuri:20201005205243p:plain

上が法線マップ適用前、下が法線マップ適用後の見た目である。このように表面の傷を取り込むことができた。 f:id:Tatsupuri:20201005205232p:plain f:id:Tatsupuri:20201005205226p:plain