初心者がMac+iPhoneでフォトグラメトリとAR ~Object Captureで3Dモデルを作る方法~
これはMac初心者がM1 MacBookAirを使ってフォトグラメトリ+ARをやる話です。やり方の概要は下記の記事の通りなのだけど、Mac初心者が初めてXcodeをインストールして使うと、色々なところでつまづく(つまづいた)ので、そういうストレスがハードルにならないようにこの記事に残しておきます。
(2023年11月27日追記) iOS17で公式アプリが発表され、2023年11月時点ではReality Composerのアプリから使えるようになっていました。
Macでフォトグラメトリ
2021年にMacでフォトグラメトリが出来るようになったという記事が出ていた。フォトグラメトリは写真をもとにして3Dモデルを作る技術。これまでもWindows向けには数万から数十万するソフトがあるがGPUなしでは作業できないようなものばかりだった。それがM1チップを搭載したMacBookAirでも出来るというのでやってみることにした。
https://note.bassdrum.org/n/n210b99bc573a
https://qiita.com/JunNonaka/items/d5a270b8c48f92c3bd37
Apple公式 https://developer.apple.com/news/?id=36zqi3km
初心者つまづきポイント
Mac+Xcode初心者としてつまづいたポイントが3つあった。この辺りを詳しく書きながら、この記事を読んだ人がARモデルを簡単に作れることを目指して書きます。
Xcodeで作ったアプリをiPhoneで使う方法
iPhoneで撮った写真をMacに移す方法
Xcodeのコマンドラインアプリを実行する方法
iPhone用のフォトグラメトリ専用写真撮影アプリ"CaptureSample"の作成
自分でiPhoneアプリを作る必要があります。
Xcode(開発ツール)のインストール
MacOSを最新版にアップデート(macOS Monterey バージョン12.1)
Xcodeをダウンロードしてインストール(13.2.1を使いました)
ダウンロードはこちらから(App Store経由です)
https://developer.apple.com/jp/xcode/
ベータ版や過去のものはこちらから
https://developer.apple.com/download/all/
Apple Developperに登録
アプリを作成するときに必要になるのであらかじめ登録しておきます
https://developer.apple.com/jp/ の「アカウント(英語)」をクリックしてAppleIDでログインできます
iPhoneアプリ用プログラムのダウンロード
iPhone用アプリ"CaptureSample"を作るためのプログラムをダウンロード
Taking Pictures for 3D Object Capture を下記サイトからダウンロード
https://developer.apple.com/documentation/realitykit/taking_pictures_for_3d_object_capture
ダウンロードしたファイルを開く
Xcodeを起動
CaptureSample.xcodeprojをダブルクリック
すると、Xcodeが起動します
Xcodeでアプリを作成する
Teamを設定する
左のCaptureSampleを選択し、右の画面で「Signing & Capabilities」を選択。 Signingの項目にあるTeam(初期値はNone)を自分のAppleIDに変更する
iPhoneをMacにつなぐ
Xcodeの上のCaptureSample > iOS Deviceのところにある自分のiPhoneの名前を選択
三角のボタンを押してアプリを作成(Build)する
Could not launch "CaptureSample"というメッセージが出るけれど、これはiPhone側の設定の問題なのでOKを押す。
iPhoneで"CaptureSample"アプリを「信頼」する
Buildが成功するとiPhoneの画面に"CaptureSample"というアプリができ、「信頼されていないデベロッパ」という警告が出るので[キャンセル]をタップ
iPhone側でアプリを信頼する
「設定」>「一般」>「VPNとデバイス管理」>「デベロッパAPP」にある自分のAppleIDを開くと、「"Apple Development: 自分のAppleID()"のAppをこのiPhoneで信頼」と出るので[信頼]を選択する
フォトグラメトリ用写真の撮影とMacへの取り込み
"CaptureSample"アプリを起動して写真を撮る
アプリを起動する
アプリを起動すると"CaptureSapmle"がカメラへのアクセスを求めていますと出るので[OK]を選択する写真を撮る
標準のカメラからするとかなりズームされた状態になっており、手ブレも起こりやすいので注意しながら対象の物を360度撮影する。
左上のiマークをタップすると推奨枚数が出る。20枚以上200枚以下くらい。
iPhoneからMacに写真を移す
iPhoneをMacに繋いで、Finder>自分のiPhone>ファイル>CaptureSample>Captures とたどって、Capturesのフォルダごとドラッグ&ドロップ。これでアプリで撮影した写真がコピーできる(サブフォルダは選べない)※ 今回は「書類」フォルダに保存
保存したフォルダを見ると、写真撮影日時の名称のフォルダの中に、写真1枚につき3つのファイルがあることがわかる。TIFは写真の奥行き、TXTは写真撮影時のカメラの方向、HEICは写真ファイル。普通のフォトグラメトリは写真ファイルしか扱わないのでここがiPhoneのセンサー情報も含めて高度な3Dファイルを得られるメリットなのだと思う。
Macでフォトグラメトリを実行する
Xcodeに含まれているObject Captureという機能を使うためのプログラムがAppleで公開されているのでそれを使う
フォトグラメトリ用のプログラムをダウンロード
Creating a Photogrammetry Command-Line Appをダウンロード
ダウンロードはこちら
https://developer.apple.com/documentation/realitykit/creating_a_photogrammetry_command-line_app
ダウンロードしたファイルを開く
Xcodeを起動
HelloPhotogrammetry.xcodeprojをダブルクリック
Xcodeでビルド先のフォルダを変更する
http://asahina-laboratory.blogspot.com/2016/04/xcode_16.html のサイトにある通り、Xcode > Preferences > Locations > Derived DataをDefaultからRelativeに変更する(変更しなくても良いけど、変更しないとDefaultの場所が分かりにくい)。もし変更し忘れてビルドした場合は、Finderを開いて、「移動」>「フォルダへ移動」>/Users/(ユーザ名)/Library/Developer/Xcode/DerivedData で探すことができます。
フォトグラメトリ用のアプリを作成する
Xcodeの上部がHelloPhotogrammetry>My Mac となっていることを確認してBuildする
これで、ダウンロードしたフォルダの中に「DerivedData」というフォルダができて、その中の「Debug」フォルダに「HelloPhotogrammetry」というプログラムが出来る
フォトグラメトリ用のプログラムを実行して3Dモデルを作る
標準では、usdzファイルが作成される。これはiPhoneでARモデルを閲覧する用のファイル形式。
Debugフォルダを開く
フォルダパスはCreatingAPhotogrammetryCommandLineApp/DerivedData/HelloPhotogrammetry/Build/Products/Debug
Debugフォルダでターミナルを開く
ターミナルというのはプログラムを実行する命令文を書いて実行させるもの
写真を保存したフォルダパスをコピーする
フォルダを選んだ状態でcommand + option + Cでパスがコピーできる
プログラムを実行する
ターミナルに
「./HelloPhotogrammetry "写真を保存したフォルダパス" 保存するファイル名.usdz」を入力
(例 ./HelloPhotogrammetry "/Users/ユーザ名/Documents/Captures/Jan 29, 2022 at 11:17:52 PM" hibach.usdz)
※注意点:フォルダパスの前後の"を忘れるとエラーが出ます。"が全角だとdquoteという文字が出て先に進まないので、いったんターミナルを閉じてやり直しましょう。Enterを押してしばらく待つ
何も表示されないので不安になりますが、待ちましょう。(M1 MacBookAirでは160枚で10分程度待ちました)できたファイルを確認する
Debugフォルダにできています。
ダブルクリックするとMac上で確認することができます。
3DモデルをiPhoneのARで確認する
iPhoneをMacに接続する
iPhoneにusdzファイルをコピーする
iPhoneからファイルを取り出したときの逆手順で、usdzファイルをCaptureSampleにドラッグ&ドロップします。(iCloudを使った方が分かりやすいかもしれません)
コピーしたファイルをiPhoneで開く
iPhoneの「ファイル」アプリの「このiPhone内」>「CaptureSample」の中に入っているので、ファイルをクリック
すると、自動的にARアプリが起動して先ほど撮影したものがそこに現れます!
まとめ
Appleのフォトグラメトリはすごい。
サイズが再現できている
背景が自動的に切り抜かれる(一長一短ですが)
処理が早い
これが無料
これで皆さんのフォトグラメトリ+AR体験が楽しくなりますように。