ObjectCaptureの使い方

なんとAppleから Object Capture というフォトグラメトリが可能なAPIが発表されました。
写真を読み込ませるとUSDZ形式のモデルが生成されます。
写真枚数制限もなく利用することが出来ます。

詳しくはこちら

というわけで、Appleが公開しているサンプルの使用手順を以下にまとめました。
コンソールを使ったコマンドラインによるものですが、コマンドラインを使ったこと無い人でも試せるよう詳しめに書いてみました。

環境

  • macOS:12.0(Monteley) 以上
  • Xcode:13.0 以上

手順

ここからサンプルApp「Creating a Photogrammetry Command-Line App」をDLする。

ダウンロードしたPhotogrammetry Command-Line Appのzipを解凍する。

HelloPhotogrammetry.xcodeprojをXcodeで開く。

Appleのアカウントを指定する。

ビルドする。
(左上の再生マークを押す)

「Cloudn’t get the list of tags:」エラーが出る場合

fatal: bad numeric config value ‘null’ for ‘tag.forcesignannotated’: invalid unit

対処法:
別バージョンのXcodeが入っている場合は削除する
参考記事:https://developer.apple.com/forums/thread/682556

ビルドが完了するとProductsにHelloPhotogrammetryが生成されている。

デフォルト設定の場合、Finder上ではここに生成されます。

コマンドラインで生成

あとはコマンドを実行で生成出来ます。

OVERVIEW: Reconstructs 3D USDZ model from a folder of images.

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.

コマンド例

デスクトップに「ObjectCapture」フォルダを作成し、
その直下に「HelloPhotogrammetry」ファイル、
写真格納用の「Images」フォルダ、
生成後のモデルを入れる「Models」フォルダを用意し、
フルの精度で生成する場合はー

以下のようなコマンドになります。

/Users/ryo/Desktop/ObjectCapture/HelloPhotogrammetry /Users/ryo/Desktop/ObjectCapture/Images /Users/ryo/Desktop/ObjectCapture/Models/Model.usdz -d full

エンターを押し実行してもしばらく反応がなく不安になりますが、
そのまましばらく待つと、完成です!

出来た

detailfullで生成したもの。細部まで再現できている。

「オブジェクト」キャプチャーですが、空間の生成もいける。
小江戸VRのフォトグラメトリ用写真からも生成してみた。

下のモデルは実際は周りに松が植わっているが、周囲は自動でカットされる様子。

ガチな空間フォトグラメトリを行う場合は処理時間が結構かかるので注意。
24Mpxの写真1000枚をM1 MacBook Airで処理した際は9時間かかった。

参考記事

AppleのPhotogrammetry(Object Capture)を試す
[Object Capture] macOS Montereyでフォトグラメトリしてみた #WWDC21
Object Captureのサンプルを試す #WWDC21