名前の文字列
XR_ANDROID_trackables_object
拡張機能の種類
インスタンスの拡張
登録されている電話番号
467
リビジョン
1
拡張機能とバージョンの依存関係
最終更新日
2024-10-03
IP ステータス
既知の IP に関する申し立てはありません。
寄与者
Spencer Quin、Google
Nihav Jain、Google
John Pursey、Google
Jared Finder、Google
Levana Chen、Google
Kenny Vercaemer、Google
概要
この拡張機能を使用すると、物理的なオブジェクトの追跡が可能になります。たとえば、キーボード、マウス、環境内の他のオブジェクトなどです。
オブジェクトを追跡する
この拡張機能により、XrTrackableTypeANDROID に XR_TRACKABLE_TYPE_OBJECT_ANDROID
が追加されます。
アプリケーションは、xrCreateTrackableTrackerANDROID を呼び出し、XrTrackableTrackerCreateInfoANDROID::trackableType でトラッキング可能なタイプとして XR_TRACKABLE_TYPE_OBJECT_ANDROID
を指定して、XrTrackableTrackerANDROID を作成してオブジェクトをトラッキングできます。
トラッキング可能なオブジェクトを取得する
xrGetTrackableObjectANDROID 関数は次のように定義されます。
XrResult xrGetTrackableObjectANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableObjectANDROID* objectOutput);
パラメータの説明
tracker
は、クエリする XrTrackableTrackerANDROID です。getInfo
は、トラッキング可能なオブジェクトの取得に使用される情報を含む XrTrackableGetInfoANDROID です。objectOutput
は、トラッキング可能なオブジェクトが返される XrTrackableObjectANDROID 構造体へのポインタです。
XrTrackableANDROID
のトラッキング可能タイプが XR_TRACKABLE_TYPE_OBJECT_ANDROID
でない場合、または XrTrackableTrackerANDROID のトラッキング可能タイプが XR_TRACKABLE_TYPE_OBJECT_ANDROID
でない場合は、XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
が返されます。
有効な使用方法(暗黙的)
- xrGetTrackableObjectANDROID を呼び出す前に、
XR_ANDROID_trackables_object
拡張機能を有効にする必要があります。tracker
は有効な XrTrackableTrackerANDROID ハンドルである必要があります。getInfo
は、有効な XrTrackableGetInfoANDROID 構造体へのポインタである必要があります。objectOutput
は XrTrackableObjectANDROID 構造体へのポインタである必要があります。
戻りコード
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_SESSION_NOT_RUNNING
XR_ERROR_TIME_INVALID
XrTrackableObjectANDROID 構造体は次のように定義されます。
typedef struct XrTrackableObjectANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent3DfEXT extents;
XrObjectLabelANDROID objectLabel;
XrTime lastUpdatedTime;
} XrTrackableObjectANDROID;
メンバーの説明
type
は、この構造の XrStructureType です。next
はNULL
または構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。trackingState
は、オブジェクトの XrTrackingStateANDROID です。centerPose
は、XrTrackableGetInfoANDROID::baseSpace にあるオブジェクトの XrPosef です。extents
は、オブジェクトの XrExtent3DfEXT ディメンションです。objectLabel
は、ランタイムがこのオブジェクトに対して決定した XrObjectLabelANDROID です。lastUpdatedTime
は、オブジェクトの最終更新のXrTime
です。
有効な使用方法(暗黙的)
- XrTrackableObjectANDROID を使用する前に、
XR_ANDROID_trackables_object
拡張機能を有効にする必要があります。type
はXR_TYPE_TRACKABLE_OBJECT_ANDROID
にする必要がありますnext
はNULL
または構造体チェーンの次の構造体への有効なポインタである必要があります。trackingState
は有効な XrTrackingStateANDROID 値である必要があります。objectLabel
は有効な XrObjectLabelANDROID 値である必要があります
XrObjectLabelANDROID 列挙型は、XrTrackableANDROID
オブジェクトのラベルです。
typedef enum XrObjectLabelANDROID {
XR_OBJECT_LABEL_UNKNOWN_ANDROID = 0,
XR_OBJECT_LABEL_KEYBOARD_ANDROID = 1,
XR_OBJECT_LABEL_MOUSE_ANDROID = 2,
XR_OBJECT_LABEL_LAPTOP_ANDROID = 3,
XR_OBJECT_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrObjectLabelANDROID;
トラッキング可能なオブジェクトを取得するサンプルコード
次のサンプルコードは、トラッキング可能なオブジェクトを取得する方法を示しています。
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrGetTrackableObjectANDROID xrGetTrackableObjectANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableTrackerCreateInfoANDROID
createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_OBJECT_ANDROID;
XrTrackableTracker objectTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&objectrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allObjectTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
objectTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allObjectTrackables.resize(trackableCountOutput, XR_NULL_TRACKABLE_ANDROID);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
objectTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allObjectTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allObjectTrackables) {
// Object trackable query information
XrTrackableGetInfoANDROID objectGetInfo;
objectGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
objectGetInfo.next = nullptr;
objectGetInfo.trackable = trackable;
objectGetInfo.space = appSpace;
objectGetInfo.time = updateTime;
// Get the object trackable. Note that the tracker only returns object types.
XrTrackableObjectANDROID object = { XR_TYPE_TRACKABLE_OBJECT_ANDROID };
result = xrGetTrackableObjectANDROID(
objectTrackableTracker,
&objectGetInfo,
&object
);
if (result == XR_SUCCESS) {
/** Do Stuff with the object */
}
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(objectTrackableTracker);
新しい列挙型定数
XrStructureType 列挙型が拡張され、次のように変更されました。
XR_TYPE_TRACKABLE_OBJECT_ANDROID
XR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
XrTrackableTypeANDROID 列挙型が拡張され、次が追加されました。
XR_TRACKABLE_TYPE_OBJECT_ANDROID
新しい列挙型
新しい構造
新機能
問題
変更履歴
- リビジョン 1、2024 年 10 月 3 日(Kenny Vercaemer)
- 最初の拡張機能の説明。