名前の文字列
XR_ANDROID_trackables
拡張機能の種類
インスタンスの拡張
登録されている電話番号
456
リビジョン
1
拡張機能とバージョンの依存関係
最終更新日
2024-09-30
IP ステータス
既知の IP に関する申し立てはありません。
寄与者
Spencer Quin、Google
Nihav Jain、Google
John Pursey、Google
Jared Finder、Google
Levana Chen、Google
Kenny Vercaemer、Google
概要
この拡張機能により、アプリケーションは物理環境からトラッキング可能アイテムにアクセスし、トラッキング可能アイテムに関連付けられたアンカーを作成できます。
この拡張機能は、平面トラッケーブルを定義します。他の拡張機能によって、トラッキング可能なタイプが追加される可能性があります。たとえば、XR_ANDROID_trackables_object はオブジェクト トラッケーブルを追加し、XR_ANDROID_depth_texture は環境内の任意のポイントへのレイキャスティングを可能にする深度バッファを追加します。
トラッキング可能オブジェクトとは、物理環境でトラッキングされるオブジェクトです(XrTrackableTypeANDROID をご覧ください)。
- 平面(壁、床、天井、テーブルなど)
- オブジェクト(キーボード、マウス、ノートパソコンなど)
トラッキング可能なトラッカーを作成する
XrTrackableTrackerANDROID は、環境内の特定の XrTrackableTypeANDROID のトラッケーブルの検出と更新に必要なリソースを表すハンドルです。
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
xrCreateTrackableTrackerANDROID 関数は次のように定義されます。
XrResult xrCreateTrackableTrackerANDROID(
    XrSession                                   session,
    const XrTrackableTrackerCreateInfoANDROID*  createInfo,
    XrTrackableTrackerANDROID*                  trackableTracker);
