こんにちは、後藤です。
今回は物を様々な角度から撮影した画像を使って3Dモデルを生成する技術「フォトグラメトリ」を試してみましたので、そちらをご紹介します。
フォトグラメトリとは様々な角度から撮影した物体の画像を、コンピューターで解析して3DCGモデルを生成する技術のことです。フォトグラメトリには以前は高価な機器やソフトウェアが必要だったのですが、最近では、カメラやコンピューター、ソフトウェアの技術が進歩したことによって、比較的安価な機器で高精度なフォトグラメトリができる環境が整いつつあります。近年、ゲームやCG映画の分野での導入例が増えているのですが、CADデータがない製品や、工場などの大きな空間を3Dモデル化することもできるというメリットがあるので、これからはビジネス用途での利用例も増えてくると思われます。
今回はフォトグラメトリの中でも、Appleが2021年6月のWWDCで発表したObject Captureというものを取り上げたいと思います。Object Captureは正確にはmacOS MontereyのAPI(アプリからOSの機能を呼び出すためのコマンド)になりまして、これを使えばiPhoneなどで撮影した写真から3Dモデルデータを生成することができるようになります。
フォトグラメトリやObject Captureがどういうものかは、こちらの動画をご覧いただくのが分かりやすいと思います↓
これまでフォトグラメトリを行おうとした場合、高価なハードウェアやソフトウェアを購入する必要があったり、さらにそのデータの扱いに3Dの専門的な知識が必要であったりと、敷居が高いものでした。それに対してObject Captureは、macOS Montereyを搭載し、要件を満たしたMacであれば無料で利用することができます。さらにAppleが作ったものだけあって、アルゴリズムも非常に優れており、高価なフォトグラメトリのソフトウェアと比べても遜色のない精度の3Dモデルを生成することができます。
AppleはObject CaptureのAPIを発表しただけで、公式のアプリを出していないので、利用するには少し手間がかかるのですが、ありがたいことに早速Object CaptureのAPIを利用したアプリが出ているので、今回はそちらのソフトを利用させていただきました↓
そのアプリはPhotoCatchというアプリで、Mac版は無料で利用できます。iOS版は写真のアップロードと3Dモデルの生成までは無料でできるのですが、データをダウンロードするときに1モデル数百円程度掛かります。これはクラウド上のマシンでフォトグラメトリの生成を行っているからで、その代わりにmacOS Montereyを搭載したMacを持っていなくてもiOSデバイスだけでObject Captureを利用することができます。
Object CaptureはiPhoneやiPad以外のスマホやカメラで撮影した画像でも利用できますが、デュアルカメラやLiDARスキャナ(深度センサー)が付いたiOSデバイスで撮影すれば、それらの付加情報を利用して精度の高いフォトグラメトリデータを生成できるそうです。
AppleのDeveloper 向けサイトにはフォトグラメトリのコツやサンプルファイルなどが公開されています。
https://developer.apple.com/augmented-reality/object-capture/
それによれば、フォトグラメトリの対象物を選ぶ際には、下記の条件を満たしていることが重要になるそうです。
- 適度な凹凸や模様がある
- 撮影中に形が変わらない
- 反射、映り込みが少ない
- 透明な部分がない
これらの特徴を考慮すると、衣服や食べ物、植物など、有機的なものが向いています。人物やペットも向いているのですが、どうしても撮影中に動いてしまうので、それらを撮影するためには、様々な角度に設置したカメラから一斉にシャッターを切ることができる専用の撮影セットが必要になります。平らな面が多いものは苦手なようですが、そういったものはモデリングを行ったり、CADデータを利用したりした方がよさそうです。
そして撮影の理想の条件は下記になるそうです。
- あらゆる角度から写真が撮られている(枚数が多いほど精度は高くなるが、その分処理に時間が掛かる)
- 撮影対象と背景の区別がつきやすい(黒っぽいオブジェクトであれば白い背景など)
- 光がまんべんなく当たっている(陰ができていない)
これらの条件を満たすために、屋外では直射日光が当たらない曇りの日に撮影するのが良いそうです。屋内では商品撮影用の撮影ボックスやターンテーブルを利用するのがAppleのお勧めらしいです。
Appleのサイトではサンプルの画像がダウンロードできます。片方の靴一足に120枚もの写真が使われています。ターンテーブルを使って丁寧に撮影されており、フォトグラメトリの撮影の際には非常に参考になります。
それでは次回は実際にObject Captureを使ってフォトグラメトリ撮影を行ってみたいと思います。お楽しみに!