株式会社カシカ、代表の奥です。 今日はAppleの開発者向けカンファレンスWWDCで発表したObject Captureについての話をします。 Object Captureは時期macOS monterey(モントレー)の新APIです。

WWDCの紹介では、iPhoneで写真を撮って、macに入れると、物体の3Dデータが 数分で作成されるとのことでした。 内部のアルゴリズムはフォトグラメトリーといわれる、複数枚の写真データを使って 3Dデータを構築するアルゴリズムが使われているようです。

以下がWWDCの発表動画になります。 https://youtu.be/0TD96VTf0Xs?t=5714

iPhone/iPadとmacがあれば、誰でも簡単に3Dモデルをつくれてしまうというのは カタチスペースの方向性と合致しているので、これは見逃せない! ということで、早速試してみました!

目次

生成物

Object Captureで生成したモデルをカタチスペースでARで見えるようにしました。 iOS/Android(ARCore対応機種のみ)対応です。

動作環境

macOS montereyのインストールが必要です。 montereyはベータ版であり、ベータ版OSのインストールはApple Developer programに登録してる必要があります。 これには年会費99米ドルが必要です。

https://developer.apple.com/jp/support/compare-memberships/

登録している人は、サインインして、下記からダウンロードできます。

https://developer.apple.com/macos/

さらに、Object Captureを動作させる注意点として、

  • M1 mac
  • Intel CPU with AMD 4GB以上

のmacである必要があります。

つまり、AMD GPUを積んでいないIntel mac(Intel Graphicsのみ)のMacではインストール しても動作しないので、気をつけてください。(読んでなくてインストールしてしまったマン)

今回、私はMacBook16インチ(2019)のAMDの4GBのGPUで検証しました。 M1はGPUメモリとCPUメモリが共有しているアーキテクチャなので、8GB/16GBあるモデルではGPUメモリが4GB以上つかえるので どのモデルでもできるということでしょうか。この辺りM1で検証された方がいたら教えてください。

Object Captureのサンプルプログラム

公式が配布しているObject Captureのサンプルプログラムは以下からダウンロードできます。 https://developer.apple.com/documentation/realitykit/creating_a_photogrammetry_command-line_app

ダウンロードして実行してみましょう。 アプリの使い方は、

USAGE: hello-photogrammetry <input-folder> <output-filename> [--detail <detail>] [--sample-overlap <sample-overlap>] [--sample-ordering <sample-ordering>] [--feature-sensitivity <feature-sensitivity>]
ARGUMENTS:
<input-folder>          The local input file folder of images. 
<output-filename>       Full path to the USDZ output file. 
OPTIONS:
-d, --detail <detail>   detail {preview, reduced, medium, full, raw}  Detail
                        of output model in terms of mesh size and texture
                        size . (default: nil)
-l, --sample-overlap <sample-overlap>
                        sampleOverlap {normal, low}  It should be set to
                        `low` if there is low overlap between images captured
                        nearby in space. 
-o, --sample-ordering <sample-ordering>
                        sampleOrdering {unordered, sequential}  Setting to
                        sequential may speed up computation if images are
                        captured in a spatially sequential pattern. 
-f, --feature-sensitivity <feature-sensitivity>
                        featureSensitivity {normal, high}  Set to high if the
                        scanned object does not contain a lot of discernible
                        structures, edges or textures. 
-h, --help              Show help information.

となっており、

./HelloPhotogrammetry inputdir/ out.usdz

で実行できます。 USDZ形式で出力されます。 公式情報ではUSDC/OBJ形式で出力できるそうですが、現時点では出力ファイルの拡張子を変えるだけではダメなようです。

iPhoneで撮った写真をinputdirにいれて実行してみましょう。

ちなみに、動作環境でない人が、動かそうとすると以下のエラーがでます。

Error creating session: cantCreateSession(“Native session create failed: CPGReturn(rawValue: -11)“)

実行結果

inputの写真枚数によって、3Dモデルの生成時間はモデルによって変化します。

--detail [MODE]

でクオリティを設定できるようでいくつか試したところ、

早い順から

  • preview
  • raw
  • medium/reduced ほぼ同じ
  • full(最後クラッシュした)

という結果でした。

previewが一番早く、rawはテクスチャが最低限で、ポリゴンデータが細かい状態でした。 medium/reduced/fullはrawの状態からテクスチャを生成しているものと思われます。 fullは100%までは行くのですが、なにが悪いのか、100%のあとクラッシュしてファイルが生成されませんでした。

previewで生成した結果をカタチスペースで表示してみたのが 生成物 になります。 是非置いてみるボタンを押して、ARでみてみてください。 たった数分でかなり品質が高い3Dモデルが出力されていることがわかります。

表示されているオブジェクトは、Object Captureプログラムの出力そのものであり、 オブジェクト以外のゴミ除去など一切していません。ただプログラムにいれて実行しただけで このクオリティが出てくることはかなり驚きでしょう。(撮影オブジェクトのマスキングの機能があるようです)

まとめ

フォトグラメトリー技術は従来からありましたが、RealityCaptureなどが有名ですが、それなりのライセンスフィーを必要としていましたが最新のmacOSだと、なんと無料で使えてしまうというのはすごいですね。

しかも、オブジェクトのセグメンテーションもされており、ゴミ除去なども必要ありませんでした。

有名フォトグラメトリーソフトにも負けないか、それ以上のクオリティだとおもいます。

より詳しいAPIの情報を知りたい方は後述の参考サイトを参照するとよいでしょう。 かなり便利なAPIであることが分かったので、今後カタチスペースではObject Captureの機能に対応していきたいと考えています。

カシカでは、スマートフォンだけでオブジェクトの3Dデータが作れるアプリ”カタチスペース”を配信しています。 (TrueDepthセンサーを持つiPhone/LiDAR対応のiPhone/iPadに対応しています。)

カタチスペースアプリ

皆さん、是非活用してみてくださいね。

スマートフォンでの3Dデータ作成に興味のある企業様は以下からお問い合わせください。 https://kashika.co.jp/contact.html

参考サイト