MENU閉じる

HEXA BLOG

CG

HEXA BLOGCG2021.7.15

いい加減なフォトグラメトリでモデリングを加速しよう!

読者のみなさま、こんにちは。大阪スタジオ・テクニカルアーティストのタカガハラです。

しばらくぶりのヘキサブログ当番ということで改めて数えてみると今回で8回目となりました。これまでの投稿は下記の通りです。

 

前回が2020年1月なので実に1年半ぶりですね。ただならぬ世の中になって久しいですがありがたいことに息災に過ごせております。

そんなご時世のなか、趣味のモデリングにフォトグラメトリを活用してみましたので今回はそのご紹介です。具体的なソフトウェアの使い方ではなくフォトグラメトリの考え方や手軽にできる過程を知っていただければという趣旨で、

  • ・フォトグラメトリとはなんなのか
    •   - 「フォトグラメトリ」とは
    •   - 「3Dスキャン」との違いは?
    •   - 総称としての「リアリティキャプチャ」
  • ・どうしてフォトグラメトリなのか
  • ・どうアプローチするか
    •   - 被写体(モチーフ)
    •   - 生成モデルの精度
    •   - 使用カメラ
    •   - 撮影枚数
    •   - 使用DCCツール
  • ・HoudiniとAliceVisionのお話
  • ・結果どうなったのか

 

と以降は進行しますのでご興味ある方は今回もどうぞよろしくお願いします!

                                                                                        

フォトグラメトリとはなんなのか

まずはキーワードについて簡単に整理していきましょう。

「フォトグラメトリ」とは

広い意味でのフォトグラメトリ(Photogrammetry)は写真の縮尺をもとに被写体の大きさを測量する技法でして、「写真測量法」などと和訳されることもあるようです。デジタル・アナログを問わず建築、土木、気象、考古学などの分野で古くから広く活用されています。

その中でも今回とりあげるのはCG技術としてのフォトグラメトリです。これは複数の写真をコンピューターで解析し3DCG空間に被写体を再現するものです。「フォトスキャン」と呼ばれることもあります。

「3Dスキャン」との違いは?

実在の被写体を3DCGに取り込むという点で似た手法に「3Dスキャン」があります。

フォトグラメトリとは違いターゲットを写真に撮るのではなく、電磁波または超音波の反射でターゲット表面の距離情報を取得する技法です。

傷つけることが許されない歴史的建造物や広大な地形などを正確かつ高速に測量する大規模な業務目的で発展した経緯がありますが、近年では個人でもスマートフォンを使って3Dスキャンが大変手軽にできるようになりました。これはすごいことです。恐るべき人類!

このとき活用される「LiDARスキャナ」は不可視光のレーザーをターゲットに照射し反射を取得することで測量するシステムです。

そのほかに超音波を使う事例としては海洋調査船に搭載したソナーから海底地形を測量するといった活用方法もあります。

総称としての「リアリティキャプチャ」

いずれにせよ、これらの方法を「現実世界をCG空間に取り込む」というニュアンスで「リアリティキャプチャ」と総称することがあります。

ここまでで「フォトグラメトリ」「フォトスキャン」「3Dスキャン」「リアリティキャプチャ」というキーワードが頻出したわけですが、以前のヘキサブログでも覚えがあるという方は相当なヘキサブログ通と言えるでしょう!

リアリティキャプチャ関連の投稿をいくつかピックアップしましたのでこちらもご覧いただければと思います。

どれもヘキサスタッフの試行錯誤が偲ばれる傑作ばかりです。

                                                                                        

どうしてフォトグラメトリなのか

エクステリアのモデリングが一通り完成しました。

私、空き時間を見つけては趣味がてら愛車フェアレディZをモデリングしておりまして、その様子は2019年の投稿でご紹介しております。こちらはこちらでカーモデリングの注意点を交えた記事ですのでご興味があればぜひご覧ください。

エクステリア(外装)のモデリングがひと段落し、しばし自転車競技に明け暮れた後モデリングの対象がインテリア(内装)へと移ります。

どうしてインテリアのモデリングをする前にタカガハラは自転車競技に明け暮れてしまったのか。

アメリカの政治家ベンジャミン・フランクリンが残した
「この世で確かなものは、税と死だけだ」
という格言は有名ですが、確かなものをさらにつけ加えるならば
「クルマのインテリアモデリングは面倒くさい」
ということです。

ご存じのようにクルマのインテリアは部品点数が多く、パネル同士は複雑に入り組んでおり、操作スイッチの類も気が遠くなるほど大変細かいものばかりです。

一方のエクステリアについて個人的見解ですが、いまどきの市販車であれば外観の大部分を構成するボディパネルとウィンドウは一つ一つが大きく、表面積の割にはモデリングすべき要素が少ないと言えます。

