מחרוזת שם
XR_ANDROID_trackables_object
סוג התוסף
הרחבת מכונה
מספר תוסף רשום
467
גרסה
1
יחסי תלות בין תוספים וגרסאות
תאריך השינוי האחרון
2024-10-03
סטטוס IP
אין תלונות ידועות על הפרת זכויות יוצרים בתוכן.
שותפים ביצירת התוכן
Spencer Quin, Google
Nihav Jain, Google
ג'ון פורסי (John Pursey), Google
Jared Finder, Google
לוו'נה צ'ן, Google
Kenny Vercaemer, Google
סקירה כללית
התוסף הזה מאפשר מעקב אחר אובייקטים פיזיים. לדוגמה, מקלדות, עכברים ואובייקטים אחרים בסביבה.
מעקב אחר אובייקטים
התוסף הזה מוסיף את הערך XR_TRACKABLE_TYPE_OBJECT_ANDROID
ל-XrTrackableTypeANDROID.
כדי לעקוב אחרי אובייקטים, האפליקציה עשויה ליצור XrTrackableTrackerANDROID באמצעות קריאה ל-xrCreateTrackableTrackerANDROID וציון XR_TRACKABLE_TYPE_OBJECT_ANDROID
כסוג הניתן למעקב ב-XrTrackableTrackerCreateInfoANDROID::trackableType.
אחזור אובייקט שניתן לעקוב אחריו
הפונקציה xrGetTrackableObjectANDROID מוגדרת כך:
XrResult xrGetTrackableObjectANDROID(
XrTrackableTrackerANDROID tracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackableObjectANDROID* objectOutput);
תיאורי פרמטרים
tracker
הוא XrTrackableTrackerANDROID שרוצים לשלוח אליו שאילתה.getInfo
הוא XrTrackableGetInfoANDROID עם המידע שמשמש לאחזור האובייקט שניתן לעקוב אחריו.objectOutput
הוא הפניה למבנה XrTrackableObjectANDROID שבו האובייקט שניתן לעקוב אחריו מוחזר.
הערך XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
יוחזר אם הסוג שניתן למעקב של XrTrackableANDROID
הוא לא XR_TRACKABLE_TYPE_OBJECT_ANDROID
, או אם הסוג שניתן למעקב של XrTrackableTrackerANDROID הוא לא XR_TRACKABLE_TYPE_OBJECT_ANDROID
.
שימוש תקף (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackables_object
לפני שמפעילים את xrGetTrackableObjectANDROID tracker
חייב להיות מזהה XrTrackableTrackerANDROID חוקיgetInfo
חייב להיות הפניה למבנה חוקי של XrTrackableGetInfoANDROIDobjectOutput
חייב להיות הפניה למבנה 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
הוא XrPosef של האובייקט שנמצא ב-XrTrackableGetInfoANDROID::baseSpace.-
extents
הוא המאפיין XrExtent3DfEXT של האובייקט. objectLabel
הוא הערך של XrObjectLabelANDROID שהוגדר לאובייקט הזה בסביבת זמן הריצה.lastUpdatedTime
הואXrTime
של העדכון האחרון של האובייקט.
שימוש תקף (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackables_object
לפני שמשתמשים ב-XrTrackableObjectANDROID type
חייב להיותXR_TYPE_TRACKABLE_OBJECT_ANDROID
next
חייב להיותNULL
או מצביע חוקי למבנה הבא בשרשרת המבניםtrackingState
חייב להיות ערך חוקי של XrTrackingStateANDROIDobjectLabel
חייב להיות ערך חוקי של 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);
קבועים חדשים של Enum
המניין XrStructureType הורחב עם:
XR_TYPE_TRACKABLE_OBJECT_ANDROID
XR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
המניין XrTrackableTypeANDROID הורחב עם:
XR_TRACKABLE_TYPE_OBJECT_ANDROID
Enums חדשים
מבנים חדשים
פונקציות חדשות
בעיות
היסטוריית הגרסאות
- גרסה 1, 03 באוקטובר 2024 (Kenny Vercaemer)
- תיאור ראשוני של התוסף.