この記事はKLab Creative Advent Calendar 2019の4日目の記事になります。

こんにちは、KLabGames 3D背景デザイナー兼RRRグループのnaoieです。

私はとある機会に岩石や植生等の汎用モデルを大量に取得できないかと悩んでおりました。

解決するためには色々な手段があるとは思いますが、その中でフォトスキャンソフトを利用して、工数を削減しつつ素材を取得出来ないかを試す事にしました。

進めるにあたり様々なフォトスキャンソフトにどのような利点や精度があるかも併せて知りたかったため、弊社”どぶろく制度”を利用し行った検証から、それぞれのソフトの仕様の違いや利点を今回まとめましたので、これからフォトスキャンを行うという方がいらしたら、参考にしていただけますと幸いです。

フォトグラメトリとは?

物体を様々な方向から撮影した写真をコンピューターで解析し
3Dモデルを作成する技術です。

フィギュアのような小さなものから建築や都市といった大きなものまで
3Dモデルにすることができます。

フォトグラメトリのソフトウェア

今回試したソフトは、以下の4つです。

手順や計算時間、アウトプットモデルを比べてみました。

1.Autodesk Recap Photo
2.Agisoft PhotoScan
3.RealityCapture
4.Alice Vision Meshroom

使用したカメラ

IPhone X

  • HDR設定で40~60枚撮影
  • 撮影時間はおよそ2~3分

本来なら一眼レフカメラを利用しますが
スマホのカメラでどの程度の精度が出るか試してみました。

HDR設定で黒つぶれや白飛びを防ぐことで、よりよくモデル形状やテクスチャを抽出することが出来ます。

被写体

  • 弊社近くの公園のベンチ
  • 固形である程度大きく光沢の出ない物質として選定しました。

image12

撮影方法

  1. 被写体を中心に、ぐるりと周回するように撮影する
  2. 撮影した写真に被写体がすべて収まっている

撮影する枚数が多ければ多いほど、撮影するアングルの間隔が細かくなればなるほど認識率*の高い写真になりモデルやテクスチャの品質が高まります。

※認識率とは被写体の形状が、それぞれの写真で合致個所が多いことを指します。

▼撮影アングルイメージ                                        ▼撮影された写真 

Autodesk Recap Photo

▼工程

  1. 写真を取り込む
  2. クラウドサーバーが、自動でモデルとテクスチャを生成

▼特徴

  1. クラウドサーバーが、自動でモデルとテクスチャを生成してくれる
  2. 精度は被写体面に垂直に撮影した写真のピントとその枚数

▼計算時間

  • 約2時間 写真60枚ほど

Agisoft PhotoScan

▼工程

  1. 写真を取り込む
  2. カメラ位置検出
  3. ポイントクラウド生成
  4. テクスチャ生成

▼特徴

  1. ポイントクラウドを生成し、品質を調整できる
  2. レーザースキャンなどの高精細なデータも扱える

※ポイントクラウド(点群データ)
XYZの基本的位置情報や色などの情報を持つ3次元データです。
このデータから、ポリゴンとテクスチャを作成することが出来ます。

▼計算時間

  • 約2時間 写真60枚ほど
  • ポイントクラウドデータの作成に時間かかる
  • Pythonでのバッチ処理が可能

RealityCapture

▼工程

  1. 写真を取り込む
  2. カメラ位置の計算
  3. モデル作成
  4. テクスチャ生成

▼特徴

  1. 操作が簡単で精度が良い
  2. 計算時間も他のソフトに比べ、早い

Alice Vision Meshroom

▼工程

  1. 画面下部の任意のノードを右クリック
  2. Computeをクリック

▼特徴

  • 写真を入れた後の工程が全自動
  • 計算時間も今まで紹介したソフトより高速で処理する
  • オープンソースで無料でモデル/テクスチャまで確認できる

もしこれを手作業した場合

誰が行っても、簡単で品質が高くまとめることが出来ればよいですが
制作者によって多少、品質や作業時間に差が出てしまいます。

汎用的なモデルに時間をかけるより、その世界観固有のモデルや
特殊なフィールドの方に制作時間をかけるべきです。

フォトスキャンに向いているオブジェクト

〇向いている

  • 固形
  • 大きい/太い
  • 光を反射しない
  • 光沢が出ない

✖向いていない

  • 半透明/透明
  • 小さい/細い
  • 反射する
  • 光沢が出る

ゲームモデルの利用に向いているオブジェクト

〇向いている

  • 形が歪なもの
    → 手作業だと制作工数が掛かる為
  • たくさん配置できるもの
    → 汎用的な利用価値があるといろんな案件で使用機会が増える

✖向いていない

  • 使用することに許諾や承認が必要な物
    → 意匠や形状にネームバリューのあるものはトラブルの原因になるかも
  • 形状が幾何学的な物
    → 意図的ならよいが、いくらかノイズが載ってしまう
    モデルから作ったほうが、応用しやすいことがある為
  • 現実世界のどこにあるものか、特定できるもの
    → 特定できてしまうと、ゲームの世界観に没入できない為

自然物が無難だと思いますが、上記”向いている”要素が含まれているものであれば
工数削減と利用機会のある良いモデルになるかと思います。

スキャンモデルをゲームモデルにする

スキャンしたモデルのUVは、ゆがみが極力少ない状態を維持している為
UVアイランド多い状態で生成されています。

image11

これだとデータ量が余計に増してしまう為、ゲームモデルとして最適化を行います。


  1. ポリゴン削減
  2. ゲーム用UV展開
  3. ゲーム用UVへフォトスキャンテクスチャをベイクする

ポリゴン削減

任意のDCCでポリゴン削減を行います。

以下はHoudiniの”PolyReduce”を利用したものです。

image10

ゲーム用UVへテクスチャをベイクする

1.UV展開

ポリゴンを削減したモデルのUV展開を行います。

UVの切れ端は出来るだけ鋭角なモデル変化をした個所に設けることで
テクスチャの切れ目を目立たなくさせることが出来ます。

image9

2.テクスチャベイク

作成したゲームUVとフォトスキャンモデルUVをGameDev Simple Bakerに接続し
テクスチャをベイクします。

image1

image2

まとめ

1.写真を上手く撮影すれば品質に差はほとんどない
ソフトによって手順や計算速度が異なる

2.得意なもの
固形物 大きい/太い 反射しない/光沢が出ないもの

3.ポリゴン削減とUV展開をすればゲームモデルに早変わり
自動化できれば量産が可能


今回は触れませんでしたが、Python等で自動処理が可能です。

また、ポリゴン削減の定義なども精度の良いものが出来れば
ゲームモデル化まで量産が可能となります。

出来るだけ汎用モデルの工数を削減しより力を入れるところに
割く時間を捻出出来ればと思います。

参考文献

フォトグラメトリーとプロシージャルを用いた最新ハイエンドゲーム3DCG背景制作手法
~ハイエンドゲーム開発の経験がない会社がいかにしてそれらを生み出したか~

フォトグラメトリ入門 撮影方法~3Dモデル作成

[比較] Reality Capture vs. 3DF Zephyr

人柱系CGモデラーのTipsブログ