رشته نام
XR_ANDROID_trackables_object
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
467
تجدید نظر
1
وابستگی های افزونه و نسخه
آخرین تاریخ اصلاح
01-11-2024
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
دیگو تیپالدی، گوگل
دیوید جوزف تان، گوگل
کریستوفر دور، گوگل
اسپنسر کوین، گوگل
جارد فایندر، گوگل
لوانا چن، گوگل
کنی ورکامر، گوگل
نمای کلی
این افزونه ردیابی جسم فیزیکی را امکان پذیر می کند. به عنوان مثال، صفحه کلید، ماوس و سایر اشیاء موجود در محیط.
ردیابی اشیاء
این برنامه افزودنی XR_TRACKABLE_TYPE_OBJECT_ANDROID
را به XrTrackableTypeANDROID
اضافه می کند.
برنامه ممکن است با xrCreateTrackableTrackerANDROID
XrTrackableTrackerANDROID
تعیین XR_TRACKABLE_TYPE_OBJECT_ANDROID
به عنوان نوع قابل ردیابی در XrTrackableTrackerCreateInfoANDROID::trackableType
یک 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
است که اشیاء فعال در ردیابی را نشان می دهد.
برنامه ممکن است با افزودن یک XrTrackableObjectConfigurationANDROID
به زنجیره بعدی XrTrackableTrackerCreateInfoANDROID
، یک پیکربندی اضافی تنظیم کند. خروجی xrGetAllTrackablesANDROID
برای مطابقت با activeLabels
فیلتر می شود.
اگر برنامه XrTrackableObjectConfigurationANDROID
را تنظیم نکند، تمام اشیایی که سیستم شناسایی کرده است ردیابی خواهند شد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_trackables_object
باید قبل از استفاده ازXrTrackableObjectANDROID
فعال شود -
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
برگردانده خواهد شد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_trackables_object
باید قبل از فراخوانیxrGetTrackableObjectANDROID
فعال شود -
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
-
XR_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
XrPosef
شی واقع درXrTrackableGetInfoANDROID::baseSpace
است. -
extents
بعدXrExtent3DfEXT
شی است. -
objectLabel
XrObjectLabelANDROID
است که زمان اجرا برای این شی تعیین کرده است. -
lastUpdatedTime
XrTime
آخرین به روز رسانی شی است.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_trackables_object
باید قبل از استفاده ازXrTrackableObjectANDROID
فعال شود -
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);
ثابت های جدید Enum
شمارش XrStructureType
با:
-
XR_TYPE_TRACKABLE_OBJECT_ANDROID
-
XR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
شمارش XrTrackableTypeANDROID
با:
-
XR_TRACKABLE_TYPE_OBJECT_ANDROID
فهرست های جدید
ساختارهای جدید
توابع جدید
مسائل
تاریخچه نسخه
- بازبینی 1، 03/10/2024 (کنی ورکامر)
- توضیحات پسوند اولیه
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.