מחרוזת שם
XR_ANDROID_trackables
סוג התוסף
תוסף למכונה
מספר תוסף רשום
456
גרסה
1
תלות בתוספים ובגרסאות
תאריך השינוי האחרון
2024-09-30
סטטוס כתובת ה-IP
לא ידוע על תלונות על הפרת זכויות יוצרים בנושא כתובת IP.
שותפים ביצירת התוכן
ספנסר קווין (Spencer Quin), Google
Nihav Jain, Google
ג'ון פורסי (John Pursey), Google
Jared Finder, Google
לונן צ'ן, Google
Kenny Vercaemer, Google
סקירה כללית
התוסף הזה מאפשר לאפליקציה לגשת לפריטים שניתן לעקוב אחריהם מהסביבה הפיזית, וליצור עוגנים שמצורפים לפריטים שניתן לעקוב אחריהם.
התוסף הזה מגדיר אובייקטים שניתנים למעקב במטוס. תוספים אחרים עשויים להוסיף עוד סוגים שניתן לעקוב אחריהם. לדוגמה, XR_ANDROID_trackables_object מוסיף אובייקטים שניתנים למעקב, ו-XR_ANDROID_depth_texture מוסיף מאגרי עומק שמאפשרים הקרנת קרניים לנקודות שרירותיות בסביבה.
אובייקט שניתן לעקוב אחריו הוא אובייקט שאפשר לעקוב אחריו בסביבה הפיזית (ראו XrTrackableTypeANDROID):
- מישור (למשל, קיר, רצפה, תקרה, שולחן)
- אובייקט (למשל מקלדת, עכבר, מחשב נייד)
יצירת מכשיר מעקב שניתן לעקוב אחריו
XrTrackableTrackerANDROID הוא כינוי שמייצג את המשאבים הנדרשים כדי לגלות ולעדכן אובייקטים שניתן לעקוב אחריהם מסוג XrTrackableTypeANDROID בסביבה.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
הפונקציה xrCreateTrackableTrackerANDROID מוגדרת באופן הבא:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
תיאורי פרמטרים
sessionהוא XrSession שיוצר את מכשיר המעקב.createInfoהוא הפניה למבנה XrTrackableTrackerCreateInfoANDROID שמכיל פרמטרים שישמשו ליצירת המעקב.trackableTrackerהוא הפניה למזהה שבו מוחזר האובייקט שנוצר של XrTrackableTrackerANDROID.
האפליקציה יכולה להשתמש בפונקציה xrCreateTrackableTrackerANDROID כדי ליצור מכשיר מעקב שניתן לעקוב אחריו.
- הערך
XR_ERROR_FEATURE_UNSUPPORTEDיוחזר אם המערכת לא תומכת באובייקטים שניתן לעקוב אחריהם מהסוג שצוין. - הערך
XR_ERROR_PERMISSION_INSUFFICIENTיוחזר אם ההרשאות הנדרשות לא הוענקו לאפליקציה ששלחה את הקריאה.
האפליקציה יכולה להשתמש במזהה המעקב שהוחזר בקריאות API הבאות. צריך לפנות את הטיפולן של XrTrackableTrackerANDROID בסופו של דבר באמצעות הפונקציה xrDestroyTrackableTrackerANDROID.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמפעילים את xrCreateTrackableTrackerANDROID sessionחייב להיות מזהה XrSession תקיןcreateInfoחייב להיות הפניה למבנה חוקי של XrTrackableTrackerCreateInfoANDROIDtrackableTrackerחייב להיות מצביע למזהה של XrTrackableTrackerANDROID
קודי החזרה
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_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_FEATURE_UNSUPPORTED
המבנה XrTrackableTrackerCreateInfoANDROID מוגדר כך:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
תיאורי חברים
typeהוא XrStructureType של המבנה הזה.nextהואNULLאו הפניה למבנה הבא בשרשרת המבנים. אין מבנים כאלה מוגדרים ב-OpenXR או בתוסף הזה.trackableTypeהוא הערך של XrTrackableTypeANDROID שמערכת המעקב תעקוב אחריו.
המבנה XrTrackableTrackerCreateInfoANDROID מספק אפשרויות יצירה ל-XrTrackableTrackerANDROID כשהוא מועבר ל-xrCreateTrackableTrackerANDROID.
תוספים יכולים להגדיר מבנים שאפשר לצרף ל-next כדי לאפשר הגדרה נוספת של השירותים למעקב שניתן לעקוב אחריהם.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמשתמשים ב-XrTrackableTrackerCreateInfoANDROID - הערך של
typeחייב להיותXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID nextחייב להיותNULLאו מצביע תקין להמבנה הבא בשרשרת המבנים. מידע נוסף זמין במאמר: XrTrackableObjectConfigurationANDROIDtrackableTypeחייב להיות ערך תקין של XrTrackableTypeANDROID
המאפיין המסווג XrTrackableTypeANDROID מוגדר כך:
typedef enum XrTrackableTypeANDROID {
XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;
הפונקציה xrDestroyTrackableTrackerANDROID מוגדרת כך:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
תיאורי פרמטרים
trackableTrackerהוא ערך של XrTrackableTrackerANDROID שנוצר קודם לכן על ידי xrCreateTrackableTrackerANDROID.
הפונקציה xrDestroyTrackableTrackerANDROID משמידה את מכשיר המעקב שניתן לעקוב אחריו.
אם אין XrTrackableTrackerANDROID תקף אחר שנוצר עם אותו XrTrackableTypeANDROID, המערכת עשויה להשבית את שירותי המעקב הנדרשים לסוג הזה של אובייקט למעקב כדי לחסוך במשאבי המערכת.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמפעילים את xrDestroyTrackableTrackerANDROID trackableTrackerחייב להיות מזהה XrTrackableTrackerANDROID חוקי
בטיחות בשרשור
- חובה לסנכרן באופן חיצוני את הגישה ל-
trackableTrackerולכל כינויים משניים
קודי החזרה
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
הצגת כל הפריטים שניתן לעקוב אחריהם
האטום XrTrackableANDROID מוגדר כך:
XR_DEFINE_ATOM(XrTrackableANDROID)
השדה XrTrackableANDROID משמש לייצוג אובייקט אחד שניתן לעקוב אחריו, והוא תקף רק במהלך מחזור החיים של XrTrackableTrackerANDROID המשויך אליו.
הפונקציה xrGetAllTrackablesANDROID מוגדרת באופן הבא:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
תיאורי פרמטרים
trackableTrackerהוא XrTrackableTrackerANDROID שרוצים לשלוח לו שאילתה.trackableCapacityInputהוא הקיבולת של מערךtrackables, או 0 כדי לציין בקשה לאחזור הקיבולת הנדרשת.trackableCountOutputהוא הפניה למספר הפעמים ש-trackablesנכתב, או הפניה לקיבולת הנדרשת במקרה ש-trackablesלא מספיק.trackablesהוא מצביע למערך שלXrTrackableANDROID. הערך יכול להיותNULLאם הערך שלtrackableCapacityInputהוא 0.בקטע פרמטרים של גודל מאגר מפורט תיאור של אחזור הגודל הנדרש של
trackables.
הפונקציה xrGetAllTrackablesANDROID ממלאת מערך של XrTrackableANDROID שמייצג את הפריטים שניתן לעקוב אחריהם שנמצאים בסביבה. הערך של XrTrackableTypeANDROID ב-trackables המוחזר חייב להתאים לערך של XrTrackableTypeANDROID ב-trackableTracker.
אחזור מטוס שניתן לעקוב אחריו
הפונקציה xrGetTrackablePlaneANDROID מוגדרת כך:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
תיאורי פרמטרים
trackableTrackerהוא XrTrackableTrackerANDROID שרוצים לשלוח לו שאילתה.getInfoהוא XrTrackableGetInfoANDROID עם המידע ששימש לקבלת המטוס שניתן למעקב.planeOutputהוא הפניה למבנה XrTrackablePlaneANDROID שבו מוחזר המישן שניתן למעקב.
הפונקציה xrGetTrackablePlaneANDROID מחזירה פרטים על המשטח שניתן לעקוב אחריו, כמו הגיאומטריה, הכיוון וסטטוס המעקב שלו.
פרטי המטוס ממוינים ביחס למרחב הבסיס בזמן הקריאה ל-xrGetTrackablePlaneANDROID באמצעות XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמפעילים את xrGetTrackablePlaneANDROID trackableTrackerחייב להיות מזהה XrTrackableTrackerANDROID חוקיgetInfoחייב להיות הפניה למבנה חוקי של XrTrackableGetInfoANDROIDplaneOutputחייב להיות הפניה למבנה XrTrackablePlaneANDROID
קודי החזרה
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_LIMIT_REACHEDXR_ERROR_TIME_INVALID
המבנה XrTrackableGetInfoANDROID מוגדר כך:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
תיאורי חברים
typeהוא XrStructureType של המבנה הזה.nextהואNULLאו הפניה למבנה הבא בשרשרת המבנים. אין מבנים כאלה מוגדרים ב-OpenXR או בתוסף הזה.trackableהוא המטוסXrTrackableANDROIDשרוצים לשלוח עליו שאילתה.baseSpaceתנוחת המטוס תהיה ביחס ל-XrSpace הזה ב-time.timeהואXrTimeשבו צריך להעריך את הקואורדינטות ביחס ל-baseSpace.
המבנה XrTrackableGetInfoANDROID מספק אפשרויות לשאילתות כשהוא מועבר אל xrGetTrackablePlaneANDROID. הערך של trackable
חייב להתאים לערך של trackableTracker שמופיע ב-xrGetTrackablePlaneANDROID.
הערך XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID יוחזר אם הסוג שניתן למעקב של trackable הוא לא XR_TRACKABLE_TYPE_PLANE_ANDROID.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמשתמשים ב-XrTrackableGetInfoANDROID - הערך של
typeחייב להיותXR_TYPE_TRACKABLE_GET_INFO_ANDROID nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת המבניםbaseSpaceחייב להיות כינוי חוקי ב-XrSpace
המבנה XrTrackablePlaneANDROID מוגדר כך:
typedef struct XrTrackablePlaneANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent2Df extents;
XrPlaneTypeANDROID planeType;
XrPlaneLabelANDROID planeLabel;
XrTrackableANDROID subsumedByPlane;
XrTime lastUpdatedTime;
uint32_t vertexCapacityInput;
uint32_t* vertexCountOutput;
XrVector2f* vertices;
} XrTrackablePlaneANDROID;
תיאורי חברים
typeהוא XrStructureType של המבנה הזה.nextהואNULLאו הפניה למבנה הבא בשרשרת המבנים. אין מבנים כאלה מוגדרים ב-OpenXR או בתוסף הזה.trackingStateהוא XrTrackingStateANDROID של המטוס.centerPoseהוא XrPosef שמגדיר את המיקום והכיוון של המטוס בתוך מסגרת העזר של XrTrackableGetInfoANDROID::baseSpace התואם. כאן, כיוון זהות מייצג צירי קואורדינטות עם Y+ מקביל לנורמלית של המישן.extentsהוא המאפיין XrExtent2Df של המטוס.planeTypeהוא הערך של XrPlaneTypeANDROID שהוגדר למטוס הזה בסביבת זמן הריצה.planeLabelהוא הערך של XrPlaneLabelANDROID שהוגדר למטוס הזה בסביבת זמן הריצה.subsumedByPlaneהואXrTrackableANDROIDשל המישן שמכיל את המישן הזה (XR_NULL_TRACKABLE_ANDROIDאם לא קיים כזה).lastUpdatedTimeהואXrTimeשל העדכון האחרון של המטוס.vertexCapacityInputהוא הקיבולת של מערךvertices, או 0 כדי לציין בקשה לאחזור הקיבולת הנדרשת.vertexCountOutputהוא הפניה למספר הפעמים ש-verticesנכתב, או הפניה לקיבולת הנדרשת במקרה ש-verticesלא מספיק.verticesהוא הפניה למערך של XrVector2f. הערך יכול להיותNULLאם הערך שלvertexCapacityInputהוא 0. הקודקודים מופיעים בסדר נגד כיוון השעון. הפוליגון יכול להיות קעור, ואסור שהוא יתחכך בעצמו.- בקטע פרמטרים של גודל מאגר מפורט תיאור של אחזור הגודל הנדרש של
vertices.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמשתמשים ב-XrTrackablePlaneANDROID - הערך של
typeחייב להיותXR_TYPE_TRACKABLE_PLANE_ANDROID nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת המבניםtrackingStateחייב להיות ערך חוקי של XrTrackingStateANDROID- הערך של
planeTypeחייב להיות ערך חוקי של XrPlaneTypeANDROID planeLabelחייב להיות ערך חוקי של XrPlaneLabelANDROIDvertexCountOutputחייב להיות הפניה לערךuint32_tverticesחייב להיות הפניה למערך של מבניvertexCapacityInputXrVector2f- הפרמטר
vertexCapacityInputחייב להיות גדול מ-0
המאפיין המסווג XrTrackingStateANDROID מתאר את סטטוס המעקב של XrTrackableANDROID.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
תיאור |
|
|
מציין שהמעקב אחר הרכיבים שניתן לעקוב אחריהם או אחר הרכיבים המוצמדים מושהה, אבל יכול להימשך בעתיד. |
|
המעקב אחר הפריט הזה הופסק ולא יחודש לעולם. |
|
האובייקט במעקב והתנוחה שלו עדכנית. |
המאפיין XrPlaneTypeANDROID הוא הסוג של המטוס XrTrackableANDROID.
typedef enum XrPlaneTypeANDROID {
XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;
המאפיין XrPlaneLabelANDROID הוא תווית של מישור XrTrackableANDROID.
typedef enum XrPlaneLabelANDROID {
XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
XR_PLANE_LABEL_WALL_ANDROID = 1,
XR_PLANE_LABEL_FLOOR_ANDROID = 2,
XR_PLANE_LABEL_CEILING_ANDROID = 3,
XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;
יצירת מרחב משותף מרכזי
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
תיאורי פרמטרים
sessionהוא XrSession שיוצר את מרחב העוגן.createInfoהוא הפניה למבנה XrAnchorSpaceCreateInfoANDROID שמכיל פרמטרים שישמשו ליצירת מרחב העוגן.anchorOutputהוא הפניה למזהה שבו מוחזר XrSpace שנוצר.
בכל שלב, אפשר לעקוב אחרי המיקום והכיוון של הצ'אט או להפסיק את המעקב אחריהם. כלומר, צריך להגדיר את XR_SPACE_LOCATION_POSITION_TRACKED_BIT ואת XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT או לנקות את שניהם כשהאפליקציה קוראת ל-xrLocateSpace או ל-xrLocateSpaces עבור anchorOutput.
האפליקציה חייבת לפנות את XrSpace המוחזר באמצעות xrDestroySpace.
- צריך להחזיר את הערך
XR_ERROR_FEATURE_UNSUPPORTEDאם המערכת לא תומכת בעוגנים. - צריך להחזיר את הערך
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDאם אין תמיכה בקובץ המוצמד הספציפי של העוגן.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמפעילים את xrCreateAnchorSpaceANDROID sessionחייב להיות מזהה XrSession חוקיcreateInfoחייב להיות הפניה למבנה תקין של XrAnchorSpaceCreateInfoANDROIDanchorOutputחייב להיות מציין לכינוי XrSpace
קודי החזרה
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_POSE_INVALIDXR_ERROR_TIME_INVALIDXR_ERROR_OUT_OF_MEMORY
המבנה XrAnchorSpaceCreateInfoANDROID מוגדר כך:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
תיאורי חברים
typeהוא XrStructureType של המבנה הזה.nextהואNULLאו הפניה למבנה הבא בשרשרת המבנים. אין מבנים כאלה מוגדרים ב-OpenXR או בתוסף הזה.spaceהוא XrSpace שבו תיווצר העוגן.timeהואXrTimeשל יצירת העוגן.poseהוא XrPosef של העוגן.trackableהוא ה-XrTrackableANDROIDשאליו יצורף האוגר. יכול להיות ש-XR_NULL_TRACKABLE_ANDROIDיוצר עוגן מרחבי.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_trackablesלפני שמשתמשים ב-XrAnchorSpaceCreateInfoANDROID - הערך של
typeחייב להיותXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת המבניםspaceחייב להיות כינוי חוקי ב-XrSpace
קוד לדוגמה לאחזור כל הפריטים שניתן לעקוב אחריהם
הקוד לדוגמה הבא מראה איך לקבל את כל הפריטים שניתן לעקוב אחריהם מסוג נתון.
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allPlaneTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allPlaneTrackables) {
// You now have all trackables of the specified type.
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);
קוד לדוגמה לאיתור מטוס שניתן לעקוב אחריו
בקוד לדוגמה הבא מוסבר איך לקבל מטוס שניתן לעקוב אחריו מ-XrTrackableANDROID קיים, שנוצר כתוצאה מהיט XR_ANDROID_raycast או xrGetTrackablesANDROID.
XrTrackableTrackerANDROID planeTracker; // previously created
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;
XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
planeTracker,
&planeGetInfo,
&plane
);
if (result == XR_SUCCESS) {
// Plane tracking state, center pose, extents, type now available in plane.
}
קוד לדוגמה ליצירת מרחב עגינה
הקוד לדוגמה הבא מראה איך יוצרים מרחב מרכזי שמצורף לנכס שניתן למעקב.
XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };
XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&spatialAnchorCreateInfo,
&spatialAnchor
);
// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;
XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&trackableAnchorCreateInfo,
&trackableAnchor
);
while (true) {
// app update loop
// ...
// Get the current location of the anchor's space w.r.t the world.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);
if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
// Update anchor pose.
doDrawingForAnchor(anchorLocation.pose);
} else {
// ...
}
}
// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);
סוגים חדשים של בסיסים
סוגי אובייקטים חדשים
קבועים חדשים של Enum
המניין XrStructureType הורחב עם:
XR_TYPE_TRACKABLE_GET_INFO_ANDROIDXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_TRACKABLE_PLANE_ANDROIDXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
המניין XrObjectType הורחב עם:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
המניין XrResult הורחב עם:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
משתני Enum חדשים
מבנים חדשים
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
פונקציות חדשות
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
בעיות
היסטוריית הגרסאות
- גרסה 1, 27 בספטמבר 2024 (Kenny Vercaemer)
- תיאור ראשוני של התוסף.
OpenXR™ והלוגו של OpenXR הם סימנים מסחריים בבעלות The Khronos Group Inc., והם רשומים כסימנים מסחריים בסין, באיחוד האירופי, ביפן ובבריטניה.