Android XR SDK がデベロッパー プレビューで利用可能になりました。Google では皆様からのご意見やご感想をお待ちしています。
サポートページからお問い合わせください。
XR_ANDROID_unbounded_reference_space OpenXR 拡張機能
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Name String
XR_ANDROID_unbounded_reference_space
拡張機能の種類
インスタンスの拡張
登録されている電話番号
468
リビジョン
1
拡張機能とバージョンの依存関係
OpenXR 1.0
最終更新日
2024-09-12
IP ステータス
既知の IP に関する申し立てはありません。
寄与者
Spencer Quin、Google
Jared Finder、Google
Fengtao Fan、Google
Lachlan Ford、Google
Nihav Jain、Google
Levana Chen、Google
概要
この拡張機能により、アプリは UNBOUNDED_ANDROID
参照スペースを作成できます。この基準空間により、視聴者は複雑な環境(多くの場合、開始地点から数メートル離れた場所)を自由に移動できます。このとき、視聴者の近くの座標系の安定性を常に最適化します。デバイスが環境をより多く検出してシーン認識を改善するにつれて、デバイスの追跡を維持するために必要に応じて参照空間の原点が大きく調整され、ずれる可能性があります。
UNBOUNDED_ANDROID
リファレンス スペースを作成するには、アプリケーションが XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
を設定して xrCreateReferenceSpace に渡すことができます。
XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized
// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
.type = XR_REFERENCE_SPACE_CREATE_INFO;
.next = nullptr;
.referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
.poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));
// After usage
CHK_XR(xrDestroySpace(referenceSpace));
UNBOUNDED_ANDROID
参照空間は、デバイス トラッキングが開始されたときに、ヘッドセットの位置の世界ロックされた原点を設定します。ピッチとロールを除外するように重力方向に調整されており、+X は右、+Y は上、-Z は前方です。
UNBOUNDED_ANDROID
空間は、建物の 1 つのフロア全体や複数のフロアなど、単一の STAGE
の境界を超える世界規模のコンテンツをアプリケーションでレンダリングする必要がある場合に便利です。
UNBOUNDED_ANDROID
空間は、時間の経過とともに原点を調整することで、ビューアの近くで安定性を維持します。デバイス トラッキングの維持に必要に応じて、微調整や大幅な調整を行うことができます。
参照スペースの変更イベント
世界変更イベントまたは最適化再ローカライズ イベントで返された XrEventDataReferenceSpaceChangePending 構造で定義されたパラメータの場合:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
メンバーの説明
referenceSpaceType
が XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
である。
changeTime
は、再ローカライズが完了した XrTime
を表します。
poseValid
は、接続が切断された場合は false
、再接続された場合は true
になります。
poseValid
が false
の場合、poseInPreviousSpace
は無効になります。
ビュー、コントローラ、または他のスペースで UNBOUNDED_ANDROID
スペースに関連するトラッキングが失われた場合、アプリケーションは推定値または最後に認識された position
値と orientation
値を引き続き受信できます。これらの推定ポーズは、首のモデルの更新、慣性測位、最後に確認された位置に基づくことができます。アプリは、XR_SPACE_LOCATION_POSITION_VALID_BIT
と XR_VIEW_STATE_POSITION_VALID_BIT
が引き続き設定されていると想定できますが、位置が推定されたか、この方法で最後に認識されたことを示すために、XR_SPACE_LOCATION_POSITION_TRACKED_BIT
と XR_VIEW_STATE_POSITION_TRACKED_BIT
がランタイムによって消去される場合があります。
トラッキングが復元されると、ランタイムは任意でオリジンを再調整することがあります。たとえば、オリジンを視聴者と一致するように移動することがあります。アプリケーションは、XrEventDataReferenceSpaceChangePending イベントから返された poseValid
値をチェックして、使用できるかどうかを判断できます。
新しいオブジェクト タイプ
新しいフラグタイプ
新しい列挙型定数
XrReferenceSpaceType 列挙型が拡張され、次のように変更されました。
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
新しい列挙型
新しい構造
新機能
問題
変更履歴
- リビジョン 1、2024 年 9 月 12 日(Levana Chen)
OpenXR™ と OpenXR のロゴは、Khronos Group Inc. が所有する商標であり、中国、欧州連合、日本、英国で商標として登録されています。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# XR_ANDROID_unbounded_reference_space OpenXR extension\n\n**Name String**\n\n`XR_ANDROID_unbounded_reference_space`\n\n**Extension Type**\n\nInstance extension\n\n**Registered Extension Number**\n\n468\n\n**Revision**\n\n1\n\n**Extension and Version Dependencies**\n\n[OpenXR 1.0](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#versions-1.0)\n\n**Last Modified Date**\n\n2024-09-12\n\n**IP Status**\n\nNo known IP claims.\n\n**Contributors**\n\nSpencer Quin, Google\n\nJared Finder, Google\n\nFengtao Fan, Google\n\nLachlan Ford, Google\n\nNihav Jain, Google\n\nLevana Chen, Google\n\nOverview\n--------\n\nThis extension allows applications to create an `UNBOUNDED_ANDROID` reference\nspace. This reference space enables the viewer to move freely through a complex\nenvironment, often many meters from where they started, while always optimizing\nfor coordinate system stability near the viewer. As the device senses more of\nits environment to build a better scene understanding, the origin of the\nreference space **can** drift with **huge adjustments** as necessary to maintain\ndevice tracking.\n\nTo create an `UNBOUNDED_ANDROID` reference space, the application **can** set\n[XrReferenceSpaceCreateInfo::referenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceCreateInfo)\n`XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID` and pass to\n[xrCreateReferenceSpace](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#xrCreateReferenceSpace). \n\n XrInstance instance; // previously initialized\n XrSession session; // previously initialized\n XrPosef pose; // previously initialized\n\n // Use the new reference space type in the create info struct\n XrReferenceSpaceCreateInfo createInfo = {\n .type = XR_REFERENCE_SPACE_CREATE_INFO;\n .next = nullptr;\n .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;\n .poseInReferenceSpace = pose;\n }\n XrSpace referenceSpace;\n CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));\n\n // After usage\n CHK_XR(xrDestroySpace(referenceSpace));\n\nThe `UNBOUNDED_ANDROID` reference space establishes a world-locked origin of the\nheadset's position when the device tracking starts. It is gravity-aligned to\nexclude pitch and roll, with +X to the right, +Y up, and -Z forward.\n\n`UNBOUNDED_ANDROID` space is useful when an application needs to render\n**world-scale** content that spans beyond the bounds of a single `STAGE`, for\nexample, an entire floor or multiple floors of a building.\n\nAn `UNBOUNDED_ANDROID` space maintains stability near the viewer by adjusting\nits origin over time. It **can** make **slight** and **huge** adjustments as\nnecessary to maintain device tracking.\n\n- The runtime **should** not queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **minor adjustments**.\n- The runtime **should** queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **huge adjustments** . For example, the pose in `UNBOUNDED_ANDROID` space is reset due to a tracking loss and the tracking is re-established on a disconnected estimate of the world (a \"new map\").\n- The system is constantly updating its understanding of the world and adjusting device tracking. If an application requires a persisted location regardless of tracking resets, an anchor **can** be used in this case.\n\nReference space change event\n----------------------------\n\nFor parameters defined by\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) structure that returned\non world changing or optimizing relocalization events: \n\n typedef struct XrEventDataReferenceSpaceChangePending {\n XrStructureType type;\n const void* next;\n XrSession session;\n XrReferenceSpaceType referenceSpaceType;\n XrTime changeTime;\n XrBool32 poseValid;\n XrPosef poseInPreviousSpace;\n } XrEventDataReferenceSpaceChangePending;\n\n### Member Descriptions\n\n- `referenceSpaceType` is `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`.\n- `changeTime` will represent the [`XrTime`](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrTime) at which relocalization completed.\n- `poseValid` will be `false` due to the disconnected estimate or `true` after reconnected.\n- `poseInPreviousSpace` won't be valid when `poseValid` is `false`.\n\nWhen views, controllers or other spaces experience tracking loss relative to the\n`UNBOUNDED_ANDROID` space, applications **can** continue to receive inferred\nor last-known `position` and `orientation` values. These inferred poses **can** ,\nfor example, be based on neck model updates, inertial dead reckoning, or a\nlast-known position. An application can assume that it will continue to have the\n`XR_SPACE_LOCATION_POSITION_VALID_BIT` and\n`XR_VIEW_STATE_POSITION_VALID_BIT` set, but\n`XR_SPACE_LOCATION_POSITION_TRACKED_BIT` and\n`XR_VIEW_STATE_POSITION_TRACKED_BIT` may be cleared by the runtime to indicate\nthat the position is inferred or last-known in this way.\n\nWhen tracking is recovered, the runtime **may** recenter the origin\narbitrarily, for example moving the origin to coincide with the viewer. An\napplication **can** check the `poseValid` value returned from the\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event to determine if it's ready to\nuse.\n\n**New Object Types**\n\n**New Flag Types**\n\n**New Enum Constants**\n\n[XrReferenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceType) enumeration is extended with:\n\n- `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`\n\n**New Enums**\n\n**New Structures**\n\n**New Functions**\n\n**Issues**\n\n**Version History**\n\n- Revision 1, 2024-09-12 (Levana Chen)\n - Initial extension description\n\n*** ** * ** ***\n\nOpenXR™ and the OpenXR logo are trademarks owned\nby The Khronos Group Inc. and are registered as a trademark in China,\nthe European Union, Japan and the United Kingdom."]]