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 イベントをキューに追加しないでください
  • ランタイムは、大きな調整に応答して XrEventDataReferenceSpaceChangePending イベントをキューに追加する必要があります。たとえば、トラッキングが失われたために UNBOUNDED_ANDROID 空間のポーズがリセットされ、世界地図の切断された推定値(「新しい地図」)でトラッキングが再確立されます。
  • システムは、世界に関する認識を常に更新し、デバイスの追跡を調整しています。トラッキングのリセットに関係なく、アプリに永続的な位置情報が必要な場合は、この場合にアンカーを使用できます。

参照スペースの変更イベント

世界変更イベントまたは最適化再ローカライズ イベントで返された XrEventDataReferenceSpaceChangePending 構造で定義されたパラメータの場合:

typedef struct XrEventDataReferenceSpaceChangePending {
    XrStructureType         type;
    const void*             next;
    XrSession               session;
    XrReferenceSpaceType    referenceSpaceType;
    XrTime                  changeTime;
    XrBool32                poseValid;
    XrPosef                 poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;

メンバーの説明

  • referenceSpaceTypeXR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID である。
  • changeTime は、再ローカライズが完了した XrTime を表します。
  • poseValid は、接続が切断されたため false になります。接続が再確立された場合は true になります。
  • poseValidfalse の場合、poseInPreviousSpace は無効になります。

ビュー、コントローラ、または他のスペースで UNBOUNDED_ANDROID スペースとの相対的なトラッキングが失われた場合、アプリケーションは推定値または最後に認識された position 値と orientation 値を引き続き受信できます。これらの推定ポーズは、首のモデルの更新、慣性測位、最後に確認された位置に基づくことができます。アプリは、XR_SPACE_LOCATION_POSITION_VALID_BITXR_VIEW_STATE_POSITION_VALID_BIT が引き続き設定されていると想定できますが、位置が推定されたか、この方法で最後に認識されたことを示すために、XR_SPACE_LOCATION_POSITION_TRACKED_BITXR_VIEW_STATE_POSITION_TRACKED_BIT がランタイムによってクリアされる場合があります。

トラッキングが復元されると、ランタイムは任意で原点を再調整することがあります。たとえば、視聴者と一致するように原点を移動することがあります。アプリケーションは、XrEventDataReferenceSpaceChangePending イベントから返された poseValid 値をチェックして、使用できるかどうかを判断できます。

新しいオブジェクト タイプ

新しいフラグタイプ

新しい列挙型定数

XrReferenceSpaceType 列挙型が拡張され、次のように変更されました。

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

新しい列挙型

新しい構造

新機能

問題

変更履歴

  • リビジョン 1、2024 年 9 月 12 日(Levana Chen)
    • 最初の拡張機能の説明