AR Tracked Object Manager コンポーネント
ARTrackedObjectManager コンポーネントは、トラッカブルマネージャー の一種です。
AR Tracked Object Manager コンポーネント
Tracked Object Manager は、環境内で検出された各オブジェクトのゲームオブジェクトを作成します。現実世界のオブジェクトを検出するには、そのオブジェクトをスキャンして参照オブジェクトを作成しておく必要があります。その後、その参照オブジェクトを Tracked Object Manager の参照オブジェクトライブラリに追加します。
Note
- 現時点では、Unity でサポートされ、オブジェクトトラッキングを実装しているプロバイダープラグインは、Apple ARKit XR Plug-in だけです。
- Apple Developer ウェブサイトの Scanning and Detecting 3D Objects ページでは、このようなスキャンを生成するために iOS デバイスで使用できるアプリケーションをダウンロードできます。これはサードパーティ製のアプリケーションであり、Unity はその開発に関与していないことに注意してください。
用語集
用語 | 説明 |
---|---|
Reference object (参照オブジェクト) | 参照オブジェクトとは、以前にスキャンされ、参照オブジェクトライブラリに保存されているオブジェクトです。オブジェクトトラッキングサブシステムにより、環境内のオブジェクトのインスタンスが検出され、追跡されます。 |
Reference object library (参照オブジェクトライブラリ) | 参照オブジェクトライブラリとは、参照オブジェクトのコレクションが含まれているアセットです。 |
参照オブジェクトライブラリの作成
標準的なオブジェクトトラッキングワークフローでは、エディターで参照オブジェクトライブラリを作成し、ライブラリに参照オブジェクトを投入します。オブジェクトトラッキングをサポートするプロジェクト内のプロバイダープラグインごとに、プロバイダー固有のエントリーを追加する必要があります。
参照オブジェクトライブラリを作成するには、Project ウィンドウ内で右クリックし、Assets > Create > XR > Reference Object Library の順に選択します。
これにより、プロジェクトに新しい ReferenceObjectLibrary
アセットが作成されます。参照オブジェクトをライブラリに追加するには、このアセットを選択し、Add Reference Object をクリックします。
参照オブジェクトライブラリ
各参照オブジェクトは、Name の後にプロバイダー固有のエントリーのリストが続きます。これらのエントリーは、オブジェクト検出がデバイス上で機能するために必要となります。上記の例では、各オブジェクトに ARKit プロバイダーのエントリーが 1 つあります。
参照オブジェクトエントリーのアセット形式は、プロバイダーの実装によって異なります。Apple ARKit XR Plug-in では、Apple によって定義された .arobject
形式を使用します。詳細については、Apple Developer ウェブサイトの Scanning and Detecting 3D Objects ページを参照してください。
ランタイムにおける参照オブジェクトライブラリの使用
参照オブジェクトライブラリを使用する最も簡単な方法は、Inspector を使用して、Tracked Object Manager の Reference Library フィールドへの参照を保存することです。ただし、以下に示すように、ランタイムに新しい参照オブジェクトライブラリを作成して使用することもできます。
XRReferenceObjectLibrary myLibrary = ScriptableObject.CreateInstance(typeof(XRReferenceObjectLibrary));
GetComponent<ARTrackedObjectManager>().referenceLibrary = myLibrary;
プロジェクトで ARTrackedObjectManager を使用せずにオブジェクトトラッキングサブシステムを使用する場合は、サブシステムの library
プロパティを介して参照オブジェクトライブラリを直接設定することもできます。この場合、サブシステムを開始する前に、参照ライブラリをサブシステムの library
プロパティに必ず割り当ててください。
ランタイムにおける参照オブジェクトの追加
ランタイムに新しい参照オブジェクトを参照オブジェクトライブラリに追加するには、以下の例に示す手順に従います。
// XRReferenceObject を作成します
var referenceObject = new XRReferenceObject("My reference object");
// プロバイダー固有のエントリーデータを参照オブジェクトに追加します
referenceObject.AddEntry(arobject);
// 参照オブジェクトをマネージャーの参照オブジェクトライブラリに追加します
GetComponent<ARTrackedObjectManager>().referenceLibrary.Add(referenceObject);
ランタイムにおけるマネージャーの作成
Unity では、ランタイムにコンポーネントをアクティブなゲームオブジェクトに追加すると、そのコンポーネントの OnEnable
メソッドが即座に呼び出されます。ただし、ARTrackedObjectManager
には、null 以外の参照オブジェクトライブラリが必要です。参照オブジェクトライブラリが null の場合、ARTrackedObjectManager を有効にしても自動的に無効になります。
ランタイムに ARTrackedObjectManager を追加するには、参照オブジェクトライブラリを設定して再度有効にします。
var manager = gameObject.AddComponent<ARTrackedObjectManager>();
manager.referenceLibrary = myLibrary;
manager.enabled = true;
Tracked Object プレハブ
このプレハブは、参照オブジェクトライブラリのオブジェクトが検出されるたびにインスタンス化されます。マネージャーによって、インスタンス化されたゲームオブジェクトに ARTrackedObject
コンポーネントが確実に含まれます。ARTrackedObject.referenceObject
プロパティを使用して、ARTrackedObject
の検出に使用された参照オブジェクトを取得できます。
* Apple および ARKit は、アメリカ合衆国およびその他の国や地域で登録されている Apple Inc. の商標です。