VisionOS2.0のObjectTracking試してみた
WWDC2024が6/10から5日間開催され、様々なアップデートが発表されました。VisionOSもバージョン2.0が発表され、全て追えないほどのビデオとサンプル、ドキュメントが公開されました。
その中で、物体をトラッキングするObjectTrackingの機能のサンプルが公開されていたため、こちらを試してみました。今回試したObjectTrackingについてのAppleからの詳しい内容は下のリンクを参照ください。
https://developer.apple.com/videos/play/wwdc2024/10101/
概要とワークフロー
ObjectTrackingの概要としては、画像のように現実世界のオブジェクトの位置や角度をトラッキングする機能です。以下画像では、現実空間にある三つのオブジェクトをトラッキングして四角い枠を表示しています。
VisionProでObjectTrackingを行うまでの具体的なワークフローとしては、以下の画像のように
ステップ1: 3Dモデルをusdz形式で作成する
ステップ2: CreateMLというDeveloper Toolでリファレンスファイルを生成する
ステップ3: リファレンスファイルをXcode上で参照してアプリをビルドする
という三つのステップで実現しています。
ObjectTrackingを試すための環境
ObjectTrackingのサンプルには、最初からApple純正のMagic Keyboardをトラッキングするアセットが入っていますが、今回は自身で作成した3Dモデルを使ってトラッキングさせるまでを試すことにしました。
そのためには、いくつか環境を整える必要があります。
VisionOSのバージョン
サンプルを試すにはVisionOSを2.0にアップデートする必要があります。2024年6/21現在、VisionOS2.0はbeta版が存在するので、こちらにアップデートすれば利用することが可能です。
Xcodeのバージョン
また、VisionOS2.0をビルドするためにはXcode16.0betaにする必要があります。Xcode16.0betaを入れるには、macOSを14.5以上にする必要があるため、インストールします。
macOS バージョン
ステップ2のリファレンスファイルを作成するのにCreateMLのSpatialというテンプレートを利用するため、このタイプを利用するにはmacOS15以上が必要になります。macOS15は現在beta版が出ているので、そちらにアップデートすると利用することが可能です。
全ての作業を一台のMacで行う場合はmacOS15.0beta,Xcode16.0beta,VisionOS2.0の環境を整える必要があります。しかし、リファレンスファイルの作成以外の開発はmacOS14.5でも可能です。なので、macOS15.0で生成したリファレンスファイルをmacOS14.5の環境で開発するという形を取ることもできます。今回もmacOS15.0で作成したリファレンスファイルを他のmacOSバージョンで利用しています。
3Dモデルを用意する
3Dモデルは、フォトリアルなusdz形式のモデルである必要があり、動画内ではAppleのObjectCaptureを利用して3Dモデルを作成することが例に挙がっていました。ストアに存在する既存アプリでも作成可能ですが、今回はApple公式のサンプルをダウンロードしてiPhoneでキャプチャーしました。(公式サンプルはこちら)
今回作成したのは、手元にたまたまあった某コーヒーストアのVentiサイズです。ObjectCaptureのサンプルは親切なガイドがついているため、ガイドに沿ってキャプチャーすれば問題なく取得できます。
CreateMLにusdzファイルを入れて機械学習させる
次に、Create MLを利用してリファレンスファイルを作成していきます。XcodeのDeveloperToolsからCreateMLを選択し、新規でプロジェクトを作成します。上述しましたが、macOS15で利用可能になる、Spatialというテンプレートを利用して機械学習します。
機械学習には、モデルによっては結構な時間がかかりますが学習開始時にViewing Angleを選択でき、それによっては学習時間を削減できるようです。今回は、一番時間のかかる全面を学習させるAll Anglesを利用しました。学習が完了したら、.referenceobjectというファイルが出力されるので、これをサンプルに入れていきます。
ObjectTrackingのサンプルを動かす
ObjectTrackingのサンプルをダウンロードすると、『ReferenceObject』というディレクトリがあります。この中に、Apple純正のMagic Keyboardのリファレンスファイルがあります。今回のサンプルではどこに作成したリファレンスファイルを置いても問題ないですが、このディレクトリに先ほど出力されたリファレンスファイルを入れた方が整理上良いため、そこに入れます。
Xcodeはディレトリに入れるだけでは、認識してくれないのでXcodeのサイドバーに該当のオブジェクトをドラッグしてXcode側にリファレンスファイルを読み込ませます。
今回のサンプルは、勝手にプロジェクト内の.referenceobjectファイルを探し出して利用してくれるため、このままビルドしてVision Proにインストールすると動かすことができます。
アプリを立ち上げ、先ほど入れた3Dモデルと同じ物体を視界にいれます。物体がトラッキングされ、黄色いメッシュが物体と重なるように表示されていれば成功です!
まとめ
ObjectTrackingのサンプルを試してみました。環境構築や機械学習の時間はかかりますが、サンプルにファイルを入れるだけで体験ができるため、ぜひ皆さんも試してみてはいかがでしょうか。なお、WWDCで発表されたエンタープライズAPIの中にも、ObjectTrackingのパラメータの調整という機能が追加されることが明示されています(下記画像)。今回試したサンプルよりも、より精度の高いものも作成できる可能性があるので楽しみですね。
#VisionOS2 .0