Meta Questで空間アンカーを使う

2024/05/23に公開

quest-spatial-anchor.png

1. 概要

Meta社がMeta Quest向けに提供しているSpatial Anchor(空間アンカー)およびShared Spatial Anchor(共有空間アンカー)を使用する方法を説明します。
Unity向けにMeta社が提供しているSDKの機能であるBuilding Blocksを利用することで、空間アンカーをノーコードで使用することができます。
共有空間アンカーはコア機能のAPIが提供されています。使用するにはアプリケーションへの組み込みは必要ですが、公式サンプルが提供されており、参考にすることができます。

この記事では、Building Blocksを利用して空間アンカーを使用する方法と、共有空間アンカーの公式サンプルを動作させる方法を説明します。
共有空間アンカーをアプリケーションに組み込む方法については、別記事として公開予定です。

2. はじめに

空間アンカーを説明する前に、空間アンカーを使用する背景としてMR(複合現実)について説明します。

2.1. MRとは

MRは、現実世界と仮想的な要素(コンテンツ)を融合させる技術です。
現実世界とその上に重なったコンテンツの両方を見ながら、コンテンツを操作することができます。

2.2. 空間アンカーとは

空間アンカーは、現実世界の特定の場所にコンテンツを固定するための技術です。
コンテンツを現実世界の特定の位置や向きに固定することで、コンテンツが現実世界に存在しているように見せることができます。
アプリケーションを終了しても、再度起動すると同じ場所にコンテンツを表示することができます。

3. 空間アンカーを使ってみる

Building Blocksを利用して空間アンカーを使用する方法を説明します。

3.1. Building Blocksで提供される機能

空間アンカーの作成、保存、読み込み、消去の機能がコントローラーベースで提供されます。

3.2. 環境構築

空間アンカーを利用するためには、以下のSDKをインストールする必要があります。

  • Meta XR Core SDK

今回は、V64を利用します。

3.3. シーンの作成

3.3.1. 空間アンカーのプロトタイプシーンの作成

Building Blocksで「Sample Spatial Anchor Controller」を選択することで、空間アンカーのプロトタイプシーンのベースを作成できます。

メニュー Hierarchy
buildingblocks01.png buildingblocks02.png

3.3.2. コントローラーのトラッキングとパススルーの設定

3.3.1で設定されるコンポーネントには、コントローラーのトラッキングが含まれていません。
また、パススルーも含まれていないため、現実世界が見えません。
そのため、Building Blocksの「Controller Tracking」と「Passthrough」を追加します。

メニュー Hierarchy
buildingblocks03.png buildingblocks04.png
buildingblocks05.png buildingblocks06.png

3.4. シーンの動作確認

3.4.1. 仕様

[BuildingBlock] Controller Buttons MapperオブジェクトのController Buttons Mapperコンポーネントで以下のボタンが割り当てられています。

  • Aボタン : 空間アンカーの作成・保存
  • Bボタン : 空間アンカーの読み込み
  • 左アナログスティック(クリック) : 空間アンカーの消去
    buildingblocks07.png

3.4.2. 動作確認

パススルーで現実空間が確認でき、右手のコントローラーに空間アンカーオブジェクトを配置するためのガイドオブジェクトが表示されていることが確認できます。
空間アンカーを作成した後、アプリを一旦終了し、再度起動して作成した場所に読み込みができるか、消去できるかなど試してください。
https://youtube.com/shorts/KWOIDSzPKNY?feature=share

4. 共有空間アンカーを使ってみる

共有空間アンカーを使用するには、事前にいくつかの準備が必要です。
今回は準備する内容と実装方法の一例として、公式サンプルが動作するまでの手順を紹介します。
Building Blocksを利用して共有空間アンカーを使用する方法については、別記事として公開予定です。

4.1. 公式サンプル

公式サンプルは、以下で公開されています。
https://github.com/oculus-samples/Unity-SharedSpatialAnchors

公式では以下の環境に対応していることが確認されています

  • Unity 2021.3.32
  • Meta XR Core SDK V63
  • Meta XR Integration SDK V63
  • Meta XR Platform SDK V63

4.2. 事前準備

公式サンプルを動作させるためには、以下の準備が必要です。

4.2.1. Org Manager(団体マネージャ) からアプリケーションを作成

orgmanager01.png

4.2.2. App Manager(アプリマネージャ)からUser ID、 User Profile のプラットフォーム機能へのアクセスを許可

orgmanager03.png

4.2.4. App ManagerからApp IDを取得

orgmanager05.png

4.2.5. Photon PUN2のApp IDを取得

公式サンプルでは、他のユーザーとコンテンツを同期する仕組みとして、Photonを利用しています。
https://www.photonengine.com/pun
※ PhotonのID取得手順は割愛します。

4.2.6. Unityプロジェクトの設定

4.2.4.、4.2.5.で取得したApp IDをUnityプロジェクトに設定します
unity01.png
unity02.png

4.3. サンプルの動作確認

以下のドキュメントを参考にして、サンプルを動作させてみてください。
https://developer.oculus.com/documentation/unity/unity-ssa-sf/#features

5. まとめ

空間アンカーを使用することで、現実世界の特定の場所にコンテンツを固定することができます。
Building Blocksを利用して、空間アンカーのプロトタイプシーンをノーコードで構築できます。
共有空間アンカーを利用して複数人のユーザーで位置を共有するためには、Photonなどのネットワークサービスと組み合わせて利用する必要があります。

Building Blocksでは「Shared Spatial Anchor Core」を選択することで、空間アンカーを共有するためのコンポーネントが配置されます。
空間アンカーを共有する実装は、公式サンプルから確認することができます。

6. 参考情報

https://communityforums.atmeta.com/t5/Unity-VR-Development/Share-spatial-anchors-example-doesn-t-work/m-p/1030834

書いた人

ボブ

高野 剛

Unixシステムのインフラ構築・運用を経験後、ECサイトを中心としたWebアプリ開発、プロジェクトマネージメントに従事する。
ミニオン好きが高じて、USJに通い続ける中、XRアトラクションに魅了される。
自分が感動したことを他の人にも体験してもらいたいという思いから、転職を決意し、XRの学校での1年間の学びを経てMESONへ入社。

X

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Works

Discussion