このようなギャップに打ちのめされた私はモデリングの手を休め、運動不足解消と称してロードバイクであちこちを走り回った末に富士山で開催された自転車レースで入賞するに至ります。

「富士の国やまなし 第17回Mt.富士ヒルクライム」にてブロンズ賞を獲得しました!

これほどまでに険しいクルマのインテリアモデリング……なんとしても手抜きをできないものか……。

ハッ! フォトグラメトリならば……!

                                                                                        

どうアプローチするか

いよいよフォトグラメトリに取り掛かるわけですが、今回の段取りをお話しします。

被写体(モチーフ):自動車のドアトリム

理由は前述のとおりです。

ドアの黒い内張り部分が「ドアトリム」です。ぼかしているのはガレージのガラクタが景観を損なっているからです…。

ところで大事なこととしてフォトグラメトリでアプローチできるモチーフ(被写体)には条件があることを今一度理解しておきましょう。

撮影できること

そもそも論で恐縮ですが存在しないものや手元に用意できないものは写真に収めることができません。実在していてもあまりにも小さすぎたり大きすぎるもの、撮影が禁じられているものもフォトグラメトリではアプローチできません。

動かないこと

先の説明で述べたように、様々なカメラアングルから被写体の立体的な形状を得ようとするわけですから、カメラアングルごとに被写体の形が変わっているようでは正しく処理されません。したがって生きている動物全般や風に揺られる屋外の植物、稼働中の機械などはフォトグラメトリ向きとは言えません。

例外もあります。それはキャラクターモデリングの手法として俳優さんをフォトグラメトリでCG化する場合です。たとえプロのモデルさんであっても完全な静止はできません。

こうした事例では、必要なアングルを網羅できる台数のカメラを設置し同時にシャッターを切れる特別な雲台セットで解決しています。すべてのアングルを同時に撮ればアングルごとの形状は同じにできるというわけですね。

ヘキサドライブ大阪スタジオでもこうした同時シャッターを実現するカメラセットを実験しています!

光沢や映り込みがなく、かつ、ライティングが変化しないもの・環境であること

PBR的に表現するとラフネス値が低いものは周囲の環境が映りこんでしまい画像解析の過程で被写体の情報と映り込みの情報が区別できずに結果が破綻してしまいます。

屋外の被写体であればライティングにも注意が必要です。様々なアングルが欲しいからと言って時間をかけすぎてしまうと太陽が動いてしまいますし、極端にいえばネオンサインのように変化の激しい光源も避けるべきです。

つまり、自動車のボディのようにクリアコートで仕上げられている塗装表面はフォトグラメトリ向きとはとても言えませんが、内側の樹脂製ドアトリムはフォトグラメトリ向きなのです!

生成モデルの精度:おおまかな形が確認できればヨシ!

結果に対して求める精度は状況次第だと思いますが、今回の私はMayaでポリゴンモデリングをするに先立ってアタリをつけるに足りる形の情報がほしいのです。そこは趣味ですからね。モデリングは自分でやるのがタカガハラ流であります。

もちろん業務のゲーム開発ではいかに効率よく素早く実装データを用意するか、が重視されますから事情が違うことはご理解いただけますと幸いです。

使用カメラ:Nikon D810

データ転送の手間や連写性能、絶対的な解像力から今回はデジタル一眼レフカメラを使います。

最大7360×4912ピクセルで撮影可能なNikon D810

(セミ)マニュアルモードでISO感度や絞りを操作・固定できるのもこうしたカメラの魅力です。今回のように大まかな精度で事足りるのであればスマートフォンのカメラでも十分かもしれません。

ただし、最近のスマートフォンは撮影後にソフトウェアで画像を自動的に加工するものがありますのでその点は注意しましょう。できるだけ無加工、いわゆる「撮って出し」の素材が理想的です。(RAWデータを現像する際にはハイライト・シャドウを補正したほうが良い場合があります:後述)

撮影枚数:モチーフ全体をまんべんなく写せる枚数

前述のとおり写真に写った情報をもとに処理する仕組みですから、ソースとなる写真には3Dモデルとして必要な部分が写っていなければなりません。

同じ部分でも立体形状を画像から判定するためには異なるアングルの写真も豊富であるほうが結果の精度は期待できます。したがって基準となる撮影枚数はモチーフにもよりますが、参考までにAliceVision(後述)のサンプルデータでは1個のリンゴを59アングルから撮影した画像が用意されています。なお、ソースデータが増えると精度は高まる傾向にありますが、引き換えに計算時間は長くなることをお忘れなく。

AliceVisionのサンプルデータ:一つのリンゴを59アングルも見るのは生まれてはじめてです。

使用DCCツール:Houdini

