名前の文字列
XR_ANDROID_trackables_object
拡張機能の種類
インスタンスの拡張
登録されている電話番号
467
リビジョン
1
拡張機能とバージョンの依存関係
最終更新日
2024-11-01
IP ステータス
既知の IP に関する申し立てはありません。
寄与者
Diego Tipaldi、Google
David Joseph Tan、Google
Christopher Doer、Google
Spencer Quin、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 を作成することがあります。
XrTrackableObjectConfigurationANDROID 構造体は次のように定義されます。
typedef struct XrTrackableObjectConfigurationANDROID {
XrStructureType type;
void* next;
uint32_t labelCount;
const XrObjectLabelANDROID* activeLabels;
} XrTrackableObjectConfigurationANDROID;
メンバーの説明
typeは、この構造のXrStructureTypeです。nextはNULLまたは構造体チェーンの次の構造体へのポインタです。コア OpenXR またはこの拡張機能では、そのような構造は定義されていません。labelCountはactiveLabelsのカウントです。activeLabelsは、トラッキング中のアクティブなオブジェクトを示すXRObjectLabelANDROIDの配列へのポインタです。
アプリは、XrTrackableTrackerCreateInfoANDROID の次のチェーンに XrTrackableObjectConfigurationANDROID を追加して、追加の構成を設定することがあります。xrGetAllTrackablesANDROID の出力は、activeLabels と一致するようにフィルタされます。
アプリで XrTrackableObjectConfigurationANDROID が設定されていない場合、システムが識別したすべてのオブジェクトが追跡されます。
有効な使用(暗黙的)
XrTrackableObjectANDROIDを使用する前に、XR_ANDROID_trackables_object拡張機能を有効にする必要があります。typeはXR_TYPE_TRACKABLE_OBJECT_ANDROIDにする必要があります。nextはNULLであるか、構造体チェーンの次の構造体への有効なポインタである必要があります。activeLabelsは、labelCountの有効なXrObjectLabelANDROID値の配列へのポインタである必要があります。labelCountパラメータは0より大きい値にする必要があります。
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;
トラッキング可能なオブジェクトを取得する
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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_SESSION_NOT_RUNNINGXR_ERROR_TIME_INVALIDXR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
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値である必要があります。
トラッキング可能なオブジェクトを取得するサンプルコード
次のサンプルコードは、トラッキング可能なオブジェクトを取得する方法を示しています。
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;
XrTrackableTrackerANDROID objectTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&objectTrackableTracker);
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.baseSpace = 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_ANDROIDXR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
XrTrackableTypeANDROID 列挙型が拡張され、次が追加されました。
XR_TRACKABLE_TYPE_OBJECT_ANDROID
新しい列挙型
新しい構造
新機能
問題
変更履歴
- リビジョン 1、2024 年 10 月 3 日(Kenny Vercaemer)
- 拡張機能の最初の説明。
OpenXR™ と OpenXR のロゴは、Khronos Group Inc. が所有する商標であり、中国、欧州連合、日本、英国で商標として登録されています。