Unity ARKitでのobject trackingがうまくできなくて悩んでいたのですが
ほんのちょっとしたことでうまくできたのでとりあえず、object trackingまでの一連の流れを記事にします。
目標
- Unity ARKitでのobject trackingがうまくできるようになる
 
開発環境
- macOS Catalina ver: 10.15.2
 - Unity 2019.2.10f1
 - iPhone X iOS 13.2.3
 
結論
先に結論だけ載せておきます。言っていることがわからなければ、記事下のObject Trackingまでの道のりを見ればわかるかと。
注意点はARKit scannerでオブジェクトをスキャンした時と同じ場所(背景)でObject Trackingをするということだけです。
なのでARKit scannerを使ってスキャンする際は、どこでスキャンするかまで考えておいた方が良いですね。
この例だと、同じ木の床の上にオブジェクトを置いた時ならうまくトラッキングできるのですが、他の何か(ベット、カーペットなど)の上だとうまく反応してくれません。
Object Trackingまでの道のり
Object Trackingまでの道のりを以下に載せておきます。
パッケージインストール
Package Managerが諸々必要なものをインストールします。現状ではObject Trackingはpreview版でのみ使えます。
- AR Foundation: preview.1 - 3.1.0
 - AR Subsystems: preview.1 - 3.1.0
 - ARKit Face Tracking: preview.1 - 3.1.0
 - ARKit XR Plugin: preview1. - 3.1.0
 
Project Settings
アプリを動かすのに必要な設定をします。
- [Other settings] -> [Configuration] -> [Requires ARKit Support]にチェックを入れる
 - [Other settings] -> [Configuration] -> [Target minimum iOS Version]を11.0にする
 - [Other settings] -> [Configuration] -> [Architecture]をARM64にする
 
Add objects
[XR] -> AR Session OriginとAR Sessionを作成
MainCameraを消して、AR Session Originの子AR CameraをMainCameraにセットする
Object Tracking
object Trackingをするには、ARKit scannerなるアプリで3Dオブジェクトの特徴量データをとる必要があります。ARKit scannerの使い方はこちらのブログを参照してください。ここでは、PCにスキャンしたデータを送るまで終わったと仮定して話を進めていきます。
まずスキャンしたデータをインポートします。その次にReferenceObjectLibraryを作成します。

作成したReferencebjectLibraryのAdd Reference Objectでスキャンしたデータをセットします。名前も一応データ名と同じにしておきます。
AR Session OriginオブジェクトにAR Tracked Object Managerというスクリプトをアタッチします。
そして先ほど作成したReferenceObjectLibraryと適当にサイズ0.1のcube prefabを作成してそれぞれ割り当てます。
あとはビルドすれば完成です。
最後に
ARでobject trackingができるようになると色々と妄想が広がりますよね!