XR_ANDROID_eye_tracking

Name String

XR_ANDROID_eye_tracking

एक्सटेंशन का टाइप

इंस्टेंस एक्सटेंशन

रजिस्टर किया गया एक्सटेंशन नंबर

457

बदलाव

1

पुष्टि की स्थिति

मंज़ूरी नहीं मिली

एक्सटेंशन और वर्शन डिपेंडेंसी

OpenXR 1.0

पिछली बार बदलाव किए जाने की तारीख

2025-01-17

आईपी स्टेटस

बौद्धिक संपत्ति से जुड़े किसी दावे की जानकारी नहीं है.

योगदान देने वाले

स्पेंसर क्विन, Google
जैरेड फ़ाइंडर, Google
लेवाना चेन, Google
केनी वर्केमर, Google
प्रशांति गुरुमूर्ति, Google
निहाव जैन, Google

खास जानकारी

इस एक्सटेंशन की मदद से, ऐप्लिकेशन उपयोगकर्ता की आंखों की पोज़िशन और ओरिएंटेशन के साथ-साथ, आई ट्रैकिंग की सुविधा की जानकारी हासिल कर सकते हैं.

आई ट्रैकिंग का डेटा दो मोड में उपलब्ध होता है: सामान्य और सटीक. कोर्स ट्रैकिंग से, उपयोगकर्ता की आंखों की पोज़िशन का अनुमान लगाया जाता है. वहीं, फ़ाइन ट्रैकिंग से ज़्यादा सटीक अनुमान लगाया जाता है. कोर्स ट्रैकिंग का इस्तेमाल उन ऐप्लिकेशन के लिए किया जाता है जो अवतार जैसा बुनियादी प्रज़ेंटेशन देना चाहते हैं. वहीं, फ़ाइन ट्रैकिंग का इस्तेमाल ज़्यादा सटीक ऐप्लिकेशन के लिए किया जाता है.

इंटरैक्शन के लिए, XR_EXT_eye_gaze_interaction का इस्तेमाल किया जाना चाहिए.

अनुमतियां

Android ऐप्लिकेशन के मेनिफ़ेस्ट में, android.permission.EYE_TRACKING_COARSE या android.permission.EYE_TRACKING_FINE की अनुमति शामिल होनी चाहिए. इन अनुमतियों को खतरनाक अनुमतियां माना जाता है. इन फ़ंक्शन का इस्तेमाल करने के लिए, ऐप्लिकेशन को रनटाइम के दौरान अनुमति का अनुरोध करना होगा:

(सुरक्षा का लेवल: खतरनाक)

सिस्टम की क्षमता की जांच करना

XrSystemEyeTrackingPropertiesANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrSystemEyeTrackingPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsEyeTracking;
} XrSystemEyeTrackingPropertiesANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • supportsEyeTracking एक XrBool32 है, जो यह बताता है कि मौजूदा सिस्टम में आई ट्रैकिंग की सुविधा काम करती है या नहीं.

कोई ऐप्लिकेशन यह जांच कर सकता है कि सिस्टम में आई ट्रैकिंग की सुविधा काम करती है या नहीं. इसके लिए, xrGetSystemProperties को कॉल करते समय, XrSystemProperties को XrSystemEyeTrackingPropertiesANDROID स्ट्रक्चर के साथ एक्सटेंड करना होगा.

अगर रनटाइम, supportsEyeTracking के लिए XR_FALSE दिखाता है, तो रनटाइम को xrCreateEyeTrackerANDROID से XR_ERROR_FEATURE_UNSUPPORTED दिखाना ज़रूरी है .

सही इस्तेमाल (इंप्लिसिट)

आई ट्रैकर हैंडल बनाना

XR_DEFINE_HANDLE(XrEyeTrackerANDROID)

XrEyeTrackerANDROID हैंडल, आई ट्रैकिंग की सुविधा को दिखाता है. यह आंखों को ट्रैक करता है और सटीक तरीके से मैप करता है कि उपयोगकर्ता कहां देख रहा है.

आई ट्रैकिंग की सुविधा का डेटा, संवेदनशील निजी जानकारी होती है. यह डेटा, निजी निजता और अखंडता से जुड़ा होता है. हमारा सुझाव है कि आई ट्रैकिंग की सुविधा का डेटा सेव या ट्रांसफ़र करने वाले ऐप्लिकेशन, उपयोगकर्ता से हमेशा साफ़ तौर पर अनुमति लें.

ऐप्लिकेशन, इस हैंडल का इस्तेमाल करके आई ट्रैकिंग की सुविधा का डेटा ऐक्सेस करता है. इसके लिए, वह इस एक्सटेंशन में मौजूद अन्य फ़ंक्शन का इस्तेमाल करता है.

