開発

シーンモデルの使用

更新日時: 2025/06/03
このページでは、シーンモデルを実装する方法、スペースの設定を通してシーンモデルをキャプチャする方法、そしてシーンアンカーが現実世界の環境データへのアクセスを提供する方法について学びを深めることができます。

シーンモデルとスペースの設定とは

シーンモデルは、現実空間を一元的かつ包括的に表現したものです。アプリによって簡単にインデックス化とクエリが可能な形状情報と意味情報を提供します。
スペースの設定は、キャプチャフローを通してユーザーにガイドを提供する、システム管理プロセスです。ユーザーによってアクセス許可を与えられたすべてのアプリがアクセスできる、単一のシーンモデルをキャプチャします。
シーンモデルスペースの設定に関する基本情報について詳しくは、シーンの概要をご覧ください。

シーンモデルとスペースの設定の仕組み

シーンモデルは多数のシーンアンカーで構成され、各シーンアンカーにはそのインテントを示す補足データが保持されています。アンカーフレームワークは、エンティティコンポーネントシステムのパターンと密接に連携しています。エンティティは一意の識別子を伴う保存可能なデータ型で、コンポーネントはデータを含み、エンティティ上に保存されます。システムは、必要なコンポーネントを持つすべてのエンティティ上で全体的に動作します。シーンモデルの文脈において、シーンアンカーエンティティであり、その上に任意の数のコンポーネントを保持することができます(セマンティック分類、2Dバウンディング平面、Locatableなど)。
スペースの設定(旧称はシーンのキャプチャ)は、シーンモデルをキャプチャするプロセスです。デバイス上で動作しているすべてのアプリが同じ環境データにアクセスできるよう、システムによって管理されています。これは、各アプリがそのライフサイクル中に環境をスキャンしなければならないパラダイムとは対照的です。
スペースの設定はユーザー主導のプロセスです。最初に、環境をスキャンしてスペースメッシュを取得し、スペース情報(床から天井の高さ、壁、オブジェクトなど)を抽出します。その後、ユーザーがエラーの修正(壁の位置合わせ)と欠落情報(ルームのオブジェクト)の追加を行い、プロセスを完了します。プロセスは、システムまたはアプリによって起動されます。
現在のところ、Linkを通じてスペースの設定を実行することはできません。Linkを経由してシーンモデルを読み込むには、その前にデバイス上でスペースの設定を実行する必要があります。
シーンモデルには機密性の高いユーザーデータが含まれているため、アプリがデータにアクセスできるかどうかはユーザーによって完全に制御されます。アプリは、アプリのマニフェストファイルを通して、アクセス許可を使用するインテントを宣言する必要があります。その後、実行時にアクセス許可をリクエストしてユーザーの承認を求めます。

シーンアンカーが保持できるコンポーネント

シーンアンカーがシーンモデルによって表現される環境を示すためには、コンポーネントが必要です。コンポーネントがデータを提供するには、コンポーネントが有効にされていなければなりません。したがってアプリは、シーンアンカーが特定のコンポーネントをサポートするかどうか、および、そのコンポーネントが有効になっているかどうかの両方をクエリする必要があります。
シーンアンカーは、スペースの設定プロセスを通してしか作成できないため、この種のアンカーをシステム管理型と呼びます。一方、空間アンカーユーザー管理型です。

空間アンカーとシーンアンカーの違い

シーンアンカーはスペースの設定時にMeta Horizon OSによって作成されますが、空間アンカーはアプリにより作成されます。シーンアンカーには、アンカーのポーズなど、シーン特有の他の情報が含まれています。最後の点として、アプリが作成できるのは空間アンカーのみですが、シーンアンカーにクエリをかけることはできます。
Locatableコンポーネントは、このアンカーがトラッキング可能であることをシステムに知らせます。有効化されると、アプリがアンカーのポーズ情報を継続的にクエリすることができます。これは、アンカーのライフサイクルにおけるトラッキングの精度の差によって変わります。
RoomLayoutコンポーネントは、天井を構成するアンカーへの参照を含みます。AnchorContainerコンポーネントは、子アンカーのリストへの参照を含みます。
Bounded2DコンポーネントとBounded3Dコンポーネントは、アンカーの寸法に関する情報を提供します。寸法をキャプチャするサイズプロパティ、および、2D/3Dバウンディングボックスの原点と、Locatableコンポーネントで定義されるアンカーの原点との差を示すオフセットプロパティを持ちます。TriangleMeshコンポーネントは、アンカー用にインデックス化された三角メッシュを提供します。Boundary2Dコンポーネントは、アンカーのポリゴンアウトラインへのアクセスを提供し、これは一般的にのアンカーでよく見られます。
SemanticClassificationコンポーネントは、アンカーを多数のカテゴリに分類します。以下に、すべての分類をまとめたリストを示します。
StorableコンポーネントおよびShareableコンポーネントは、空間アンカーにのみ適用されます。

