Name String
XR_ANDROID_face_tracking
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
459
बदलाव
3
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव किए जाने की तारीख
2025-06-04
आईपी का स्टेटस
आईपी से जुड़े किसी भी दावे की जानकारी नहीं है.
योगदान देने वाले
स्पेंसर क्विन, Google
जेरेड फ़ाइंडर, Google
लेवाना चेन, Google
खास जानकारी
इस एक्सटेंशन की मदद से ऐप्लिकेशन, ब्लेंड शेप के वेट पा सकते हैं. साथ ही, XR अनुभवों में चेहरे के भाव रेंडर कर सकते हैं.
इस एक्सटेंशन का मकसद, वर्चुअल स्पेस में उपयोगकर्ताओं के असली जैसे अवतार और उनके एक्सप्रेशन दिखाने के लिए ज़रूरी जानकारी देना है. ब्लेंड शेप के वेट पाने से पहले, ऐप्लिकेशन यह जांच कर सकता है कि चेहरे के कैलिब्रेशन की सुविधा चालू है या नहीं.
फ़ेस ट्रैकर
फ़ेस ट्रैकर एक सेंसिंग डिवाइस होता है. यह उपयोगकर्ता के चेहरे की ओर मौजूद इमेज स्ट्रीम और कैमरे के कैलिब्रेशन की मदद से, चेहरे के हाव-भाव को ट्रैक करता है. इस एक्सटेंशन का मुख्य मकसद, वर्चुअल सीन में उपयोगकर्ता के चेहरे के भावों को उसके अवतार से मैप करना है.
चेहरे को ट्रैक करने से जुड़ा डेटा, संवेदनशील निजी जानकारी होती है. यह निजी निजता और अखंडता से काफ़ी हद तक जुड़ा होता है. हमारा सुझाव है कि चेहरे को ट्रैक करने वाले डेटा को सेव या ट्रांसफ़र करने वाले ऐप्लिकेशन, हमेशा उपयोगकर्ता से इसकी अनुमति लें. साथ ही, यह अनुमति सक्रिय और खास तौर पर इसी काम के लिए होनी चाहिए.
- ऐप्लिकेशन को
XR_ERROR_PERMISSION_INSUFFICIENTतब तक मिलेगा, जब तक ऐप्लिकेशन को फ़ेस ट्रैकर का ऐक्सेस नहीं मिल जाता. - xrGetFaceStateANDROID का इस्तेमाल करके चेहरे की स्थितियां पाने पर, XrFaceStateANDROID::isValid,
XR_TRUEतब तक नहीं दिखाएगा, जब तक ऐप्लिकेशन को ऐक्सेस करने की अनुमति नहीं दी जाती
सिस्टम की क्षमता की जांच करना
XrSystemFaceTrackingPropertiesANDROID स्ट्रक्चर को इस तरह से परिभाषित किया गया है:
typedef struct XrSystemFaceTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsFaceTracking;
} XrSystemFaceTrackingPropertiesANDROID;
पैसे चुकाकर बने सदस्यों के लिए उपलब्ध सुविधाओं का ब्यौरा
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.supportsFaceTrackingएक XrBool32 है. इससे पता चलता है कि मौजूदा सिस्टम में चेहरे को ट्रैक करने की सुविधा काम करती है या नहीं.
कोई ऐप्लिकेशन, xrGetSystemProperties को कॉल करते समय, XrSystemProperties को XrSystemFaceTrackingPropertiesANDROID स्ट्रक्चर के साथ बढ़ाकर, यह देख सकता है कि सिस्टम में चेहरे को ट्रैक करने की सुविधा है या नहीं.
अगर और सिर्फ़ अगर कोई रनटाइम XR_FALSE के लिए supportsFaceTracking दिखाता है, तो रनटाइम को xrCreateFaceTrackerANDROID से XR_ERROR_FEATURE_UNSUPPORTED दिखाना ज़रूरी है.
चेहरा ट्रैक करने वाले हैंडल बनाएं
XR_DEFINE_HANDLE(XrFaceTrackerANDROID)
XrFaceTrackerANDROID हैंडल, चेहरे को ट्रैक करने के लिए फ़ेस ट्रैकर को दिखाता है.
इस हैंडल का इस्तेमाल करके, इस एक्सटेंशन में मौजूद अन्य फ़ंक्शन की मदद से फ़ेस ट्रैकिंग का डेटा ऐक्सेस किया जा सकता है.
xrCreateFaceTrackerANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrCreateFaceTrackerANDROID(
XrSession session,
const XrFaceTrackerCreateInfoANDROID* createInfo,
XrFaceTrackerANDROID* faceTracker);
पैरामीटर की जानकारी
sessionएक XrSession हैंडल है, जिसमें फ़ेस ट्रैकर चालू होगा.createInfo, XrFaceTrackerCreateInfoANDROID है. इसका इस्तेमाल, फ़ेस ट्रैकर तय करने के लिए किया जाता है.faceTracker, XrFaceTrackerANDROID हैंडल है.
कोई ऐप्लिकेशन, xrCreateFaceTrackerANDROID फ़ंक्शन का इस्तेमाल करके XrFaceTrackerANDROID हैंडल बना सकता है.
अगर सिस्टम में चेहरे को ट्रैक करने की सुविधा काम नहीं करती है, तो xrCreateFaceTrackerANDROID, XR_ERROR_FEATURE_UNSUPPORTED दिखाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
XR_ANDROID_face_trackingएक्सटेंशन को xrCreateFaceTrackerANDROID को कॉल करने से पहले चालू किया जाना चाहिएsession, XrSession का एक मान्य हैंडल होना चाहिएcreateInfo, मान्य XrFaceTrackerCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिएfaceTracker, XrFaceTrackerANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
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_REACHED
XrFaceTrackerCreateInfoANDROID स्ट्रक्चर के बारे में यहां बताया गया है:
typedef struct XrFaceTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
} XrFaceTrackerCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के लिए उपलब्ध सुविधाओं का ब्यौरा
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.
XrFaceTrackerCreateInfoANDROID स्ट्रक्चर, XrFaceTrackerANDROID हैंडल बनाने के लिए ज़रूरी जानकारी देता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrFaceTrackerCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_face_trackingएक्सटेंशन को चालू करना ज़रूरी है typeज़रूरी है किXR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROIDहोnextज़रूरी है कि वहNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
xrDestroyFaceTrackerANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrDestroyFaceTrackerANDROID(
XrFaceTrackerANDROID faceTracker);
पैरामीटर की जानकारी
faceTracker, XrFaceTrackerANDROID है. इसे पहले xrCreateFaceTrackerANDROID ने बनाया था.
xrDestroyFaceTrackerANDROID फ़ंक्शन, चेहरे को ट्रैक करने की सुविधा बंद होने पर faceTracker और बुनियादी संसाधनों को रिलीज़ करता है.
मान्य इस्तेमाल (इंप्लिसिट)
XR_ANDROID_face_trackingएक्सटेंशन को xrDestroyFaceTrackerANDROID को कॉल करने से पहले चालू किया जाना चाहिएfaceTracker, XrFaceTrackerANDROID का एक मान्य हैंडल होना चाहिए
थ्रेड सेफ़्टी
faceTrackerऔर बच्चों के सभी हैंडल को बाहरी तौर पर सिंक किया जाना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
चेहरा कैलिब्रेट करने की सुविधा की जांच करना
xrGetFaceCalibrationStateANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrGetFaceCalibrationStateANDROID(
XrFaceTrackerANDROID faceTracker,
XrBool32* faceIsCalibratedOutput);
पैरामीटर की जानकारी
faceTracker, XrFaceTrackerANDROID है. इसे पहले xrCreateFaceTrackerANDROID ने बनाया था.faceIsCalibratedOutputसे पता चलता है कि फ़ेस ट्रैकर को कैलिब्रेट किया गया है या नहीं.
कोई ऐप्लिकेशन, xrGetFaceCalibrationStateANDROID फ़ंक्शन का इस्तेमाल करके, फ़ेस कैलिब्रेशन की स्थिति की जांच कर सकता है.
अगर ट्रैकिंग सेवा अब भी शुरू हो रही है, तो रनटाइम may, xrGetFaceCalibrationStateANDROID से XR_ERROR_SERVICE_NOT_READY_ANDROID दिखा सकता है. इससे पता चलता है कि ऐप्लिकेशन बाद में फिर से कोशिश कर सकता है.
अगर सिस्टम में चेहरे के कैलिब्रेशन की सुविधा काम नहीं करती है, तो xrGetFaceCalibrationStateANDROID, XR_ERROR_FEATURE_UNSUPPORTED दिखाएगा. इसके अलावा, चेहरे के कैलिब्रेशन की स्थिति दिखाने के लिए, faceIsCalibratedOutput को XR_TRUE पर सेट किया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
XR_ANDROID_face_trackingएक्सटेंशन को xrGetFaceCalibrationStateANDROID को कॉल करने से पहले चालू किया जाना चाहिएfaceTracker, XrFaceTrackerANDROID का एक मान्य हैंडल होना चाहिएfaceIsCalibratedOutput,XrBool32वैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
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_SERVICE_NOT_READY_ANDROID
चेहरे के भावों के बारे में जानकारी पाना
xrGetFaceStateANDROID फ़ंक्शन, किसी तय समय पर चेहरे के भावों के ब्लेंड शेप दिखाता है.
XrResult xrGetFaceStateANDROID(
XrFaceTrackerANDROID faceTracker,
const XrFaceStateGetInfoANDROID* getInfo,
XrFaceStateANDROID* faceStateOutput);
पैरामीटर की जानकारी
faceTracker, XrFaceTrackerANDROID है. इसे पहले xrCreateFaceTrackerANDROID ने बनाया था.getInfo, XrFaceStateGetInfoANDROID का पॉइंटर है. यह चेहरे के एक्सप्रेशन की जानकारी देता है.faceStateOutput, XrFaceStateANDROID का पॉइंटर है. यह चेहरे को ट्रैक करने की स्थिति और चेहरे के हाव-भाव की जानकारी दिखाता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetFaceStateANDROID को कॉल करने से पहले,
XR_ANDROID_face_trackingएक्सटेंशन को चालू करना ज़रूरी है faceTracker, XrFaceTrackerANDROID का एक मान्य हैंडल होना चाहिएgetInfomust, XrFaceStateGetInfoANDROID स्ट्रक्चर का मान्य पॉइंटर होना चाहिएfaceStateOutput, XrFaceStateANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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_TIME_INVALID
XrFaceStateGetInfoANDROID स्ट्रक्चर में, चेहरे के भावों की जानकारी पाने के बारे में बताया गया है.
typedef struct XrFaceStateGetInfoANDROID {
XrStructureType type;
void* next;
XrTime time;
} XrFaceStateGetInfoANDROID;
पैसे चुकाकर बने सदस्यों के लिए उपलब्ध सुविधाओं का ब्यौरा
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.timeएकXrTimeहै, जिसमें चेहरे के हाव-भाव का अनुरोध किया जाता है.
ऐप्लिकेशन को, रेंडर किए गए फ़्रेम के लिए, अनुमानित डिसप्ले टाइम के बराबर समय का अनुरोध करना चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
XR_ANDROID_face_trackingएक्सटेंशन को XrFaceStateGetInfoANDROID का इस्तेमाल करने से पहले चालू करना होगाtypeज़रूरी है किXR_TYPE_FACE_STATE_GET_INFO_ANDROIDहोnextज़रूरी है कि वहNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो
XrFaceStateANDROID स्ट्रक्चर, चेहरे को ट्रैक करने की स्थिति और चेहरे के भावों की जानकारी देता है.
typedef struct XrFaceStateANDROID {
XrStructureType type;
void* next;
uint32_t parametersCapacityInput;
uint32_t parametersCountOutput;
float* parameters;
XrFaceTrackingStateANDROID faceTrackingState;
XrTime sampleTime;
XrBool32 isValid;
uint32_t regionConfidencesCapacityInput;
uint32_t regionConfidencesCountOutput;
float* regionConfidences;
} XrFaceStateANDROID;
पैसे चुकाकर बने सदस्यों के लिए उपलब्ध सुविधाओं का ब्यौरा
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है. इस तरह के स्ट्रक्चर, OpenXR के मुख्य स्पेसिफ़िकेशन या इस एक्सटेंशन में तय नहीं किए गए हैं.parametersCapacityInput,uint32_tहै. यहparametersऐरे की क्षमता के बारे में बताता है. अगर आपको ज़रूरी क्षमता को वापस पाने का अनुरोध करना है, तो 0 डालें.parametersCountOutput,uint32_tहै. यहparametersकी संख्या याparametersCapacityInputके कम होने पर ज़रूरी क्षमता के बारे में बताता है.parameters,floatके ऐप्लिकेशन-एलॉकेटेड ऐरे का पॉइंटर है. इसमें चेहरे के हाव-भाव के ब्लेंड शेप के वेट भरे जाएंगे.faceTrackingState, चेहरे को ट्रैक करने की सुविधा की वैधता की स्थिति काXrFaceTrackingStateANDROIDहै.sampleTimeवहXrTimeसमय है जिस पर दिखाए गए एक्सप्रेशन को ट्रैक किया जाता है या एक्सट्रैपलेट किया जाता है. अगर एक्सट्रैपलेशन की प्रोसेस पूरी हो जाती है, तो यह उस समय के बराबर होता है जब एक्सप्रेशन वेट का अनुरोध किया गया था.isValidसे पता चलता है कि डेटा मान्य है या नहीं. भले ही, वह मौजूदा फ़्रेम का न हो.regionConfidencesCapacityInput,uint32_tहै. यहregionConfidencesऐरे की क्षमता के बारे में बताता है. अगर आपको ज़रूरी क्षमता को वापस पाने का अनुरोध करना है, तो 0 डालें.regionConfidencesCountOutput,uint32_tहै. यहregionConfidencesकी संख्या याregionConfidencesCapacityInputके कम होने पर ज़रूरी क्षमता के बारे में बताता है.regionConfidences, ऐप्लिकेशन के लिए तय किए गएfloatके ऐरे का पॉइंटर है. इसमें चेहरे के हर हिस्से के लिए कॉन्फ़िडेंस वैल्यू भरी जाएगी.- ज़रूरी
parametersऔरregionConfidencesका साइज़ पाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, parametersCapacityInput को XR_FACE_PARAMETER_COUNT_ANDROID पर सेट कर सकता है, ताकि उसे चेहरे के ऐसे एक्सप्रेशन मिल सकें जिन्हें XrFaceParameterIndicesANDROID ने इंडेक्स किया है.
parameters के तौर पर दिखाई गई वैल्यू, चेहरे के मौजूदा भावों के ब्लेंड शेप के वज़न को दिखाती हैं.
parameters ऐरे के अपडेट इस क्रम में होंगे, ताकि ऐप्लिकेशन, चेहरे के हाव-भाव वाले संबंधित एनम (जैसे, XrFaceParameterIndicesANDROID) का इस्तेमाल करके एलिमेंट को इंडेक्स कर सके.
मान्य इस्तेमाल (इंप्लिसिट)
- XrFaceStateANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_face_trackingएक्सटेंशन को चालू करना ज़रूरी है typeज़रूरी है किXR_TYPE_FACE_STATE_ANDROIDहोnextज़रूरी है कि वहNULLहो या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर हो- अगर
parametersCapacityInput,0, parametersनहीं है, तो must,parametersCapacityInput floatवैल्यू की किसी श्रेणी का पॉइंटर होना चाहिए - अगर
regionConfidencesCapacityInput,0, regionConfidencesनहीं है, तो must,regionConfidencesCapacityInput floatवैल्यू की किसी श्रेणी का पॉइंटर होना चाहिए faceTrackingState, XrFaceTrackingStateANDROID की मान्य वैल्यू होनी चाहिए
XrFaceTrackingStateANDROID इन्यूमरेशन, फ़ेस ट्रैकर की अलग-अलग स्थितियों की पहचान करता है.
typedef enum XrFaceTrackingStateANDROID {
XR_FACE_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_FACE_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_FACE_TRACKING_STATE_TRACKING_ANDROID = 2
} XrFaceTrackingStateANDROID;
इन एनम का मतलब यह है:
Enum |
ब्यौरा |
|
इससे पता चलता है कि फ़ेस ट्रैकिंग की सुविधा को रोक दिया गया है. हालांकि, इसे आने वाले समय में फिर से शुरू किया जा सकता है. |
|
ट्रैकिंग बंद हो गई है, लेकिन क्लाइंट के पास अब भी चालू फ़ेस ट्रैकर है. |
|
चेहरे को ट्रैक किया जाता है और उसकी पोज़िशन अपडेट होती रहती है. |
कॉन्फ़िडेंस रीजन
XR_ANDROID_face_tracking एक्सटेंशन, चेहरे के तीन हिस्सों के लिए कॉन्फ़िडेंस वैल्यू भी देता है: बाईं आंख, दाईं आंख, और निचला हिस्सा. ये वैल्यू, 0 (कोई भरोसा नहीं) से लेकर 1 (सबसे ज़्यादा भरोसा) तक होती हैं. इनसे हर इलाके के लिए, चेहरे को ट्रैक करने की सुविधा की सटीकता का पता चलता है.
इन कॉन्फ़िडेंस वैल्यू का इस्तेमाल करके, ब्लेंडशेप को धीरे-धीरे बंद किया जा सकता है. इसके अलावा, चेहरे के उस हिस्से पर विज़ुअल फ़िल्टर (जैसे कि धुंधला करना) लागू किए जा सकते हैं. चालू/बंद करने के सामान्य कंट्रोल के लिए, हमारा सुझाव है कि थ्रेशोल्ड के तौर पर 0.3 का इस्तेमाल करें. इससे चेहरे के उस हिस्से में ब्लेंडशेप पूरी तरह से बंद हो जाएंगे.
"चेहरे का निचला हिस्सा" आंखों के नीचे का पूरा हिस्सा होता है. इसमें मुंह, ठुड्डी, गाल, और नाक शामिल हैं. आंख वाले हिस्से में आंखें और भौहें शामिल होती हैं.
नीचे दी गई टेबल में, हर कॉन्फ़िडेंस रीजन से जुड़े ब्लेंडशेप के बारे में बताया गया है:
| कॉन्फ़िडेंस रीजन | ब्लेंडशेप |
|---|---|
| चेहरे का निचला हिस्सा | `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID`, `XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID`, `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID` |
| ऊपर की ओर बायां/दायां हिस्सा | `XR_FACE_PARAMETER_INDICES_BROW_LOWERER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_BROW_LOWERER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_CLOSED_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_CLOSED_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_R_ANDROID` |
ब्लेंड शेप के कन्वेंशन
यह एक्सटेंशन, कम किए गए G-Nome फ़ॉर्मैट के लिए XR_FACE_PARAMETER_COUNT_ANDROID के ज़रिए 68 ब्लेंड शेप तय करता है. इस enum में मौजूद हर पैरामीटर, ब्लेंड शेप ऐरे में एक इंडेक्स होता है. इसकी वैल्यू float टाइप की होती हैं और रनटाइम, वैल्यू को 1 से 0 के बीच सामान्य करता है.
typedef enum XrFaceParameterIndicesANDROID {
XR_FACE_PARAMETER_INDICES_BROW_LOWERER_L_ANDROID = 0,
XR_FACE_PARAMETER_INDICES_BROW_LOWERER_R_ANDROID = 1,
XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID = 2,
XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID = 3,
XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID = 4,
XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID = 5,
XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID = 6,
XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID = 7,
XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID = 8,
XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID = 9,
XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID = 10,
XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID = 11,
XR_FACE_PARAMETER_INDICES_EYES_CLOSED_L_ANDROID = 12,
XR_FACE_PARAMETER_INDICES_EYES_CLOSED_R_ANDROID = 13,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_L_ANDROID = 14,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_R_ANDROID = 15,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_L_ANDROID = 16,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_R_ANDROID = 17,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_L_ANDROID = 18,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_R_ANDROID = 19,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_L_ANDROID = 20,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_R_ANDROID = 21,
XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_L_ANDROID = 22,
XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_R_ANDROID = 23,
XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID = 24,
XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID = 25,
XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID = 26,
XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID = 27,
XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_L_ANDROID = 28,
XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_R_ANDROID = 29,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID = 30,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID = 31,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID = 32,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID = 33,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID = 34,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID = 35,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID = 36,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID = 37,
XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID = 38,
XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID = 39,
XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID = 40,
XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID = 41,
XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID = 42,
XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID = 43,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID = 44,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID = 45,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID = 46,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID = 47,
XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID = 48,
XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID = 49,
XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID = 50,
XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID = 51,
XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID = 52,
XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID = 53,
XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID = 54,
XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID = 55,
XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID = 56,
XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_L_ANDROID = 57,
XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_R_ANDROID = 58,
XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID = 59,
XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID = 60,
XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID = 61,
XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID = 62,
XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID = 63,
XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID = 64,
XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID = 65,
XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID = 66,
XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID = 67
} XrFaceParameterIndicesANDROID;
| इंडेक्स | नाम | रेफ़रंस इमेज | |
|---|---|---|---|
| 0 | BROW_LOWERER_L |
|
|
| 1 | BROW_LOWERER_R |
|
|
| 2 | CHEEK_PUFF_L |
|
|
| 3 | CHEEK_PUFF_R |
|
|
| 4 | CHEEK_RAISER_L |
|
|
| 5 | CHEEK_RAISER_R |
|
|
| 6 | CHEEK_SUCK_L |
|
|
| 7 | CHEEK_SUCK_R |
|
|
| 8 | CHIN_RAISER_B |
|
|
| 9 | CHIN_RAISER_T |
|
|
| 10 | DIMPLER_L |
|
|
| 11 | DIMPLER_R |
|
|
| 12 | EYES_CLOSED_L |
|
|
| 13 | EYES_CLOSED_R |
|
|
| 14 | EYES_LOOK_DOWN_L |
|
|
| 15 | EYES_LOOK_DOWN_R |
|
|
| 16 | EYES_LOOK_LEFT_L |
|
|
| 17 | EYES_LOOK_LEFT_R |
|
|
| 18 | EYES_LOOK_RIGHT_L |
|
|
| 19 | EYES_LOOK_RIGHT_R |
|
|
| 20 | EYES_LOOK_UP_L |
|
|
| 21 | EYES_LOOK_UP_R |
|
|
| 22 | INNER_BROW_RAISER_L |
|
|
| 23 | INNER_BROW_RAISER_R |
|
|
| 24 | JAW_DROP |
|
|
| 25 | JAW_SIDEWAYS_LEFT |
|
|
| 26 | JAW_SIDEWAYS_RIGHT |
|
|
| 27 | जबड़े को आगे की ओर खींचना |
|
|
| 28 | LID_TIGHTENER_L |
|
|
| 29 | LID_TIGHTENER_R |
|
|
| 30 | LIP_CORNER_DEPRESSOR_L |
|
|
| 31 | LIP_CORNER_DEPRESSOR_R |
|
|
| 32 | LIP_CORNER_PULLER_L |
|
|
| 33 | LIP_CORNER_PULLER_R |
|
|
| 34 | LIP_FUNNELER_LB |
|
|
| 35 | LIP_FUNNELER_LT |
|
|
| 36 | LIP_FUNNELER_RB |
|
|
| 37 | LIP_FUNNELER_RT |
|
|
| 38 | LIP_PRESSOR_L |
|
|
| 39 | LIP_PRESSOR_R |
|
|
| 40 | LIP_PUCKER_L |
|
|
| 41 | LIP_PUCKER_R |
|
|
| 42 | LIP_STRETCHER_L |
|
|
| 43 | LIP_STRETCHER_R |
|
|
| 44 | LIP_SUCK_LB |
|
|
| 45 | LIP_SUCK_LT |
|
|
| 46 | LIP_SUCK_RB |
|
|
| 47 | LIP_SUCK_RT |
|
|
| 48 | LIP_TIGHTENER_L |
|
|
| 49 | LIP_TIGHTENER_R |
|
|
| 50 | LIPS_TOWARD |
|
|
| 51 | LOWER_LIP_DEPRESSOR_L |
|
|
| 52 | LOWER_LIP_DEPRESSOR_R |
|
|
| 53 | MOUTH_LEFT |
|
|
| 54 | MOUTH_RIGHT |
|
|
| 55 | NOSE_WRINKLER_L |
|
|
| 56 | NOSE_WRINKLER_R |
|
|
| 57 | OUTER_BROW_RAISER_L |
|
|
| 58 | OUTER_BROW_RAISER_R |
|
|
| 59 | UPPER_LID_RAISER_L |
|
|
| 60 | UPPER_LID_RAISER_R |
|
|
| 61 | UPPER_LIP_RAISER_L |
|
|
| 62 | UPPER_LIP_RAISER_R |
|
|
| 63 | TONGUE_OUT |
|
|
| 64 | TONGUE_LEFT |
|
|
| 65 | TONGUE_RIGHT |
|
|
| 66 | TONGUE_UP |
|
|
| 67 | TONGUE_DOWN |
|
|
चेहरा ट्रैक करने की सुविधा के लिए कोड का उदाहरण
यहां दिए गए उदाहरण कोड में, चेहरे के भाव के ब्लेंड शेप के लिए सभी वेट पाने का तरीका बताया गया है.
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized, e.g. created at app startup.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateFaceTrackerANDROID xrCreateFaceTrackerANDROID; // previously initialized
PFN_xrDestroyFaceTrackerANDROID xrDestroyFaceTrackerANDROID; // previously initialized
PFN_xrGetFaceStateANDROID xrGetFaceStateANDROID; // previously initialized
PFN_xrGetFaceCalibrationStateANDROID xrGetFaceCalibrationStateANDROID; // previously initialized
// Inspect system capability
XrSystemProperties properties{XR_TYPE_SYSTEM_PROPERTIES};
XrSystemFaceTrackingPropertiesANDROID faceTrackingProperties{XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_ANDROID};
properties.next = &faceTrackingProperties;
CHK_XR(xrGetSystemProperties(instance, systemId, &properties));
if (!faceTrackingProperties.supportsFaceTracking) {
// face tracking is not supported.
return;
}
XrFaceTrackerANDROID faceTracker;
XrFaceTrackerCreateInfoANDROID
createInfo{.type = XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID,
.next = nullptr};
CHK_XR(xrCreateFaceTrackerANDROID(session, &createInfo, &faceTracker));
// If the system supports face calibration:
XrBool32 isCalibrated;
CHK_XR(xrGetFaceCalibrationStateANDROID(faceTracker, &isCalibrated));
if (!isCalibrated) {
// Redirect the user to system calibration setting.
}
XrFaceStateANDROID faceState;
float faceExpressionParameters[XR_FACE_PARAMETER_COUNT_ANDROID];
faceState.type = XR_TYPE_FACE_STATE_ANDROID;
faceState.next = nullptr;
faceState.parametersCapacityInput = XR_FACE_PARAMETER_COUNT_ANDROID;
faceState.parameters = faceExpressionParameters;
float regionConfidences[XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID];
faceState.regionConfidencesCapacityInput = XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID;
faceState.regionConfidences = regionConfidences;
while (1) {
// ...
// For every frame in the frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
XrFaceStateGetInfoANDROID faceGetInfo{
.type = XR_TYPE_FACE_STATE_GET_INFO_ANDROID,
.next = nullptr,
.time = frameState.predictedDisplayTime,
};
CHK_XR(xrGetFaceStateANDROID(faceTracker, &faceGetInfo, &faceState));
if (faceState.isValid) {
for (uint32_t i = 0; i < XR_FACE_PARAMETER_COUNT_ANDROID; ++i) {
// parameters[i] contains a weight of specific blend shape
}
for (uint32_t i = 0; i < XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID; ++i) {
// regionConfidences[i] contains a confidence value of a specific region
}
}
}
// after usage
CHK_XR(xrDestroyFaceTrackerANDROID(faceTracker));
नए ऑब्जेक्ट टाइप
नए enum कॉन्स्टेंट
XR_FACE_PARAMETER_COUNT_ANDROID
XrObjectType इन्यूमरेशन को इन वैल्यू के साथ बढ़ाया गया है:
XR_OBJECT_TYPE_FACE_TRACKER_ANDROID
XrStructureType इन्यूमरेशन को इन वैल्यू के साथ बढ़ाया गया है:
XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_FACE_STATE_GET_INFO_ANDROIDXR_TYPE_FACE_STATE_ANDROIDXR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_ANDROID
नए एनम
नए स्ट्रक्चर
- XrFaceTrackerCreateInfoANDROID
- XrFaceStateGetInfoANDROID
- XrFaceStateANDROID
- XrSystemFaceTrackingPropertiesANDROID
नए फ़ंक्शन
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
समस्याएं
वर्शन इतिहास
- पहला बदलाव, 05-09-2024 (लेवाना चेन)
- एक्सटेंशन की शुरुआती जानकारी
- दूसरा वर्शन, 01-04-2025 (कैनी वर्केमर)
- चेहरे की पहचान से जुड़ी कॉन्फ़िडेंस रीजन जोड़ी गईं
- तीसरा वर्शन, 04-06-2025 (लेवाना चेन)
- नया गड़बड़ी कोड जोड़ा गया.
OpenXR™ और OpenXR लोगो, The Khronos Group Inc. के ट्रेडमार्क हैं. इन्हें चीन, यूरोपियन यूनियन, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किया गया है.