आई ट्रैकिंग की सुविधा, सीन में आंखों के पोज़ और स्टेटस को दिखाती है.

xrCreateEyeTrackerANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrCreateEyeTrackerANDROID(
    XrSession                                   session,
    const XrEyeTrackerCreateInfoANDROID*        createInfo,
    XrEyeTrackerANDROID*                        eyeTracker);

पैरामीटर की जानकारी

  • session एक XrSession हैंडल है, जिसमें आई ट्रैकिंग की सुविधा चालू होगी.
  • createInfo, XrEyeTrackerCreateInfoANDROID है. इसका इस्तेमाल, आई ट्रैकिंग की सुविधा के बारे में बताने के लिए किया जाता है.
  • eyeTracker, XrEyeTrackerANDROID हैंडल है.

कोई ऐप्लिकेशन, xrCreateEyeTrackerANDROID फ़ंक्शन का इस्तेमाल करके, XrEyeTrackerANDROID हैंडल बनाता है.

अगर सिस्टम में आई ट्रैकिंग की सुविधा काम नहीं करती है, तो रनटाइम को xrCreateEyeTrackerANDROID से XR_ERROR_FEATURE_UNSUPPORTED दिखाना चाहिए .

सही इस्तेमाल (इंप्लिसिट)

  • xrCreateEyeTrackerANDROID को कॉल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन को चालू करना ज़रूरी है
  • session एक मान्य XrSession हैंडल होना चाहिए
  • createInfo को किसी मान्य XrEyeTrackerCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
  • eyeTracker को XrEyeTrackerANDROID हैंडल का पॉइंटर होना चाहिए

रिटर्न कोड

सफलता

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FEATURE_UNSUPPORTED
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

XrEyeTrackerCreateInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrEyeTrackerCreateInfoANDROID {
    XrStructureType    type;
    const void*        next;
} XrEyeTrackerCreateInfoANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.

XrEyeTrackerCreateInfoANDROID स्ट्रक्चर में, XrEyeTrackerANDROID हैंडल बनाने के लिए ज़रूरी जानकारी दी गई है.

सही इस्तेमाल (इंप्लिसिट)

xrDestroyEyeTrackerANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrDestroyEyeTrackerANDROID(
    XrEyeTrackerANDROID                         eyeTracker);

पैरामीटर की जानकारी

xrDestroyEyeTrackerANDROID फ़ंक्शन, आई ट्रैकिंग की सुविधा का इस्तेमाल खत्म होने पर, eyeTracker और उससे जुड़े संसाधनों को रिलीज़ कर देता है.

सही इस्तेमाल (इंप्लिसिट)

  • xrDestroyEyeTrackerANDROID को कॉल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन को चालू करना ज़रूरी है
  • eyeTracker एक मान्य XrEyeTrackerANDROID हैंडल होना चाहिए

Thread की सुरक्षा

  • eyeTracker और किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है

रिटर्न कोड

सफलता

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

आंखों की जानकारी पाना

xrGetCoarseTrackingEyesInfoANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrGetCoarseTrackingEyesInfoANDROID(
    XrEyeTrackerANDROID                         eyeTracker,
    const XrEyesGetInfoANDROID*                 getInfo,
    XrEyesANDROID*                              eyesOutput);

पैरामीटर की जानकारी

  • eyeTracker एक XrEyeTrackerANDROID है, जिसे पहले xrCreateEyeTrackerANDROID ने बनाया था.
  • getInfo, XrEyesGetInfoANDROID का पॉइंटर है. इसका इस्तेमाल, आंखों के पोज़ और स्थितियों के बारे में क्वेरी करने के लिए जानकारी देने के लिए किया जाता है.
  • eyesOutput, XrEyesANDROID का पॉइंटर है. इसमें आंखों की जानकारी शामिल होती है. जैसे, पोज़ और स्टेटस.

xrGetCoarseTrackingEyesInfoANDROID फ़ंक्शन, आंखों की स्थिति और पोज़ की जानकारी इस तरह से हासिल करता है कि उपयोगकर्ता की निजता बनी रहे.

अगर ऐप्लिकेशन के पास android.permission.EYE_TRACKING_COARSE अनुमति नहीं है, तो रनटाइम को XR_ERROR_PERMISSION_INSUFFICIENT दिखाना चाहिए.

आंखों के पोज़ को XrEyesGetInfoANDROID :: baseSpace में XrEyesGetInfoANDROID :: time पर दिखाया जाता है.

