ARFoundationのObjectTrackingを試す
そう言えば使ったことないなと思ったので試してみました。
全体の流れ
ARFoundationでObjectTrackingができるのはiOSに限られます。手順としては下記の通り。
①マーカーとなるオブジェクトをスキャン
②スキャンデータをマーカーとして登録
③ビルド
ObjectTrackingのドキュメントはこちらです。
スキャンアプリの作成
まずはスキャン用のアプリを作成する必要があります。こちらのDownloadからプロジェクトデータを入手して、そのままXcodeでビルドします。
スキャンする立体物で難航した
他の人の記事や動画だとぬいぐるみでやっていることが多いのですが、手元になくて難航しました。割とたくさんの特徴量がいるようです。
スキャン後にテストができるのですが、そこでモデルを出してみたところ、
敗北(全然検出できず):ルンバ、扇風機、Quest 3、Switch
勝利(すぐ検出):リモコン
という結果に。リモコンはこういう時ものすごく頼りになる。
スキャンデータはそのままAirDropで送信できます。便利。
スキャンの流れとしては、最初に範囲を決めて、その後に底以外の面をスキャンしていきます。範囲を決める際に大体の特徴量が可視化されるので、それでいけそうかどうかを判断しましょう。
スキャン後にはテストができますが、usdzがあれば検出して出すことが可能です。(LoadModelを押します。)あらかじめScanivereseとかで手頃なものをスキャンしておいて、usdzのファイルを用意しておくのが良いと思います。
Unityプロジェクト作成
今回使用したのは2022.3.38f1ですが、最近のバージョンであれば大体なんでもいける気がします。
プリセットにAR Mobileがあるので、これを使うと全部いりで作成してくれます。
使い方は画像認識と似ています。ReferenceObjectLibraryを追加して、マーカーとなるデータを登録します。
XR OriginにARTRacked Object Managerを追加して、ReferenceObjectLibraryと検出時に出すオブジェクトを追加します。
サンプルシーンをそのまま使ったので平面認識の名残がありますがご容赦ください。
椅子の腕おきの上に置いた状態でスキャンしたため、腕置きにないと検出してくれませんでした。範囲を慎重に選択しないと、地面もこみでスキャンされるのは良いのか悪いのか。
今回は以上です。