見出し画像

初心者が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モデルを簡単に作れることを目指して書きます。

  1. Xcodeで作ったアプリをiPhoneで使う方法

  2. iPhoneで撮った写真をMacに移す方法

  3. Xcodeのコマンドラインアプリを実行する方法

iPhone用のフォトグラメトリ専用写真撮影アプリ"CaptureSample"の作成

自分でiPhoneアプリを作る必要があります。

Xcode(開発ツール)のインストール

  • MacOSを最新版にアップデート(macOS Monterey バージョン12.1)

Apple Developperに登録

 アプリを作成するときに必要になるのであらかじめ登録しておきます
https://developer.apple.com/jp/ の「アカウント(英語)」をクリックしてAppleIDでログインできます

iPhoneアプリ用プログラムのダウンロード

iPhone用アプリ"CaptureSample"を作るためのプログラムをダウンロード

  • ダウンロードしたファイルを開く

Xcodeを起動

  • CaptureSample.xcodeprojをダブルクリック

Taking Pictures for 3D Object Capture

すると、Xcodeが起動します

XCode

Xcodeでアプリを作成する

  • Teamを設定する
    左のCaptureSampleを選択し、右の画面で「Signing & Capabilities」を選択。 Signingの項目にあるTeam(初期値はNone)を自分のAppleIDに変更する

CaptureSampleのSigning & CapabilitiesでTeamを設定
  • iPhoneをMacにつなぐ

  • Xcodeの上のCaptureSample > iOS Deviceのところにある自分のiPhoneの名前を選択

自分のiPhoneを選ぶ
  • 三角のボタンを押してアプリを作成(Build)する
    Could not launch "CaptureSample"というメッセージが出るけれど、これはiPhone側の設定の問題なのでOKを押す。

Build

iPhoneで"CaptureSample"アプリを「信頼」する

  • Buildが成功するとiPhoneの画面に"CaptureSample"というアプリができ、「信頼されていないデベロッパ」という警告が出るので[キャンセル]をタップ

  • iPhone側でアプリを信頼する
    「設定」>「一般」>「VPNとデバイス管理」>「デベロッパAPP」にある自分のAppleIDを開くと、「"Apple Development: 自分のAppleID()"のAppをこのiPhoneで信頼」と出るので[信頼]を選択する

デベロッパAPPで自分のAppleIDが書かれたものを選択
自分のAppeIDのAppを信頼

フォトグラメトリ用写真の撮影とMacへの取り込み

"CaptureSample"アプリを起動して写真を撮る

  • アプリを起動する
    アプリを起動すると"CaptureSapmle"がカメラへのアクセスを求めていますと出るので[OK]を選択する

  • 写真を撮る
    標準のカメラからするとかなりズームされた状態になっており、手ブレも起こりやすいので注意しながら対象の物を360度撮影する。
    左上のiマークをタップすると推奨枚数が出る。20枚以上200枚以下くらい。

CaptureSapmle


iPhoneからMacに写真を移す

  • iPhoneをMacに繋いで、Finder>自分のiPhone>ファイル>CaptureSample>Captures とたどって、Capturesのフォルダごとドラッグ&ドロップ。これでアプリで撮影した写真がコピーできる(サブフォルダは選べない)※ 今回は「書類」フォルダに保存

iPhoneからMacにファイルを移す

保存したフォルダを見ると、写真撮影日時の名称のフォルダの中に、写真1枚につき3つのファイルがあることがわかる。TIFは写真の奥行き、TXTは写真撮影時のカメラの方向、HEICは写真ファイル。普通のフォトグラメトリは写真ファイルしか扱わないのでここがiPhoneのセンサー情報も含めて高度な3Dファイルを得られるメリットなのだと思う。

1枚の写真につき、深度と重力(方向)のデータが作成されている

Macでフォトグラメトリを実行する

Xcodeに含まれているObject Captureという機能を使うためのプログラムがAppleで公開されているのでそれを使う

フォトグラメトリ用のプログラムをダウンロード

  • ダウンロードしたファイルを開く

Xcodeを起動

  • HelloPhotogrammetry.xcodeprojをダブルクリック

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フォルダの場所
  • 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上で確認することができます。

usdzファイルとプレビュー
Perspectiveの左のボタンを押すと詳細が確認できる
苦手とされる金属部分もかなりの精度で再現

3DモデルをiPhoneのARで確認する

  • iPhoneをMacに接続する

  • iPhoneにusdzファイルをコピーする
    iPhoneからファイルを取り出したときの逆手順で、usdzファイルをCaptureSampleにドラッグ&ドロップします。(iCloudを使った方が分かりやすいかもしれません)

iPhoneにコピー
  • コピーしたファイルをiPhoneで開く

  • iPhoneの「ファイル」アプリの「このiPhone内」>「CaptureSample」の中に入っているので、ファイルをクリック

iPhoneでusdzファイルを開く

すると、自動的にARアプリが起動して先ほど撮影したものがそこに現れます!

左がAR、右が本物

まとめ

Appleのフォトグラメトリはすごい。

  • サイズが再現できている

  • 背景が自動的に切り抜かれる(一長一短ですが)

  • 処理が早い

  • これが無料

これで皆さんのフォトグラメトリ+AR体験が楽しくなりますように。

この記事が参加している募集

やってみた

この記事が気に入ったらサポートをしてみませんか?