किसी भी समय, आंखों की पोज़िशन और दिशा को ट्रैक किया जा सकता है या नहीं. इसका मतलब है कि रनटाइम को दिए गए XrEyesANDROID :: eyes पर, XR_SPACE_LOCATION_POSITION_TRACKED_BIT और XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT, दोनों को सेट करना चाहिए या XR_SPACE_LOCATION_POSITION_TRACKED_BIT और XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT, दोनों को हटाना चाहिए. साथ ही, ट्रैकिंग की स्थितियों को दिखाने के लिए, XrEyesANDROID :: mode को सेट करना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

  • xrGetCoarseTrackingEyesInfoANDROID को कॉल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन चालू करना ज़रूरी है
  • eyeTracker एक मान्य XrEyeTrackerANDROID हैंडल होना चाहिए
  • getInfo को किसी मान्य XrEyesGetInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
  • eyesOutput को XrEyesANDROID स्ट्रक्चर का पॉइंटर होना चाहिए

रिटर्न कोड

सफलता

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

xrGetFineTrackingEyesInfoANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrGetFineTrackingEyesInfoANDROID(
    XrEyeTrackerANDROID                         eyeTracker,
    const XrEyesGetInfoANDROID*                 getInfo,
    XrEyesANDROID*                              eyesOutput);

पैरामीटर की जानकारी

  • eyeTracker एक XrEyeTrackerANDROID है, जिसे पहले xrCreateEyeTrackerANDROID ने बनाया था.
  • getInfo, XrEyesGetInfoANDROID का एक पॉइंटर है. इसका इस्तेमाल यह बताने के लिए किया जाता है कि कौनसा आउटपुट ज़रूरी है.
  • eyesOutput, XrEyesANDROID का पॉइंटर है. इसमें आंखों की जानकारी शामिल होती है. जैसे, पोज़ और स्टेटस.

xrGetFineTrackingEyesInfoANDROID फ़ंक्शन, xrGetCoarseTrackingEyesInfoANDROID की तुलना में, आंखों की स्थिति और पोज़ की जानकारी ज़्यादा सटीक तरीके से देता है.

अगर ऐप्लिकेशन के पास android.permission.EYE_TRACKING_FINE अनुमति नहीं है, तो रनटाइम को XR_ERROR_PERMISSION_INSUFFICIENT दिखाना चाहिए.

XrEyesGetInfoANDROID :: time , XrEyesGetInfoANDROID :: baseSpace का इस्तेमाल करके, xrGetFineTrackingEyesInfoANDROID को कॉल करने के समय, आंखों की जानकारी को रिज़ॉल्व किया जाता है और बेस स्पेस के हिसाब से सेट किया जाता है. कॉल के समय, रनटाइम को XrEyesGetInfoANDROID :: baseSpace से तय की गई जगह की जानकारी ज़रूर देनी चाहिए.

किसी भी समय, आंखों की पोज़िशन और दिशा को ट्रैक किया जा सकता है या नहीं. इसका मतलब है कि रनटाइम को दिए गए XrEyesANDROID :: eyes पर, XR_SPACE_LOCATION_POSITION_TRACKED_BIT और XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT, दोनों को सेट करना चाहिए या XR_SPACE_LOCATION_POSITION_TRACKED_BIT और XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT, दोनों को हटाना चाहिए. साथ ही, ट्रैकिंग की स्थितियों को दिखाने के लिए, XrEyesANDROID :: mode को सेट करना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

  • xrGetFineTrackingEyesInfoANDROID को कॉल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन चालू करना ज़रूरी है
  • eyeTracker एक मान्य XrEyeTrackerANDROID हैंडल होना चाहिए
  • getInfo को किसी मान्य XrEyesGetInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
  • eyesOutput को XrEyesANDROID स्ट्रक्चर का पॉइंटर होना चाहिए

रिटर्न कोड

सफलता

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_TIME_INVALID
  • XR_ERROR_VALIDATION_FAILURE

XrEyesGetInfoANDROID स्ट्रक्चर में, आंखों के पोज़ और स्थितियों को वापस पाने के लिए ज़रूरी जानकारी होती है.

typedef struct XrEyesGetInfoANDROID {
    XrStructureType    type;
    const void*        next;
    XrTime             time;
    XrSpace            baseSpace;
} XrEyesGetInfoANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • time वह XrTime है जिस पर baseSpace के हिसाब से कोऑर्डिनेट का आकलन किया जाता है.
  • baseSpace वह XrSpace है जिसमें आंखों के पोज़ की जानकारी मिलती है.

सही इस्तेमाल (इंप्लिसिट)

