名前の文字列
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
であるか、構造体チェーンの次の構造体を指す有効なポインタである必要があります。関連情報: XrTrackableObjectConfigurationANDROIDtrackableType
は有効な 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
は、vertexCapacityInput
XrVector2f 構造の配列へのポインタである必要があります。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)
- 最初の拡張機能の説明。