AppleのPhotogrammetry(Object Capture)を試す
テクニカルディレクターの森岡です。
6月7日にAppleの開催するWWDC21(World Wide Developer Conference)が開催されました。WWDCの中で個人的に注目したのがAppleが提供するPhotogrametryのAPI、Object Captureです。
Photogrammetryとは?
Photogrammetry(フォトグラメトリ―)とは、平たく言うと写真から3Dモデルを生成するテクノロジーです。基本的には複数枚の様々な角度からの写真を撮り、それらを解析することで立体データを推測します。下のキャプチャは実際のフォトグラメトリソフトでの作業シーンで、小さな白いピラミッド1つ1つが写真の撮影箇所を示しています。
Photogrammetryは商用のソフトウェアとしてすでにいくつか出回っており、有名なところではRealityCapture、3D Zephyr、MetaShape(旧Photoscan)などがあります。
ワークフローとしては基本的にデジタル一眼レフやスマートフォンで目標を様々な角度から撮影し、そのデータを持ち帰って該当ソフトウェアで処理をかけて3Dモデルを作る、という手順になります。詳しく知りたい方は藤原龍さんの銭新井弁財天VRの記事を読むと良いと思います。
同じように3Dデータを撮る方法として他に3Dスキャナなどがあります。代表的なものだとBLK360やFAROなどがあります。
Photogrammetryを利用するメリットとしては写真ベースなのでテクスチャが綺麗なこと、一般的な機材でテストできるため検証が容易なことが上げられます。一方、デメリットとしては照明条件に左右されること、相対的なスケールになってしまうことなどが上がるかと思います。
どこが面白そうなのか
今回Appleが発表したObject Capture。先ほど話した通り、すでにサービスを提供している会社がいくつかある状態です。なので新規性はObject Captureにはありません。
では何が面白いのか、というと『写真だけでなくiPhone/iPadならではの情報を組み合わせたPhotogrammetryを行う』というアプローチをObject Captureで採用していることです。
iPhoneやiPadはAndroidと異なり、写真(カラー情報)以外にもLiDARやToF方式などの距離が測れるセンサを内包しています。また、加速度センサ、ジャイロセンサ、コンパスやGPSなどさまざまなセンサも内包しています。
これらの情報を使うObject Captureは、通常の(写真だけを使う)Photogrammetryよりもクォリティ高く、もっとプラスアルファの情報を付加した3Dモデルを作れるのでは?というのが気になるポイントになります。
開発環境の準備
WWDCの発表と同時にサンプルプログラムが公開されているので早速テストしてみましょう。用意するものは以下になります。
・MacOS機(MacbookやiMac)
・iOS / PadOS機(iPhoneやiPad)
・Apple Developer License
また、Developerサイトから下記のインストールが必要になります。
・MacOS 12(beta)
・iOS / PadOS 15(beta)
・Xcode 13(beta)
iOS機、MacOS機でそれぞれ下記サイトを開き、Beta版のOSをインストールします。
その後、MacOS機ではXcodeのBeta版もインストールします。
iOS側のサンプルプログラム
まずはPhotogrammetry用のデータを撮影できるサンプルプロジェクトをiOS機にインストールしましょう。下記URLのプロジェクトをダウンロードし、Xcodeで開いてiOSにインストールします。
ちなみに撮影したデータを吸い出すことが何故かMacOS12(beta)ではできなかったので、一度WindowsPCに繋いでデータを吸い出しました。
MacOS側のサンプルプログラム
次にMacOS側のコマンドラインプロジェクトをダウンロードしてビルドします。
ビルドすると第一引数がソースのファイルが入っているフォルダを、第二引数に出力する3Dファイル名を指定すると3Dデータファイルを生成してくれるコマンドラインアプリができるので、iOSで撮影したデータをMacOSに持ってきて実行します。
暫く待つと処理が完了し、3Dモデルが生成されます。
出力結果
試しに13枚ほど撮影し、データを処理したところそれっぽい3Dデータが生成されました。
ちなみに撮影データは以下のように1度の撮影で3つのファイルが生成されます。.HEICには通常通りカラー画像が、gravity.txtには重力加速度(XYZ)が、depth.TIFには横回転した32ビットモノクロのDepthデータが入っています。
感想
これだけだとまだ精度高いかどうか判断つかない感じですね・・・もうちょっと時間を取って試してみたいと思います。