写真から寿司を生成するためのメモ

フォトグラメトリはやべぇ技術だと思うんだけど、なんか気軽に使うには敷居が高いように見えるので、出来る範囲で Tips とか書きます。

xNormal でノーマルマップ(など)をベイクする

前回 Instant Meshes でローポリモデルを作ったので、今回はそのローポリモデルのためのテクスチャを用意します。
ノーマルマップを用意する事でリトポロジーによって消えた細部の凹凸を再現することが出来ます。

f:id:manabuokajima:20180424150352p:plain

ついでに、Unity Delighting Tool で Delighting 処理を行うのに必要な

  • ベースマップ / カラーマップ / アルベドマップ (いわゆるテクスチャ)
  • ノーマルマップ
  • Bent Normal
  • アンビエントオクルージョンマップ

の4つを作ってしまおうとおもいます。

 xNormal の用意

僕は最初、Blender でノーマルマップをベイクしていたのですが、Bent Normal マップを生成するには xNormal を使うのが手っ取り早い

www.xnormal.net

f:id:manabuokajima:20180424141341p:plain

なんかヤバそうな見た目のツールですが、今回はこれを使います。
最低限 各種マップを生成する手順しかわかっていないので、細かい事は各自調べてください…

xNormal で各種マップを生成する手順

ローポリモデルの UV 展開を行う

事前に各種 DCC ツールで、ローポリモデルの UV 展開を行ってください。
これについては説明を省略します。

ハイポリモデルとローポリモデルの指定

ウィンドウ?右のボタン群の「High definition models」で、フォトグラメトリツールで生成したハイポリモデルとテクスチャを、「Low definition models」で Instant Meshes で生成したローポリモデルを指定します。

  1. 「High definition models」ボタンを押すと中央にリストが表示されるので、リスト内で右クリックし、右クリックメニューから「Add meshes」を選択

    f:id:manabuokajima:20180424142121p:plain

  2. 事前に用意したハイポリモデルを選択
  3. リストに選択したハイポリモデルの情報が追加されるので、再度右クリックし、右クリックメニューから「Base texture to bake」を選択

    f:id:manabuokajima:20180424142358p:plain

  4. ハイポリモデルのテクスチャを選択
  5. 右のボタン群から「Low definition models」を選択し、1-2 と同様の手順でローポリモデルを選択

    f:id:manabuokajima:20180424142121p:plain

生成するテクスチャの指定

次に右のボタン群から「Baking option」を選択し、生成するテクスチャの種類やサイズ、出力先を指定します。(画像を参照)

f:id:manabuokajima:20180424143223p:plain

※1 実際に出力される際に「Output File」で指定した名前にテクスチャの種類を示す文字列が追加されます。判りにくい…

生成するマップは、Unity Delighting Tool を見据えて…

  • Normal map … ノーマルマップ
  • Bake base texture … ベースマップ(いわゆるテクスチャ)
  • Bent Normal map … ベントノーマルマップ
  • Ambient Occlusion … アンビエントオクルージョンマップ

にチェックを入れてください。

テクスチャの生成

以上を設定し、右下にある丸い「Generate Maps」ボタンを押すとテクスチャの生成が始まります。
別ウィンドウが開き、こんな感じの画像がレンダリングされ始めるはずです。

f:id:manabuokajima:20180424144137p:plain

動かなくなったら完了です。Preview ウィンドウの [Close] を押してください。

おわり

生成された各種マップは、「Baking options」の「Output Files」で指定したファイル名にマップの種類名が付加されて保存されます。

f:id:manabuokajima:20180424145833p:plain

これらを Unity や UnrealEngine4 で適用すれば、ローポリモデルに細かな凹凸や陰影を付けることが出来ます。

おまけ

xNormal は起動時に、前回の状態が残ります。
「High definition models」や「Low definition models」のリストに前回指定したモデル情報が残ったままになりますので、要らないものは「Remove mesh from list」で削除しましょう。

補足:Bent Normal?

Unity Delighting Tool が要求するノーマルマップの亜種です。
通常は利用しないと思いますが、後で必要になるので用意しておきましょう。

僕は良く判っていませんので、参考 URL を張り付けておきます。
上手く理解できた方は教えてください…