なんと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で開く。
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
エンターを押し実行してもしばらく反応がなく不安になりますが、
そのまましばらく待つと、完成です!
出来た
detail
をfull
で生成したもの。細部まで再現できている。
「オブジェクト」キャプチャーですが、空間の生成もいける。
小江戸VRのフォトグラメトリ用写真からも生成してみた。
下のモデルは実際は周りに松が植わっているが、周囲は自動でカットされる様子。
ガチな空間フォトグラメトリを行う場合は処理時間が結構かかるので注意。
24Mpxの写真1000枚をM1 MacBook Airで処理した際は9時間かかった。
参考記事
・AppleのPhotogrammetry(Object Capture)を試す
・[Object Capture] macOS Montereyでフォトグラメトリしてみた #WWDC21
・Object Captureのサンプルを試す #WWDC21