Name String
XR_ANDROID_avatar_eyes
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
457
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव करने की तारीख
2024-09-30
आईपी स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
स्पेंसर क्विन, Google
जेरेड फ़ाइंडर, Google
लेवाना चेन, Google
खास जानकारी
इस एक्सटेंशन की मदद से, ऐप्लिकेशन उपयोगकर्ता की आंखों की स्थिति और ओरिएंटेशन के साथ-साथ, आंखों को ट्रैक करने की स्थिति का पता लगा सकते हैं.
इस एक्सटेंशन का मकसद, अवतारों की आंखों की पोज़िशन और स्थिति को ज़्यादा असली दिखाना है. इसके लिए:
- इससे, ट्रैक नहीं की गई स्थितियों को भी ट्रैक किया जा सकता है. जैसे, झपकना.
- इससे, एक आँख या दोनों आँखों से ट्रैकिंग की जा सकती है.
इस एक्सटेंशन का इस्तेमाल, आंखों की गति को ट्रैक करने के दूसरे कामों के लिए नहीं किया जाना चाहिए. इंटरैक्शन के लिए, XR_EXT_eye_gaze_interaction
का इस्तेमाल किया जाना चाहिए.
आई ट्रैकर
आइ ट्रैकर एक सेंसिंग डिवाइस है, जो आंखों को ट्रैक करता है और यह सटीक तौर पर मैप करता है कि उपयोगकर्ता कहां देख रहा है. इस एक्सटेंशन का मुख्य मकसद, वर्चुअल सीन में उपयोगकर्ता की नज़र को उनके अवतार पर मैप करना है.
आंखों की गतिविधियों को ट्रैक करने से जुड़ा डेटा, संवेदनशील निजी जानकारी हो सकती है. साथ ही, यह निजी निजता और भरोसे से जुड़ा होता है. हमारा सुझाव है कि जिन ऐप्लिकेशन में आंखों की गतिविधियों को ट्रैक करने वाला डेटा सेव या ट्रांसफ़र किया जाता है वे हमेशा उपयोगकर्ता से इसकी अनुमति लें.
- ऐक्टिव आई ट्रैकर बनाने की कोशिश करने पर, ऐप्लिकेशन को
XR_ERROR_PERMISSION_INSUFFICIENT
मिलेगा. ऐसा तब तक होगा, जब तक ऐप्लिकेशन को आई ट्रैकर का ऐक्सेस नहीं मिल जाता.
सिस्टम की क्षमता की जांच करना
कोई ऐप्लिकेशन, xrGetSystemProperties को कॉल करते समय, XrSystemAvatarEyesPropertiesANDROID स्ट्रक्चर को XrSystemProperties से जोड़कर, यह जांच कर सकता है कि सिस्टम में अवतार की आंखें काम करती हैं या नहीं. अगर supportsAvatarEyes
, XR_FALSE
दिखाता है, तो ऐप्लिकेशन को xrCreateEyeTrackerANDROID से XR_ERROR_FEATURE_UNSUPPORTED
मिलेगा.
typedef struct XrSystemAvatarEyesPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsAvatarEyes;
} XrSystemAvatarEyesPropertiesANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.supportsAvatarEyes
एकXrBool32
है, जो यह दिखाता है कि मौजूदा सिस्टम में अवतार की आंखें दिखती हैं या नहीं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrSystemAvatarEyesPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए type
होनी चाहिएXR_TYPE_SYSTEM_AVATAR_EYES_PROPERTIES_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
आइ ट्रैकर हैंडल बनाना
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_avatar_eyes
एक्सटेंशन चालू होना चाहिए session
यह एक मान्य XrSession हैंडल होना चाहिएcreateInfo
यह, XrEyeTrackerCreateInfoANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिएeyeTracker
XrEyeTrackerANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
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_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XrEyeTrackerCreateInfoANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrEyeTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
} XrEyeTrackerCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.
XrEyeTrackerCreateInfoANDROID स्ट्रक्चर में, XrEyeTrackerANDROID हैंडल बनाने के लिए ज़रूरी जानकारी दी गई है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrEyeTrackerCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए type
होनी चाहिएXR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
xrDestroyEyeTrackerANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroyEyeTrackerANDROID(
XrEyeTrackerANDROID eyeTracker);
पैरामीटर की जानकारी
eyeTracker
एक XrEyeTrackerANDROID है, जिसे पहले xrCreateEyeTrackerANDROID से बनाया गया था.
xrDestroyEyeTrackerANDROID फ़ंक्शन, आंखों की गति को ट्रैक करने की सुविधाएं इस्तेमाल करने के बाद, eyeTracker
और उससे जुड़े संसाधनों को रिलीज़ कर देता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyEyeTrackerANDROID को कॉल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए eyeTracker
XrEyeTrackerANDROID हैंडल मान्य होना चाहिए
थ्रेड की सुरक्षा
eyeTracker
और किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
आंखों की जानकारी पाना
xrGetEyesInfoANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrGetEyesInfoANDROID(
XrEyeTrackerANDROID eyeTracker,
const XrEyesGetInfoANDROID* getInfo,
XrEyesANDROID* infoOutput);
पैरामीटर की जानकारी
eyeTracker
एक XrEyeTrackerANDROID है, जिसे पहले xrCreateEyeTrackerANDROID से बनाया गया था.getInfo
, XrEyesGetInfoANDROID का पॉइंटर है. इसका इस्तेमाल यह बताने के लिए किया जाता है कि किस तरह का आउटपुट चाहिए.infoOutput
, XrEyesANDROID का पॉइंटर है. इसमें आंखों की जानकारी होती है. जैसे, पोज़ और स्थितियां.
xrGetEyesInfoANDROID फ़ंक्शन, आंखों की स्थिति और पोज़ की जानकारी पाता है.
xrGetEyesInfoANDROID को कॉल करने के समय, आंखों की जानकारी को हल किया जाता है और इसे बेस स्पेस के हिसाब से दिखाया जाता है. इसके लिए, XrEyesGetInfoANDROID::time, XrEyesGetInfoANDROID::baseSpace का इस्तेमाल किया जाता है.
किसी भी समय, आंखों की स्थिति और दिशा, दोनों को ट्रैक किया जाता है या ट्रैक नहीं किया जाता. इसका मतलब है कि ऐप्लिकेशन को उम्मीद है कि दिए गए XrEyesANDROID::eyes पर, XR_SPACE_LOCATION_POSITION_TRACKED_BIT
और XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT
, दोनों को सेट या हटाया जाएगा. साथ ही, XrEyesANDROID::mode से ट्रैकिंग की स्थितियों का पता चलेगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetEyesInfoANDROID को कॉल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए eyeTracker
XrEyeTrackerANDROID हैंडल मान्य होना चाहिएgetInfo
यह, XrEyesGetInfoANDROID के मान्य स्ट्रक्चर का पॉइंटर होना चाहिएinfoOutput
XrEyesANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_ERROR_TIME_INVALID
XrEyesGetInfoANDROID स्ट्रक्चर में, आंखों के पोज़ और स्थितियों को वापस पाने के लिए ज़रूरी जानकारी होती है.
typedef struct XrEyesGetInfoANDROID {
XrStructureType type;
void* next;
XrTime time;
XrSpace baseSpace;
} XrEyesGetInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.time
वहXrTime
है जिस परbaseSpace
के हिसाब से निर्देशांक का आकलन किया जाना है.baseSpace
time
पर, आंखों की पोज़िशन इस XrSpace के हिसाब से होगी.
मान्य इस्तेमाल (इंप्लिसिट)
- XrEyesGetInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए type
होनी चाहिएXR_TYPE_EYES_GET_INFO_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए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 का एक कलेक्शन है, जिसेXrEyeIndexANDROID
से इंडेक्स किया गया है.mode
, XrEyeTrackingModeANDROID है. इससे पता चलता है कि आंखों को ट्रैक किया जा रहा है या नहीं और कौनसी आंखों को ट्रैक किया जा रहा है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrEyesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए type
होनी चाहिएXR_TYPE_EYES_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएeyes
का कोई भी एलिमेंट, मान्य XrEyeANDROID स्ट्रक्चर होना चाहिएmode
XrEyeTrackingModeANDROID की वैल्यू मान्य होनी चाहिए
XrEyeANDROID स्ट्रक्चर, आंख की स्थिति, जगह, और ओरिएंटेशन के बारे में बताता है.
typedef struct XrEyeANDROID {
XrEyeStateANDROID eyeState;
XrPosef eyePose;
} XrEyeANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
eyeState
, किसी आंख का XrEyeStateANDROID है.pose
एक XrPosef है, जो उससे जुड़े XrEyesGetInfoANDROID::baseSpace के रेफ़रंस फ़्रेम में, किसी आंख के ऑरिजिन की पोज़िशन और ओरिएंटेशन तय करता है. यहां पहचान के ओरिएंटेशन में, उपयोगकर्ता की आंखों में +Z, दाईं ओर +X, और ऊपर +Y के साथ कोऑर्डिनेट ऐक्स दिखाया गया है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrEyeANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_avatar_eyes
एक्सटेंशन चालू होना चाहिए eyeState
की वैल्यू, XrEyeStateANDROID की मान्य वैल्यू होनी चाहिए
XrEyeStateANDROID एनोटेशन, ट्रैक की गई आंखों की अलग-अलग स्थितियों की पहचान करता है.
typedef enum XrEyeStateANDROID {
XR_EYE_STATE_INVALID_ANDROID = 0,
XR_EYE_STATE_GAZING_ANDROID = 1,
XR_EYE_STATE_SHUT_ANDROID = 2
} XrEyeStateANDROID;
वैल्यू के इन विकल्पों का मतलब यह है:
Enum |
ब्यौरा |
|
इससे पता चलता है कि आइकॉन में गड़बड़ी है या वह मौजूद नहीं है. |
|
इससे पता चलता है कि आंखें एकटक देख रही हैं. |
|
इससे पता चलता है कि पलक झपकने या आंख मारने की वजह से आंख बंद है. |
XrEyeIndexANDROID एनोटेशन, बाएं या दाएं आईरिस के इंडेक्स की पहचान करता है.
typedef enum XrEyeIndexANDROID {
XR_EYE_INDEX_LEFT_ANDROID = 0,
XR_EYE_INDEX_RIGHT_ANDROID = 1
} XrEyeIndexANDROID;
वैल्यू के इन विकल्पों का मतलब यह है:
Enum |
ब्यौरा |
|
बाईं आंख. |
|
दाईं आंख. |
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
} XrEyeTrackingModeANDROID;
वैल्यू के इन विकल्पों का मतलब यह है:
Enum |
ब्यौरा |
|
इससे पता चलता है कि आंखों की गतिविधियों को ट्रैक करने की सुविधा चालू नहीं है. |
|
इससे पता चलता है कि सिर्फ़ दाईं आंख ट्रैकिंग कर रही है. |
|
इससे पता चलता है कि सिर्फ़ बाईं आंख ट्रैकिंग कर रही है. |
|
इससे पता चलता है कि बाईं और दाईं, दोनों आंखें ट्रैक कर रही हैं. |
आंखों की गतिविधियों को ट्रैक करने के लिए कोड का उदाहरण
यहां दिए गए उदाहरण में, किसी व्यू स्पेस के हिसाब से, आंख की जानकारी पाने का तरीका बताया गया है.
XrSession session; // previously initialized, for example, 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_xrGetEyesInfoANDROID xrGetEyesInfoANDROID; // 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 eyesInfo{.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(xrGetEyesInfoANDROID(eyeTracker, &eyesGetInfo, &eyesInfo));
// 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 Constant
XR_EYE_MAX_ANDROID
XrObjectType एनोटेशन को इनके साथ जोड़ा गया है:
XR_OBJECT_TYPE_EYE_TRACKER_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_EYES_ANDROID
XR_TYPE_EYE_TRACKER_CREATE_INFO_ANDROID
XR_TYPE_EYES_GET_INFO_ANDROID
XR_TYPE_SYSTEM_AVATAR_EYES_PROPERTIES_ANDROID
नए Enums
नए स्ट्रक्चर
- XrEyeANDROID
- XrEyesANDROID
- XrEyesGetInfoANDROID
- XrEyeTrackerCreateInfoANDROID
- XrSystemAvatarEyesPropertiesANDROID
नए फ़ंक्शन
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 04-09-2024 (लेवाना चेन)
- एक्सटेंशन के बारे में शुरुआती जानकारी