一般的なシーンアンカー

シーンアンカーはシステムが管理するため、サポートされるコンポーネントは事前に規定されています。
Space Setup and Scene Model
ルームシーンアンカーには、天井を参照するRoomLayoutコンポーネントと、ルームシーンアンカーをすべて保持するAnchorContainerコンポーネントがあります。
2D要素(天井ウォールアートなど)のシーンアンカーには、アンカーの位置を取得するLocatableコンポーネント、ラベルのためのSemantic Classificationコンポーネント、バウンディングボックスの寸法用のBounded2Dコンポーネントがあります。また、ポリゴンアウトライン用のBoundary2Dコンポーネントを含むこともあります(は、このコンポーネントを使って壁で構成された部屋のアウトラインを示します)。
3Dのみのシーンアンカー(スクリーン植物その他など)は、2Dの シーンアンカーに似ていますが、Bounded2Dの代わりにBounded3Dコンポーネントを有しています。
2Dと3Dの両方にあてはまるシーンアンカーもあります(テーブル, ソファーベッドストレージなど)。この場合、3Dコンポーネントはバウンディングボリュームを表し、2Dコンポーネントは機能サーフェスとして知られる関心領域に相当します。このようなアンカーは2Dアンカーに似ていますが、Bounded3Dコンポーネントも含んでいます。

シーンメッシュ

シーンメッシュは、単一の静的アーティファクトでスペース全体をカバーする三角メッシュです。ルームのレイアウト要素(壁、天井、床)の近くのサーフェスにスナップされ、スペースの中にある他のすべての物体の境界線を大まかに示します。一般的なシーンアンカーとして表現されますが、このオブジェクトのインスタンスはスペースごとに1つしかありません。
シーンメッシュシーンアンカーには、アンカーの位置を取得するLocatableコンポーネントと、GLOBAL_MESHラベル用のSemantic Classificationコンポーネントと、形状を提供するTriangleMeshコンポーネントがあります。

シーンアンカー座標空間

シーンアンカーは、デフォルトのOpenXR座標系に対応する直交右手座標系で定義されます。一方Unityは、左手座標系を使います。これが、シーンアンカーの向きと寸法に整合するオブジェクトをスポーンさせるための設計時間の検討と、各3D位置の実行時変換(ほとんどの場合開発者には非表示)につながります。

シーンのセマンティック分類

セマンティック分類は、事前に規定されたシステム管理のオブジェクトタイプにシーンアンカーを分類します。セマンティッククラスは、基本的な形状の特徴を超えてオブジェクトを分類することで、分類固有のゲームロジックを提供する可能性をアプリ開発者にもたらします。

サポートされているセマンティックラベル

セマンティックラベル
説明
幾何学表現
ルームの構造
 
 
CEILING
天井
2D
DOOR_FRAME
ドアの枠。壁面内に存在していなければならない
2D
FLOOR
2D
INVISIBLE_WALL_FACE
オープンルームを囲むためにスペースの設定によって追加された壁面
2D
WALL_ART
壁面アート。壁面内に存在していなければならない
2D
WALL_FACE
壁面
2D
WINDOW_FRAME
窓枠 - 壁面内に存在していなければならない
2D
ルームの内容
 
 
COUCH
ソファー
2D (シート)と3D (立体)
TABLE
テーブル
2D (テーブル上面)と3D (立体)
BED
ベッド
2D (サーフェス)と3D (立体)
LAMP
ランプ
3D
PLANT
植物
3D
SCREEN
スクリーン
3D
STORAGE
保存容器
2D (単一の棚)と3D (立体)
メッシュのオブジェクト
 
 
GLOBAL_MESH
スペースの設定中にキャプチャされたユーザーのスペースの三角メッシュ
 
未分類のオブジェクト
 
 
OTHER
一般的な立体
3D
このラベルリストは進化しており、サポートされる2Dオブジェクトと3Dオブジェクトは定期的に追加されています。そのため、OTHERタイプはフォールバックと考えてください。今後、OTHERがタイプではなくなる可能性があり、このラベルを付けているオブジェクトは、変更が必要になるかもしれません。

詳しくはこちら

シーンモデルスペースの設定/シーンキャプチャの仕組みについて学んだところで、Unityのデータにアクセスしてみましょう。
  • MR Utility Kitは、シーンモデルに加えてさまざまなツールやユーティリティを提供します。
  • シーンデータに直接アクセスするには、低レベルの非同期OVRAnchorコンポーネントを使います。
  • アクセス許可を使ってユーザープライバシーを保護する方法については、空間データのアクセス許可をご覧ください。
  • Metaのサンプルを使えば、すぐにコード作成に取りかかれます。
  • シーンの実際の使用方法について学ぶには、ベストプラクティスをご覧ください。
ナビゲーションロゴ
日本語
© 2026 Meta