パラメータの説明
- sessionは、トラッカーを作成する XrSession です。
- createInfoは、トラッカーの作成に使用されるパラメータを含む XrTrackableTrackerCreateInfoANDROID 構造体へのポインタです。
- trackableTrackerは、作成された XrTrackableTrackerANDROID が返されるハンドルへのポインタです。
アプリは xrCreateTrackableTrackerANDROID 関数を使用してトラッキング可能なトラッカーを作成できます。
- システムが指定されたタイプのトラッケーブルをサポートしていない場合、XR_ERROR_FEATURE_UNSUPPORTEDが返されます。
- 呼び出し元のアプリに必要な権限が付与されていない場合、XR_ERROR_PERMISSION_INSUFFICIENTが返されます。
アプリケーションは、返されたトラッカー ハンドルを後続の API 呼び出しで使用できます。XrTrackableTrackerANDROID ハンドルは、最終的には xrDestroyTrackableTrackerANDROID 関数を使用して解放する必要があります。
有効な使用方法(暗黙的)
- xrCreateTrackableTrackerANDROID を呼び出す前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- sessionは有効な XrSession ハンドルである必要があります。
- createInfoは、有効な XrTrackableTrackerCreateInfoANDROID 構造体へのポインタである必要があります。
- trackableTrackerは XrTrackableTrackerANDROID ハンドルへのポインタである必要があります。
戻りコード
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
- XR_ERROR_OUT_OF_MEMORY
- XR_ERROR_LIMIT_REACHED
- XR_ERROR_FEATURE_UNSUPPORTED
XrTrackableTrackerCreateInfoANDROID 構造体は次のように定義されます。
typedef struct XrTrackableTrackerCreateInfoANDROID {
    XrStructureType           type;
    void*                     next;
    XrTrackableTypeANDROID    trackableType;
} XrTrackableTrackerCreateInfoANDROID;
メンバーの説明
- typeは、この構造の XrStructureType です。
- nextは- NULLまたは構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。
- trackableTypeは、トラッカーがトラッキングする XrTrackableTypeANDROID です。
XrTrackableTrackerCreateInfoANDROID 構造体は、xrCreateTrackableTrackerANDROID に渡されたときに XrTrackableTrackerANDROID の作成オプションを提供します。
拡張機能は、トラッキング可能なトラッカーの追加構成を可能にするために、next に接続できる構造を定義できます。
有効な使用方法(暗黙的)
- XrTrackableTrackerCreateInfoANDROID を使用する前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- typeは- XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROIDにする必要があります。
- nextは- NULLであるか、構造体チェーンの次の構造体への有効なポインタである必要があります。関連情報: XrTrackableObjectConfigurationANDROID
- trackableTypeは有効な XrTrackableTypeANDROID 値である必要があります。
XrTrackableTypeANDROID 列挙型は次のように定義されます。
typedef enum XrTrackableTypeANDROID {
    XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
    XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
    XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
    XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;
xrDestroyTrackableTrackerANDROID 関数は次のように定義されます。
XrResult xrDestroyTrackableTrackerANDROID(
    XrTrackableTrackerANDROID                   trackableTracker);
パラメータの説明
- trackableTrackerは、xrCreateTrackableTrackerANDROID で以前に作成した XrTrackableTrackerANDROID ハンドルです。
xrDestroyTrackableTrackerANDROID 関数は、トラッキング可能なトラッカーを破棄します。
同じ XrTrackableTypeANDROID で作成された有効な XrTrackableTrackerANDROID が他にない場合、システムはシステム リソースを節約するために、そのトラッキング タイプに必要なトラッキング サービスを無効にする可能性があります。
有効な使用方法(暗黙的)
- xrDestroyTrackableTrackerANDROID を呼び出す前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- trackableTrackerは有効な XrTrackableTrackerANDROID ハンドルである必要があります。
スレッドセーフ
- trackableTrackerと子ハンドルへのアクセスは、外部で同期する必要があります。
戻りコード
- XR_SUCCESS
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_HANDLE_INVALID
すべてのトラッキング デバイスを取得する
XrTrackableANDROID アトムは次のように定義されます。
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID は、単一のトラッキング可能オブジェクトを表すために使用され、関連する XrTrackableTrackerANDROID のライフサイクル内でのみ有効です。
xrGetAllTrackablesANDROID 関数は次のように定義されます。
XrResult xrGetAllTrackablesANDROID(
    XrTrackableTrackerANDROID                   trackableTracker,
    uint32_t                                    trackableCapacityInput,
    uint32_t*                                   trackableCountOutput,
    XrTrackableANDROID*                         trackables);
パラメータの説明
- trackableTrackerは、クエリする XrTrackableTrackerANDROID です。
- trackableCapacityInputは- trackables配列の容量です。必要な容量の取得リクエストを示すには 0 にします。
- trackableCountOutputは、書き込まれた- trackablesの数へのポインタ、または- trackablesが不十分な場合に必要な容量へのポインタです。
- trackablesは- XrTrackableANDROIDの配列へのポインタです。- trackableCapacityInputが 0 の場合、- NULLにできます。
- 必要な - trackablesサイズの取得の詳細については、バッファサイズ パラメータのセクションをご覧ください。
xrGetAllTrackablesANDROID は、環境で検出されたトラッケーブルを表す XrTrackableANDROID の配列を入力します。返された trackables の XrTrackableTypeANDROID は、trackableTracker の XrTrackableTypeANDROID と一致している必要があります。
トラッキング可能な平面を取得する
xrGetTrackablePlaneANDROID 関数は次のように定義されます。
XrResult xrGetTrackablePlaneANDROID(
    XrTrackableTrackerANDROID                   trackableTracker,
    const XrTrackableGetInfoANDROID*            getInfo,
    XrTrackablePlaneANDROID*                    planeOutput);
パラメータの説明
- trackableTrackerは、クエリする XrTrackableTrackerANDROID です。
- getInfoは、トラッキング可能なプレーンの取得に使用される情報を含む XrTrackableGetInfoANDROID です。
- planeOutputは、トラッキング可能なプレーンが返される XrTrackablePlaneANDROID 構造体へのポインタです。
xrGetTrackablePlaneANDROID 関数は、トラッキング可能な平面の詳細(ジオメトリ、向き、トラッキング状態など)を返します。
プレーン情報は、XrTrackableGetInfoANDROID::time、XrTrackableGetInfoANDROID::baseSpace を使用して xrGetTrackablePlaneANDROID の呼び出し時に解決され、ベース空間を基準とします。
有効な使用方法(暗黙的)
- xrGetTrackablePlaneANDROID を呼び出す前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- trackableTrackerは有効な XrTrackableTrackerANDROID ハンドルである必要があります。
- getInfoは、有効な XrTrackableGetInfoANDROID 構造体へのポインタである必要があります。
- planeOutputは XrTrackablePlaneANDROID 構造体へのポインタである必要があります。
戻りコード
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
- XR_ERROR_LIMIT_REACHED
- XR_ERROR_TIME_INVALID
XrTrackableGetInfoANDROID 構造体は次のように定義されます。
typedef struct XrTrackableGetInfoANDROID {
    XrStructureType       type;
    void*                 next;
    XrTrackableANDROID    trackable;
    XrSpace               baseSpace;
    XrTime                time;
} XrTrackableGetInfoANDROID;
メンバーの説明
- typeは、この構造の XrStructureType です。
- nextは- NULLまたは構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。
- trackableは、クエリする- XrTrackableANDROIDプレーンです。
- baseSpaceプレーンのポーズは、- timeにあるこの XrSpace を基準とします。
- timeは、- baseSpaceを基準として座標を評価する- XrTimeです。
XrTrackableGetInfoANDROID 構造体は、xrGetTrackablePlaneANDROID に渡されたときにクエリ オプションを提供します。trackable は、xrGetTrackablePlaneANDROID で使用される trackableTracker に対応している必要があります。
trackable のトラッキング可能な型が XR_TRACKABLE_TYPE_PLANE_ANDROID でない場合、XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID が返されます。
有効な使用方法(暗黙的)
- XrTrackableGetInfoANDROID を使用する前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- typeは- XR_TYPE_TRACKABLE_GET_INFO_ANDROIDにする必要があります。
- nextは- NULLであるか、構造体チェーンの次の構造体への有効なポインタである必要があります。
- baseSpaceは有効な XrSpace ハンドルである必要があります。
XrTrackablePlaneANDROID 構造体は次のように定義されます。
typedef struct XrTrackablePlaneANDROID {
    XrStructureType           type;
    void*                     next;
    XrTrackingStateANDROID    trackingState;
    XrPosef                   centerPose;
    XrExtent2Df               extents;
    XrPlaneTypeANDROID        planeType;
    XrPlaneLabelANDROID       planeLabel;
    XrTrackableANDROID        subsumedByPlane;
    XrTime                    lastUpdatedTime;
    uint32_t                  vertexCapacityInput;
    uint32_t*                 vertexCountOutput;
    XrVector2f*               vertices;
} XrTrackablePlaneANDROID;
メンバーの説明
- typeは、この構造の XrStructureType です。
- nextは- NULLまたは構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。
- trackingStateは、プレーンの XrTrackingStateANDROID です。
- centerPoseは、対応する XrTrackableGetInfoANDROID::baseSpace の基準フレーム内の平面の位置と向きを定義する XrPosef です。ここでの同一の向きは、+Y が平面の法線と平行な座標軸を表します。
- extentsは、プレーンの XrExtent2Df ディメンションです。
- planeTypeは、ランタイムがこのプレーンに対して決定した XrPlaneTypeANDROID です。
- planeLabelは、ランタイムがこのプレーンに対して決定した XrPlaneLabelANDROID です。
- subsumedByPlaneは、このプレーンを包含するプレーンの- XrTrackableANDROIDです(存在しない場合は- XR_NULL_TRACKABLE_ANDROID)。
- lastUpdatedTimeは、プレーンの最終更新の- XrTimeです。
- vertexCapacityInputは- vertices配列の容量です。必要な容量の取得リクエストを示すには 0 にします。
- vertexCountOutputは、書き込まれた- verticesの数へのポインタ、または- verticesが不十分な場合に必要な容量へのポインタです。
- verticesは XrVector2f の配列へのポインタです。- vertexCapacityInputが 0 の場合、- NULLにできます。頂点は反時計回りの順になります。ポリゴンは凹状にすることもできますが、自己交差してはなりません。
- 必要な verticesサイズの取得の詳細については、バッファサイズ パラメータのセクションをご覧ください。
有効な使用方法(暗黙的)
- XrTrackablePlaneANDROID を使用する前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- typeは- XR_TYPE_TRACKABLE_PLANE_ANDROIDにする必要があります。
- nextは- NULLであるか、構造体チェーンの次の構造体への有効なポインタである必要があります。
- trackingStateは有効な XrTrackingStateANDROID 値である必要があります。
- planeTypeは有効な XrPlaneTypeANDROID 値である必要があります。
- planeLabelは、有効な XrPlaneLabelANDROID 値にする必要があります。
- vertexCountOutputは- uint32_t値へのポインタである必要があります。
- verticesは、- vertexCapacityInputXrVector2f 構造の配列へのポインタである必要があります。
- vertexCapacityInputパラメータは- 0より大きい値にする必要があります。
XrTrackingStateANDROID 列挙型は、XrTrackableANDROID のトラッキング状態を表します。
typedef enum XrTrackingStateANDROID {
    XR_TRACKING_STATE_PAUSED_ANDROID = 0,
    XR_TRACKING_STATE_STOPPED_ANDROID = 1,
    XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
| 説明 | |
| 
 | トラッキング可能オブジェクトまたはアンカーのトラッキングが一時停止されているが、今後再開される可能性があることを示します。 | 
| 
 | このトラッキング アイテムの追跡は停止されており、再開されることはありません。 | 
| 
 | オブジェクトがトラッキングされ、そのポーズが最新の状態である。 | 
XrPlaneTypeANDROID 列挙型は、XrTrackableANDROID プレーンのタイプです。
typedef enum XrPlaneTypeANDROID {
    XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
    XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
    XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
    XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;
XrPlaneLabelANDROID 列挙型は、XrTrackableANDROID プレーン用のラベルです。
typedef enum XrPlaneLabelANDROID {
    XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
    XR_PLANE_LABEL_WALL_ANDROID = 1,
    XR_PLANE_LABEL_FLOOR_ANDROID = 2,
    XR_PLANE_LABEL_CEILING_ANDROID = 3,
    XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;
アンカー スペースを作成する
XrResult xrCreateAnchorSpaceANDROID(
    XrSession                                   session,
    const XrAnchorSpaceCreateInfoANDROID*       createInfo,
    XrSpace*                                    anchorOutput);
パラメータの説明
- sessionは、アンカー空間を作成する XrSession です。
- createInfoは、アンカー空間の作成に使用されるパラメータを含む XrAnchorSpaceCreateInfoANDROID 構造体へのポインタです。
- anchorOutputは、作成された XrSpace が返されるハンドルへのポインタです。
アンカーの位置と方向の両方が、常にトラッキングまたはトラッキング解除されます。つまり、アプリが anchorOutput に対して xrLocateSpace または xrLocateSpaces を呼び出すときに、XR_SPACE_LOCATION_POSITION_TRACKED_BIT と XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT の両方を設定するか、両方を消去する必要があります。
アプリケーションは、最終的に xrDestroySpace を使用して、返された XrSpace を解放する必要があります。
- システムがアンカーをサポートしていない場合は、XR_ERROR_FEATURE_UNSUPPORTEDを返す必要があります。
- 特定のアンカー アタッチメントがサポートされていない場合は、XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDを返す必要があります。
有効な使用方法(暗黙的)
- xrCreateAnchorSpaceANDROID を呼び出す前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- sessionは有効な XrSession ハンドルである必要があります。
- createInfoは、有効な XrAnchorSpaceCreateInfoANDROID 構造体へのポインタである必要があります。
- anchorOutputは XrSpace ハンドルへのポインタである必要があります。
戻りコード
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
- XR_ERROR_LIMIT_REACHED
- XR_ERROR_POSE_INVALID
- XR_ERROR_TIME_INVALID
- XR_ERROR_OUT_OF_MEMORY
XrAnchorSpaceCreateInfoANDROID 構造体は次のように定義されます。
typedef struct XrAnchorSpaceCreateInfoANDROID {
    XrStructureType       type;
    void*                 next;
    XrSpace               space;
    XrTime                time;
    XrPosef               pose;
    XrTrackableANDROID    trackable;
} XrAnchorSpaceCreateInfoANDROID;
メンバーの説明
- typeは、この構造の XrStructureType です。
- nextは- NULLまたは構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。
- spaceは、アンカーが作成される XrSpace です。
- timeは、アンカー作成の- XrTimeです。
- poseはアンカーの XrPosef です。
- trackableは、アンカーが接続される- XrTrackableANDROIDです。空間アンカーを作成する場合、- XR_NULL_TRACKABLE_ANDROIDになることがあります。
有効な使用方法(暗黙的)
- XrAnchorSpaceCreateInfoANDROID を使用する前に、XR_ANDROID_trackables拡張機能を有効にする必要があります。
- typeは- XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDにする必要があります
- nextは- NULLであるか、構造体チェーンの次の構造体への有効なポインタである必要があります。
- spaceは有効な XrSpace ハンドルである必要があります。
すべてのトラッケーブルを取得するコード例
次のサンプルコードは、特定のタイプのすべてのトラッケーブルを取得する方法を示しています。
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
  session,
  &createInfo,
  &planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
  planeTrackableTracker,
  0,
  &trackableCountOutput,
  nullptr
);
if (result == XR_SUCCESS) {
  allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);
  // Fetch the actual trackable handles in the appropriately resized array.
  result = xrGetAllTrackablesANDROID(
    planeTrackableTracker,
    trackableCountOutput,
    &trackableCountOutput,
    allPlaneTrackables.data());
  if (result == XR_SUCCESS) {
    for (XrTrackableANDROID trackable : allPlaneTrackables) {
      // You now have all trackables of the specified type.
    }
  }
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);
トラッキング可能な平面を取得するサンプルコード
次のサンプルコードは、ヒット結果 XR_ANDROID_raycast または xrGetTrackablesANDROID から取得した既存の XrTrackableANDROID からトラッキング可能な平面を取得する方法を示しています。
XrTrackableTrackerANDROID planeTracker; // previously created
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;
XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
  planeTracker,
  &planeGetInfo,
  &plane
);
if (result == XR_SUCCESS) {
  // Plane tracking state, center pose, extents, type now available in plane.
}
アンカースペースを作成するコード例
次のサンプルコードは、トラッキング対象に関連付けられたアンカースペースを作成する方法を示しています。
XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };
XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
  session,
  &spatialAnchorCreateInfo,
  &spatialAnchor
);
// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;
XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
  session,
  &trackableAnchorCreateInfo,
  &trackableAnchor
);
while (true) {
  // app update loop
  // ...
  // Get the current location of the anchor's space w.r.t the world.
  XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
  result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);
  if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
    // Update anchor pose.
    doDrawingForAnchor(anchorLocation.pose);
  } else {
    // ...
  }
}
// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);
新しい基本型
新しいオブジェクト タイプ
新しい列挙型定数
XrStructureType 列挙型が拡張され、次のように変更されました。
- XR_TYPE_TRACKABLE_GET_INFO_ANDROID
- XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
- XR_TYPE_TRACKABLE_PLANE_ANDROID
- XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
XrObjectType 列挙型が拡張され、次のように変更されました。
- XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
XrResult 列挙型が拡張され、次が追加されました。
- XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
- XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
新しい列挙型
新しい構造
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
新機能
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
問題
変更履歴
- リビジョン 1、2024 年 9 月 27 日(Kenny Vercaemer)
- 拡張機能の最初の説明。
 
OpenXR™ と OpenXR のロゴは、Khronos Group Inc. が所有する商標であり、中国、欧州連合、日本、英国で商標として登録されています。