フォトグラメトリ用ソフトウェアは数多くあり私が把握しているだけでも以下のものがあります。

そのほかにもスマホアプリが充実しているようですが、今回はワークステーションの演算能力を最大限活用するため、そしてDCCツールで円滑にデータを扱いたいのでこれらは考えないことにします。

今回は手軽に使えて、なおかつその場である程度のデータ編集も行えるという利点に着目しHoudini18.5、そのなかにあるSideFXLabsの一部として利用できるAliceVision(アリスビジョン)プラグインを利用します。

                                                                                        

HoudiniとAliceVisionのお話

そんなわけでHoudiniとAliceVisionプラグインです。

Alicevision プラグイン | SideFX

ソフトウェアの導入方法や使い方など詳しい説明は上記の公式ドキュメントが大変わかりやすいです。かいつまんで申し上げると、

  1. 1. HoudiniにSideFXLabsをインストール
  2. 2. Meshroom(AliceVisionプラグインの本体)をローカル環境にインストール
  3. 3. 「houdini.env」を編集してパスを登録
  4. 4. Houdiniを起動し「AV Photogrammetry SOP」ノードを作成
  5. 5. 撮影した写真を「AV Photogrammetry SOP」ノードに登録
  6. 6. 「AV Photogrammetry SOP」の「Cook」ボタンで計算開始!(数時間かかることがあります)

という流れで3Dモデルを得ることができます!

                                                                                        

結果どうなったのか

AV Photogrammetry SOPノードの設定画面。81枚の写真が登録されています。

いよいよお待ちかね、タカガハラの愛車をAliceVisionでCookします。事前に撮影したドアトリムの写真は全部で 100枚以上 に上ります。

撮影した100枚以上の素材たち。手ブレを選別した結果81枚が生き残りました。夏場の撮影は虫よけ対策を万全に!

Cookボタンを押してから待つこと小一時間……24スレッドのちょっと古いXeonがモリモリ計算した結果がこちら!

ここでようやくタイトル回収です。「いい加減なフォトグラメトリ」の神髄とも言える穴が…
大きな穴が開いていますね…?

この穴はおそらく素材写真に乗ってしまったハイライトが原因と思われます。

対策としてはデジタル一眼レフであればRAWデータを記録できますから撮影後にハイライトの白飛びとシャドウの黒つぶれを補正することで精度は高まるでしょう。

おおまかな形がほしいというニーズはこれでも十分満たせるので今回は深追いはしないことにします。ヨシッ!

そのほか気を付けたところとして、手持ちで撮影したため手ブレの大きい写真はある程度目視で取り除いてあります。今回は一度きりなので手作業でしたが、大量の素材を裁くのであればOpenCVなどを活用して手ブレ写真は自動で取り除くような仕組みを作るべきでしょう。

さらに精度を追及するなら三脚やスタビライザー付きの雲台でカメラを安定させたり、ISO感度・シャッタースピード・絞りのセッティングを事前に練ったほうが間違いないです。

簡単な後処理としてこのようなネットワークを組んでいます。

出来上がったモデルの傾きを補正したり余分な要素を取りのぞき、多すぎるポリゴン数を「polyreduce」ノードで削減してFBXファイルに出力しています。

このFBXをMayaに読み込み、アタリとして活用したモデリング過程がこのようになります。何もない空間から曲線だらけのドアトリムを起こすことを考えれば、フォトグラメトリのモデルをリファレンスできる意義は大きいのではないでしょうか。

こうして出来上がりつつあるクルマのインテリアモデルがこちら。

AAAクラスのハイエンドグラフィックなゲームタイトルの開発で活用事例が増えているフォトグラメトリですが、生成結果そのものに完成度を追及しないのであれば驚くほど簡単に個人でも試すことができる様子がお判りいただけたら幸いです。

                                                                                        

ヘキサドライブでは仲間を募集しています!

ヘキサドライブでのゲーム開発に興味をお持ちの方、3DCGアーティストまたはテクニカルアーティストの方、「この記事より自分のほうがフォトグラメトリ活用できるし」という方、ヘキサドライブへのエントリーをお待ちしております。

ヘキサドライブ 採用サイト

ということで「いい加減なフォトグラメトリでモデリングを加速しよう!」は以上となります。

ここまでお読みいただきありがとうございました。それでは!

 

注意事項

筆者ならびに株式会社ヘキサドライブ(以下「当方」)は、当記事において公開している全ての手法の有用性や安全性などについて一切の保証を与えるものではありません。これらの手法を使用したことによる直接的または間接的な損害に対し、当方は一切の責任を負いません。自己責任のもとでご活用ください。

当記事内に登場する会社名、製品名、サービス名は、各社の登録商標または商標です。本文中には®、©、™は表記しておりません。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE