Name String
XR_ANDROID_face_tracking
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
459
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव करने की तारीख
2024-09-06
आईपी स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
स्पेंसर क्विन, Google
जेरेड फ़ाइंडर, Google
लेवाना चेन, Google
खास जानकारी
इस एक्सटेंशन की मदद से, ऐप्लिकेशन ब्लेंड किए गए आकार का वज़न पा सकते हैं और XR अनुभवों में चेहरे के भावों को रेंडर कर सकते हैं.
इस एक्सटेंशन का मकसद, वर्चुअल स्पेस में उपयोगकर्ताओं के ज़्यादा असरदार अवतार बनाने के लिए ज़रूरी जानकारी देना है. ऐप्लिकेशन, ब्लेंड किए गए आकार की अहमियत तय करने से पहले, चेहरे के कैलिब्रेशन के चालू होने की जांच कर सकता है.
चेहरा ट्रैक करने की सुविधा
चेहरे की गतिविधियों को ट्रैक करने वाला डिवाइस, एक सेंसिंग डिवाइस होता है. यह डिवाइस, उपयोगकर्ता के सामने की इमेज स्ट्रीम और कैमरे के कैलिब्रेशन की मदद से, चेहरे के हाव-भाव को ट्रैक करता है. इस एक्सटेंशन का मुख्य मकसद, वर्चुअल सीन में उपयोगकर्ता के चेहरे के भावों को उनके अवतारों पर मैप करना है.
चेहरे की ट्रैकिंग का डेटा, संवेदनशील निजी जानकारी होती है. यह व्यक्तिगत निजता और भरोसे से जुड़ा होता है. हमारा सुझाव है कि जिन ऐप्लिकेशन में चेहरे की पहचान करने की सुविधा से जुड़ा डेटा सेव या ट्रांसफ़र किया जाता है वे हमेशा उपयोगकर्ता से इसकी अनुमति लें.
- ऐप्लिकेशन को ऐक्टिव फ़ेस ट्रैकर बनाने पर,
XR_ERROR_PERMISSION_INSUFFICIENT
दिखेगा. यह तब तक दिखेगा, जब तक ऐप्लिकेशन को फ़ेस ट्रैकर का ऐक्सेस नहीं मिल जाता. - xrGetFaceStateANDROID का इस्तेमाल करके चेहरे की स्थितियां पाने पर, XrFaceStateANDROID::isValid
XR_TRUE
तब तक नहीं दिखाएगा, जब तक ऐप्लिकेशन को ऐक्सेस करने की अनुमति नहीं दी गई है
चेहरे को ट्रैक करने वाला हैंडल बनाना
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
दिखाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreateFaceTrackerANDROID को कॉल करने से पहले,
XR_ANDROID_face_tracking
एक्सटेंशन चालू होना चाहिए session
यह एक मान्य XrSession हैंडल होना चाहिएcreateInfo
यह, XrFaceTrackerCreateInfoANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिएfaceTracker
को XrFaceTrackerANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
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
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
और उससे जुड़े संसाधनों को रिलीज़ कर देता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyFaceTrackerANDROID को कॉल करने से पहले,
XR_ANDROID_face_tracking
एक्सटेंशन चालू होना चाहिए faceTracker
XrFaceTrackerANDROID हैंडल मान्य होना ज़रूरी है
थ्रेड की सुरक्षा
faceTracker
और किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक होना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
चेहरे को कैलिब्रेट करने की सुविधा की जांच करना
xrGetFaceCalibrationStateANDROID
फ़ंक्शन को इस तरह परिभाषित किया गया है:
XrResult xrGetFaceCalibrationStateANDROID(
XrFaceTrackerANDROID faceTracker,
XrBool32* faceIsCalibratedOutput);
पैरामीटर की जानकारी
faceTracker
एक XrFaceTrackerANDROID है, जिसे पहले xrCreateFaceTrackerANDROID से बनाया गया था.faceIsCalibratedOutput
से पता चलता है कि चेहरे का ट्रैकर कैलिब्रेट किया गया है या नहीं.
कोई ऐप्लिकेशन, xrGetFaceCalibrationStateANDROID फ़ंक्शन का इस्तेमाल करके, चेहरे के कैलिब्रेशन की स्थिति देख सकता है.
अगर सिस्टम में चेहरे के कैलिब्रेशन की सुविधा काम नहीं करती है, तो xrGetFaceCalibrationStateANDROID, XR_ERROR_FEATURE_UNSUPPORTED
दिखाएगा. इसके अलावा, चेहरे के कैलिब्रेशन की स्थिति दिखाने के लिए, faceIsCalibratedOutput
को XR_TRUE
पर सेट किया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetFaceCalibrationStateANDROID को कॉल करने से पहले,
XR_ANDROID_face_tracking
एक्सटेंशन चालू होना चाहिए faceTracker
XrFaceTrackerANDROID हैंडल मान्य होना ज़रूरी हैfaceIsCalibratedOutput
,XrBool32
वैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
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
चेहरे के भावों की जानकारी पाना
xrGetFaceStateANDROID फ़ंक्शन, किसी तय समय पर चेहरे के भावों की ब्लेंड शेप दिखाता है.
XrResult xrGetFaceStateANDROID(
XrFaceTrackerANDROID faceTracker,
const XrFaceStateGetInfoANDROID* getInfo,
XrFaceStateANDROID* faceStateOutput);
पैरामीटर की जानकारी
faceTracker
एक XrFaceTrackerANDROID है, जिसे पहले xrCreateFaceTrackerANDROID से बनाया गया था.getInfo
, XrFaceStateGetInfoANDROID का पॉइंटर है. इसमें चेहरे के एक्सप्रेशन पाने के बारे में जानकारी दी गई है.faceStateOutput
, XrFaceStateANDROID का पॉइंटर है, जिसे चेहरे की ट्रैकिंग की स्थिति और चेहरे के हाव-भाव की जानकारी मिलती है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetFaceStateANDROID को कॉल करने से पहले,
XR_ANDROID_face_tracking
एक्सटेंशन चालू होना चाहिए faceTracker
XrFaceTrackerANDROID हैंडल मान्य होना ज़रूरी हैgetInfo
यह, XrFaceStateGetInfoANDROID के मान्य स्ट्रक्चर का पॉइंटर होना चाहिएfaceStateOutput
XrFaceStateANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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
XrFaceStateGetInfoANDROID स्ट्रक्चर में, चेहरे के भावों की जानकारी मिलती है.
typedef struct XrFaceStateGetInfoANDROID {
XrStructureType type;
void* next;
XrTime time;
} XrFaceStateGetInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.time
एकXrTime
है, जिस पर चेहरे के भावों का अनुरोध किया जाता है.
ऐप्लिकेशन को रेंडर किए गए फ़्रेम के लिए, अनुमानित डिसप्ले समय के बराबर समय का अनुरोध करना चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
- XrFaceStateGetInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_face_tracking
एक्सटेंशन को चालू करना ज़रूरी है 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;
} XrFaceStateANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.parametersCapacityInput
एकuint32_t
है, जोparameters
कलेक्शन की क्षमता के बारे में बताता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध के लिए,parametersCapacityInput
को 0 पर सेट किया जा सकता है.parametersCountOutput
एकuint32_t
है, जिसमेंparameters
की संख्या बताई गई है. इसके अलावा, अगरparametersCapacityInput
की संख्या काफ़ी नहीं है, तोparametersCountOutput
में ज़रूरी क्षमता की जानकारी भी दी गई है.parameters
,float
के ऐप्लिकेशन-ऐलोकेशन वाले ऐरे का पॉइंटर है. इसमें, चेहरे के हाव-भाव के ब्लेंड किए गए आकार के वज़न भरे जाएंगे.faceTrackingState
,XrFaceTrackingStateANDROID
है, जो कि फ़ेस ट्रैकिंग की पुष्टि की स्थिति है.sampleTime
वहXrTime
समय होता है जब दिखाए गए एक्सप्रेशन को ट्रैक किया जाता है या एक्सट्रपलेशन किया जाता है. यह उस समय के बराबर होता है जब एक्सट्रैपलेशन पूरा हो गया था और एक्सप्रेशन के वेट का अनुरोध किया गया था.isValid
से पता चलता है कि डेटा मान्य है या नहीं. भले ही, वह मौजूदा फ़्रेम से न हो.- ज़रूरी
parameters
साइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
ऐप्लिकेशन, 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
नहीं है, तोparametersCapacityInput 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 |
ब्यौरा |
|
इससे पता चलता है कि चेहरे की ट्रैकिंग रोक दी गई है. हालांकि, आने वाले समय में इसे फिर से शुरू किया जा सकता है. |
|
ट्रैकिंग बंद हो गई है, लेकिन क्लाइंट के पास अब भी एक ऐक्टिव फ़ेस ट्रैकर है. |
|
चेहरे को ट्रैक किया जा रहा हो और उसकी पोज़िशन मौजूदा हो. |
ब्लेंड किए गए आकार के लिए नियम
यह एक्सटेंशन, कम किए गए G-Nome फ़ॉर्मैट के लिए, XR_FACE_PARAMETER_COUNT_ANDROID
के ज़रिए 63 ब्लेंड शेप तय करता है. इस एनम में मौजूद हर पैरामीटर, ब्लेंड शेप कलेक्शन का एक इंडेक्स होता है. इसकी वैल्यू 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
} 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 | JAW_THRUST | ||
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 |
चेहरा ट्रैक करने के लिए कोड का उदाहरण
यहां दिए गए उदाहरण में, चेहरे के भावों को ब्लेंड करने वाली आकृतियों के लिए सभी वेट पाने का तरीका बताया गया है.
XrSession session; // previously initialized, for example 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
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:
bool 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;
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,
};
CHECK_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
}
}
}
// after usage
CHK_XR(xrDestroyFaceTrackerANDROID(faceTracker));
नए ऑब्जेक्ट टाइप
नई Enum Constant
XR_FACE_PARAMETER_COUNT_ANDROID
XrObjectType एनोटेशन को इनके साथ जोड़ा गया है:
XR_OBJECT_TYPE_FACE_TRACKER_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
XR_TYPE_FACE_STATE_GET_INFO_ANDROID
XR_TYPE_FACE_STATE_ANDROID
नए Enums
नए स्ट्रक्चर
नए फ़ंक्शन
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 05-09-2024 (लेवन चेन)
- एक्सटेंशन के बारे में शुरुआती जानकारी