Name String
XR_ANDROID_trackables_object
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
467
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव करने की तारीख
2024-11-01
आईपी का स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
डिएगो टिपाल्दी, Google
डेविड जोसेफ़ टैन, Google
क्रिस्टोफ़र डोअर, Google
स्पेंसर क्विन, Google
जेरेड फ़ाइंडर, Google
लेवाना चेन, Google
केनी वर्कमेयर, Google
खास जानकारी
यह एक्सटेंशन, किसी ऑब्जेक्ट को ट्रैक करने की सुविधा चालू करता है. उदाहरण के लिए, कीबोर्ड, माउस, और आस-पास मौजूद अन्य ऑब्जेक्ट.
ऑब्जेक्ट ट्रैक करना
यह एक्सटेंशन, XrTrackableTypeANDROID में XR_TRACKABLE_TYPE_OBJECT_ANDROID जोड़ता है.
ऐप्लिकेशन, ऑब्जेक्ट को ट्रैक करने के लिए, xrCreateTrackableTrackerANDROID को कॉल करके XrTrackableTrackerANDROID बना सकता है. साथ ही, XrTrackableTrackerCreateInfoANDROID::trackableType में ट्रैक किए जा सकने वाले टाइप के तौर पर XR_TRACKABLE_TYPE_OBJECT_ANDROID तय कर सकता है.
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 जोड़कर, एक और कॉन्फ़िगरेशन सेट कर सकता है. activeLabels से मैच करने के लिए, xrGetAllTrackablesANDROID से मिलने वाले आउटपुट को फ़िल्टर किया जाएगा.
अगर ऐप्लिकेशन XrTrackableObjectConfigurationANDROID सेट नहीं करता है, तो सिस्टम की पहचान किए गए सभी ऑब्जेक्ट ट्रैक किए जाएंगे.
मान्य इस्तेमाल (इंप्लिसिट)
XrTrackableObjectANDROIDका इस्तेमाल करने से पहले,XR_ANDROID_trackables_objectएक्सटेंशन चालू होना ज़रूरी हैtypeहोनी चाहिएXR_TYPE_TRACKABLE_OBJECT_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए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स्ट्रक्चर का पॉइंटर होना चाहिएobjectOutputXrTrackableObjectANDROIDस्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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_ANDROIDnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए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 Constant
XrStructureType एनोटेशन के लिए, इन एलिमेंट का इस्तेमाल किया जा सकता है:
XR_TYPE_TRACKABLE_OBJECT_ANDROIDXR_TYPE_TRACKABLE_OBJECT_CONFIGURATION_ANDROID
XrTrackableTypeANDROID एनोटेशन के लिए, इन एलिमेंट का इस्तेमाल किया जा सकता है:
XR_TRACKABLE_TYPE_OBJECT_ANDROID
नए Enums
नए स्ट्रक्चर
नए फ़ंक्शन
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 03-10-2024 (कैनी वर्कमेयर)
- एक्सटेंशन का शुरुआती ब्यौरा.
OpenXR™ और OpenXR लोगो, The Khronos Group Inc. के मालिकाना हक वाले ट्रेडमार्क हैं. ये चीन, यूरोपीय संघ, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किए गए हैं.