رشته نام
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;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
trackerXrTrackableTrackerANDROIDبرای پرس و جو است. -
getInfoXrTrackableGetInfoANDROIDبا اطلاعات مورد استفاده برای دریافت شی قابل پیگیری است. -
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;
توضیحات اعضا
-
typeXrStructureTypeاین ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
trackingStateXrTrackingStateANDROIDشی است. -
centerPoseXrPosefشی واقع درXrTrackableGetInfoANDROID::baseSpaceاست. -
extentsبعدXrExtent3DfEXTشی است. -
objectLabelXrObjectLabelANDROIDاست که زمان اجرا برای این شی تعیین کرده است. -
lastUpdatedTimeXrTimeآخرین به روز رسانی شی است.
استفاده معتبر (ضمنی)
- پسوند
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. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.