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

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

とりあえず始めるフォトグラメトリ(3) メッシュ~テクスチャ付きメッシュの生成

前回で低密度点群から高密度点群を生成し、そのままメッシュを生成しました。
今回はそこから先… テクスチャ付きメッシュを生成するまでを詳しく紹介します。

f:id:manabuokajima:20180416125624p:plain

 

f:id:manabuokajima:20180416114113p:plain
今回はこれを使って説明します。

不要なメッシュの削除

低密度点群でも不要な部分を削除しましたが、それでも生成したメッシュには不要な部分がたくさんあると思います。

f:id:manabuokajima:20180416114508p:plain

今回は石碑のモデルが欲しいので、それ以外の地面や空中のゴミは要りません。
同様に [多角形選択] ツールで削除しましょう。
f:id:manabuokajima:20180411185029p:plain

無駄な領域を残すと、そういった領域にもテクスチャが貼られる=必要な部分のテクスチャ解像度が低くなってしまいますので、クオリティのためにも重要な工程です。

f:id:manabuokajima:20180416115326p:plain

メッシュ形状の補正/加工

3DF Zephyr には、生成したメッシュに対するフィルタがいくつか用意されています。

f:id:manabuokajima:20180416120953p:plain

  • 間引き … 指定した頂点数になるよう頂点を減らす
  • 高密度化 … 逆に頂点数を増やす(未検証)
  • ○○スムーサー … 頂点の平滑化処理(2種類)
  • フォトコンシステンシーベースの最適化 … メッシュを最適化(頂点数は増えたり減ったり)
  • トポロジー … 三角ポリゴンの面積が同じくらいになるようにメッシュを再形成
  • カラーの更新 … スムーサーなどで位置が変わった頂点の頂点カラー更新
  • 穴埋め-○○ … 写真から形状が判らなかった部分に出来る穴を埋める(2種類)

正直良く判らないので、唯一僕が多用している [リトポロジー] を紹介します。

トポロジー

フォトグラメトリで生成したメッシュは、(乱暴に言うと) 3Dスキャンで得られた点3つを選んで三角ポリゴンを貼っていくわけで、スキャンの精度が高い場所では三角形が小さく、低い場所では三角形が大きくなります。
3DF Zephyr の[リトポロジー]機能では、これを均一になるように調整してくれるようです。(詳しくは下の説明文を参照)

 

f:id:manabuokajima:20180416123105p:plain

  • ファクター: 三角形の面積に関連するパラメーター。大きいほど荒くなる
  • 繰り返し数: 試行回数。多いほど三角形の面積が均一に近づく

f:id:manabuokajima:20180416124927p:plain

まぁザックリと言うと、ポリゴン数を削減する機能と考えて良いでしょう。
3DF Zephyr の [間引き] や、Blender [ポリゴン数削減] モデュファイアよりも形状が保てる気がしているので、僕は多用しています。

f:id:manabuokajima:20180416124851p:plain

テクスチャ付きメッシュを生成

さて、メッシュの編集が終わったら、テクスチャ付きメッシュを生成しましょう。

[ワークフロー] [テクスチャ付きメッシュ生成]を選択してください。

ウィザードに従えばサクッと作れます。
f:id:manabuokajima:20180416130735p:plain

最大テクスチャサイズ

3DF Zephyr では正方形のテクスチャマップを生成します。
Unity や UnrealEngine だと最大 8192x8192 ピクセルという制限だったと思いますので、無暗に高い値にする必要はありません。

頂点の最大数

ここでも頂点数を削減することが出来ます。

ただし、「ここで指定した数値はあくまで努力目標」であって、生成されるテクスチャ付きメッシュの頂点数は指定より大きくなります。その点ご留意ください。

最大にした場合、元になるメッシュよりも頂点数がちょっとだけ多くなる場合もあります。

テクスチャの最大数

マルチテクスチャをサポートしているようですが、ゲームでの利用を考えると基本的に1 で良いと思います。対象が大きな場合には最大数を2以上にすると効果があるかもしれません。

ちゃんと検証していません。判明したら教えてください

おわり

テクスチャが付くと、グッとリアルになります。
あとは、*.obj や *.fbx で出力するだけですね。お疲れ様です。

f:id:manabuokajima:20180416131749p:plain

オマケ: UV展開を別ツールで行う

フォトグラメトリで悩ましいのは、UV 展開をツールが自動で行う点だったりします。
これが辛いので、3DF Zephyr では お好きなツールで UV 展開を行う事が出来るようになっています。

僕のような 3DCG 初心者は別に困らないのですが、プロにとっては重要なことだと思いますので、下記を参照するとよいでしょう。

Unwrapping a Zephyr generated texture - 3Dflow