XrEyesANDROID स्ट्रक्चर में, ट्रैक की गई आंखों की जानकारी होती है.

typedef struct XrEyesANDROID {
    XrStructureType             type;
    void*                       next;
    XrEyeANDROID                eyes[XR_EYE_MAX_ANDROID];
    XrEyeTrackingModeANDROID    mode;
} XrEyesANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • eyes, XrEyeANDROID का एक कलेक्शन है. इसका साइज़ XR_EYE_MAX_ANDROID है. यह बाईं और दाईं आंख के लिए है, जिसे XrEyeIndexANDROID ने इंडेक्स किया है.
  • mode, XrEyeTrackingModeANDROID है. इससे पता चलता है कि फ़िलहाल कौनसी आंखें ट्रैक की जा रही हैं.

सही इस्तेमाल (इंप्लिसिट)

  • XrEyesANDROID का इस्तेमाल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन को चालू करना ज़रूरी है
  • type की वैल्यू XR_TYPE_EYES_ANDROID होनी चाहिए
  • next NULL या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
  • eyes का कोई भी एलिमेंट, मान्य XrEyeANDROID स्ट्रक्चर होना चाहिए
  • mode को XrEyeTrackingModeANDROID की मान्य वैल्यू होना चाहिए

XrEyeANDROID स्ट्रक्चर, आंख की स्थिति, पोज़िशन, और ओरिएंटेशन के बारे में बताता है.

typedef struct XrEyeANDROID {
    XrEyeStateANDROID    eyeState;
    XrPosef              eyePose;
} XrEyeANDROID;

सदस्यों की जानकारी

  • eyeState, आंख की XrEyeStateANDROID है.
  • eyePose एक XrPosef है, जो XrEyesGetInfoANDROID :: baseSpace के रेफ़रंस फ़्रेम में, आंख की पुतली की पोज़िशन और ओरिएंटेशन के बारे में बताता है. यहां आइडेंटिटी ओरिएंटेशन, कोऑर्डिनेट ऐक्सिस को दिखाता है. इसमें +Z उपयोगकर्ता की आंखों की तरफ़, +X दाईं ओर, और +Y ऊपर की ओर होता है.

सही इस्तेमाल (इंप्लिसिट)

  • XrEyeANDROID का इस्तेमाल करने से पहले, XR_ANDROID_eye_tracking एक्सटेंशन को चालू करना ज़रूरी है
  • eyeState की वैल्यू, XrEyeStateANDROID की मान्य वैल्यू होनी चाहिए

XrEyeStateANDROID एन्यूमरेशन, ट्रैक की गई आंखों की अलग-अलग स्थितियों की पहचान करता है.

typedef enum XrEyeStateANDROID {
    XR_EYE_STATE_INVALID_ANDROID = 0,
    XR_EYE_STATE_GAZING_ANDROID = 1,
    XR_EYE_STATE_SHUT_ANDROID = 2,
    XR_EYE_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeStateANDROID;

इन enum का मतलब यह है:

Enum की जानकारी

XR_EYE_STATE_INVALID_ANDROID

इससे पता चलता है कि आई ट्रैकिंग की सुविधा में कोई गड़बड़ी है या यह सुविधा मौजूद नहीं है.

XR_EYE_STATE_GAZING_ANDROID

इससे पता चलता है कि आंखें फ़िलहाल स्क्रीन पर देख रही हैं.

XR_EYE_STATE_SHUT_ANDROID

इससे पता चलता है कि आंखें झपकाने या बंद करने की वजह से, फ़िलहाल आंखें बंद हैं.

XrEyeIndexANDROID एन्यूमरेशन, बाईं या दाईं आंख के इंडेक्स की पहचान करता है.

typedef enum XrEyeIndexANDROID {
    XR_EYE_INDEX_LEFT_ANDROID = 0,
    XR_EYE_INDEX_RIGHT_ANDROID = 1,
    XR_EYE_INDEX_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeIndexANDROID;

इन enum का मतलब यह है:

Enum की जानकारी

XR_EYE_INDEX_LEFT_ANDROID

बाईं आंख.

XR_EYE_INDEX_RIGHT_ANDROID

दाईं आंख.

XrEyeTrackingModeANDROID एन्यूमरेशन, ट्रैक की गई आंखों की अलग-अलग स्थितियों की पहचान करता है.

typedef enum XrEyeTrackingModeANDROID {
    XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID = 0,
    XR_EYE_TRACKING_MODE_RIGHT_ANDROID = 1,
    XR_EYE_TRACKING_MODE_LEFT_ANDROID = 2,
    XR_EYE_TRACKING_MODE_BOTH_ANDROID = 3,
    XR_EYE_TRACKING_MODE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrEyeTrackingModeANDROID;

इन enum का मतलब यह है:

Enum की जानकारी

XR_EYE_TRACKING_MODE_NOT_TRACKING_ANDROID

इससे पता चलता है कि फ़िलहाल, आई ट्रैकिंग की सुविधा चालू नहीं है.

XR_EYE_TRACKING_MODE_RIGHT_ANDROID

इससे पता चलता है कि सिर्फ़ दाईं आंख को ट्रैक किया जा रहा है.

XR_EYE_TRACKING_MODE_LEFT_ANDROID

इससे पता चलता है कि सिर्फ़ बाईं आंख को ट्रैक किया जा रहा है.

XR_EYE_TRACKING_MODE_BOTH_ANDROID

इससे पता चलता है कि बाईं और दाईं, दोनों आंखों को ट्रैक किया जा रहा है.

#define XR_EYE_MAX_ANDROID                2

XR_EYE_MAX_ANDROID, आंखों की वह ज़्यादा से ज़्यादा संख्या है जिसके लिए XrEyeANDROID डेटा रिपोर्ट किया जाता है.

आई ट्रैकिंग की सुविधा के लिए कोड का उदाहरण

यहां दिए गए सैंपल कोड में, व्यू स्पेस के हिसाब से आंखों की जानकारी पाने का तरीका बताया गया है.

XrSession session; // previously initialized, e.g. created at app startup.
XrSpace viewSpace; // space created for XR_REFERENCE_SPACE_TYPE_VIEW.

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateEyeTrackerANDROID xrCreateEyeTrackerANDROID; // previously initialized
PFN_xrDestroyEyeTrackerANDROID xrDestroyEyeTrackerANDROID; // previously initialized
PFN_xrGetCoarseTrackingEyesInfoANDROID xrGetCoarseTrackingEyesInfoANDROID; // previously initialized
PFN_xrGetFineTrackingEyesInfoANDROID xrGetFineTrackingEyesInfoANDROID; // previously initialized

// This will use the XrSession that is bound to the eye tracker done at time of creation.
XrEyeTrackerANDROID eyeTracker;
XrEyeTrackerCreateInfoANDROID createInfo{
    .type = XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID,
    .next = nullptr};
CHK_XR(xrCreateEyeTrackerANDROID(session, &createInfo, &eyeTracker));

while (1) {
    // ...
    // For every frame in frame loop
    // ...

    XrFrameState frameState;  // previously returned from xrWaitFrame
    const XrTime time = frameState.predictedDisplayTime;
    XrEyesANDROID fineEyesInfo{.type = XR_TYPE_EYES_ANDROID,
                               .next = nullptr,
                               .mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
    XrEyesANDROID coarseEyesInfo{.type = XR_TYPE_EYES_ANDROID,
                                 .next = nullptr,
                                 .mode = XR_EYE_TRACKING_MODE_BOTH_ANDROID};
    XrEyesGetInfoANDROID eyesGetInfo{.type = XR_TYPE_EYES_GET_INFO_ANDROID,
                                     .next = nullptr,
                                     .time = time,
                                     .baseSpace = viewSpace};
    CHK_XR(xrGetCoarseTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &coarseEyesInfo));
    CHK_XR(xrGetFineTrackingEyesInfoANDROID(eyeTracker, &eyesGetInfo, &fineEyesInfo));

    // eyes tracking information is now available:
    // drawLeftEye(eyesInfo.eyes[XR_EYE_INDEX_LEFT_ANDROID].eyePose);
    // drawRightEye(eyesInfo.eyes[XR_EYE_INDEX_RIGHT_ANDROID].eyePose);

    // ...
    // Finish frame loop
    // ...
}

// after usage
CHK_XR(xrDestroyEyeTrackerANDROID(eyeTracker));

नए ऑब्जेक्ट टाइप

नए निर्देश

नए स्ट्रक्चर

नए Enum

नए Enum कॉन्सटेंट

  • XR_ANDROID_EYE_TRACKING_EXTENSION_NAME
  • XR_ANDROID_eye_tracking_SPEC_VERSION
  • XR_EYE_MAX_ANDROID
  • XrObjectType को एक्सटेंड करना :

    • XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
  • XrStructureType को एक्सटेंड करना :

    • XR_TYPE_EYES_ANDROID
    • XR_TYPE_EYES_GET_INFO_ANDROID
    • XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID
    • XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_ANDROID

समस्याएं

वर्शन हिस्ट्री

  • संशोधन 1, 17-01-2025 (केनी वर्केमर)

    • एक्सटेंशन का शुरुआती ब्यौरा