תוסף OpenXR‏ XR_ANDROID_face_tracking

מחרוזת שם

XR_ANDROID_face_tracking

סוג התוסף

תוסף למכונה

מספר תוסף רשום

459

גרסה

1

תלות בתוספים ובגרסאות

OpenXR 1.0

תאריך השינוי האחרון

2024-09-06

סטטוס כתובת ה-IP

לא ידוע על תלונות על הפרת זכויות יוצרים בנושא כתובת IP.

שותפים ביצירת התוכן

ספנסר קווין (Spencer Quin), Google

Jared Finder, ‏ 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);

תיאורי פרמטרים

אפליקציה יכולה ליצור מנוף XrFaceTrackerANDROID באמצעות הפונקציה xrCreateFaceTrackerANDROID.

אם המערכת לא תומכת במעקב אחר פנים, הפונקציה xrCreateFaceTrackerANDROID תחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED.

שימוש תקין (מרומז)

קודי החזרה

הצלחה

  • 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.

שימוש תקין (מרומז)

הפונקציה xrDestroyFaceTrackerANDROID מוגדרת כך:

XrResult xrDestroyFaceTrackerANDROID(
    XrFaceTrackerANDROID                        faceTracker);

תיאורי פרמטרים

הפונקציה xrDestroyFaceTrackerANDROID משחררת את faceTracker ואת המשאבים הבסיסיים בסיום חוויית המעקב אחר הפנים.

שימוש תקין (מרומז)

בטיחות בשרשור

  • חובה לסנכרן באופן חיצוני את הגישה ל-faceTracker ולכל כינויים משניים

קודי החזרה

הצלחה

  • XR_SUCCESS

כישלון

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

בדיקת כיול הפנים

הפונקציה xrGetFaceCalibrationStateANDROID מוגדרת כך:

XrResult xrGetFaceCalibrationStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    XrBool32*                                   faceIsCalibratedOutput);

תיאורי פרמטרים

אפליקציה יכולה לבדוק את מצב התאמת הפנים באמצעות הפונקציה xrGetFaceCalibrationStateANDROID.

אם המערכת לא תומכת בחיישן הפנים, הפונקציה xrGetFaceCalibrationStateANDROID תחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED. אחרת, יכול להיות שהערך של faceIsCalibratedOutput יוגדר כ-XR_TRUE כדי לשקף את מצב כיול הפנים.

שימוש תקין (מרומז)

קודי החזרה

הצלחה

  • 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);

תיאורי פרמטרים

שימוש תקין (מרומז)

קודי החזרה

הצלחה

  • 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 שבו מתבצעת הבקשה לקבלת הבעות הפנים.

אפליקציות צריכות לבקש זמן שווה לזמן ההצגה המשוער של המסגרת שעבר רינדור.

שימוש תקין (מרומז)

המבנה 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, או 0 כדי לציין בקשה לאחזור הקיבולת הנדרשת.
  • parametersCountOutput הוא uint32_t שמתאר את מספר ה-parameters, או את הקיבולת הנדרשת במקרה ש-parametersCapacityInput לא מספיק.
  • parameters הוא הפניה למערך של float שהוקצה על ידי האפליקציה, ויתמלא במשקלים של צורות מיזוג של הבעות פנים.
  • faceTrackingState הוא XrFaceTrackingStateANDROID של סטטוס התוקף של מעקב הפנים.
  • sampleTime הוא זמן XrTime שבו מתבצע מעקב אחרי הביטויים המוחזרים או יצירת אומדן שלהם. הוא שווה לשעה שבה התבקשו משקלי הביטוי, אם האקסטרפולציה בוצעה בהצלחה באותה שעה.
  • isValid מציין אם הנתונים תקפים גם אם הם לא מהפריים הנוכחי.
  • בקטע פרמטרים של גודל מאגר מפורט תיאור של אחזור הגודל הנדרש של parameters.

האפליקציה יכולה להגדיר את parametersCapacityInput לערך XR_FACE_PARAMETER_COUNT_ANDROID כדי לקבל הבעות פנים שמתווספות לאינדקס על ידי XrFaceParameterIndicesANDROID.

הערך המוחזר של parameters מייצג את המשקלים של צורות המיזוג של הבעות הפנים הנוכחיות.

העדכונים של מערך parameters ימוינו כך שהאפליקציה תוכל להוסיף רכיבים לאינדקס באמצעות המאפיין enum המתאים של הבעת הפנים (למשל, XrFaceParameterIndicesANDROID).

שימוש תקין (מרומז)

המניין 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 יש את המשמעויות הבאות:

Enum

תיאור

XR_FACE_TRACKING_STATE_PAUSED_ANDROID

מציין שמעקב הפנים מושהה, אבל יכול להימשך בעתיד.

XR_FACE_TRACKING_STATE_STOPPED_ANDROID

המעקב הופסק, אבל עדיין יש ללקוח מכשיר מעקב פנים פעיל.

XR_FACE_TRACKING_STATE_TRACKING_ANDROID

מתבצע מעקב אחר הפנים והתנוחה שלו עדכנית.

מוסכמות של צורות מיזוג

התוסף הזה מגדיר 63 צורות מיזוג באמצעות XR_FACE_PARAMETER_COUNT_ANDROID, לפורמט G-Nome המופחת. כל פרמטר ב-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
} XrFaceParameterIndicesANDROID;
אינדקס שם תמונה לדוגמה
0 BROW_LOWERER_L
תמונה של פרצוף ניטרלי לצורך אימות
BROW_LOWERER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
BROW_LOWERER_L = 1.0
1 BROW_LOWERER_R
תמונה של פרצוף ניטרלי לצורך אימות
BROW_LOWERER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
BROW_LOWERER_R = 1.0
2 CHEEK_PUFF_L
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_PUFF_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_PUFF_L = 1.0
3 CHEEK_PUFF_R
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_PUFF_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_PUFF_R = 1.0
4 CHEEK_RAISER_L
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_RAISER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_RAISER_L = 1.0
5 CHEEK_RAISER_R
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_RAISER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_RAISER_R = 1.0
6 CHEEK_SUCK_L
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_SUCK_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_SUCK_L = 1.0
7 CHEEK_SUCK_R
תמונה של פרצוף ניטרלי לצורך אימות
CHEEK_SUCK_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHEEK_SUCK_R = 1.0
8 CHIN_RAISER_B
תמונה של פרצוף ניטרלי לצורך אימות
CHIN_RAISER_B = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHIN_RAISER_B = 1.0
9 CHIN_RAISER_T
תמונה של פרצוף ניטרלי לצורך אימות
CHIN_RAISER_T = 0.0
תמונה לדוגמה למעקב אחר הפנים
CHIN_RAISER_T = 1.0
10 DIMPLER_L
תמונה של פרצוף ניטרלי לצורך אימות
DIMPLER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
DIMPLER_L = 1.0
11 DIMPLER_R
תמונה של פרצוף ניטרלי לצורך אימות
DIMPLER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
DIMPLER_R = 1.0
12 EYES_CLOSED_L
תמונה של פרצוף ניטרלי לצורך אימות
EYES_CLOSED_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_CLOSED_L = 1.0
13 EYES_CLOSED_R
תמונה של פרצוף ניטרלי לצורך אימות
EYES_CLOSED_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_CLOSED_R = 1.0
14 EYES_LOOK_DOWN_L
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_DOWN_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_DOWN_L = 1.0
15 EYES_LOOK_DOWN_R
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_DOWN_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_DOWN_R = 1.0
16 EYES_LOOK_LEFT_L
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_LEFT_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_LEFT_L = 1.0
17 EYES_LOOK_LEFT_R
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_LEFT_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_LEFT_R = 1.0
18 EYES_LOOK_RIGHT_L
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_RIGHT_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_RIGHT_L = 1.0
19 EYES_LOOK_RIGHT_R
תמונה של פרצוף ניטרלי לצורך אימון
EYES_LOOK_RIGHT_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_RIGHT_R = 1.0
20 EYES_LOOK_UP_L
תמונה של פרצוף ניטרלי לצורך אימון
EYES_LOOK_UP_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_UP_L = 1.0
21 EYES_LOOK_UP_R
תמונה של פרצוף ניטרלי לצורך אימות
EYES_LOOK_UP_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
EYES_LOOK_UP_R = 1.0
22 INNER_BROW_RAISER_L
תמונה של פרצוף ניטרלי לצורך אימות
INNER_BROW_RAISER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
INNER_BROW_RAISER_L = 1.0
23 INNER_BROW_RAISER_R
תמונה של פרצוף ניטרלי לצורך אימות
INNER_BROW_RAISER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
INNER_BROW_RAISER_R = 1.0
24 JAW_DROP
תמונה של פרצוף ניטרלי
JAW_DROP = 0.0
תמונה לדוגמה למעקב אחר הפנים
JAW_DROP = 1.0
25 JAW_SIDEWAYS_LEFT
תמונה של פרצוף ניטרלי לצורך אימות
JAW_SIDEWAYS_LEFT = 0.0
תמונה לדוגמה למעקב אחר הפנים
JAW_SIDEWAYS_LEFT = 1.0
26 JAW_SIDEWAYS_RIGHT
תמונה של פרצוף ניטרלי לצורך אימות
JAW_SIDEWAYS_RIGHT = 0.0
תמונה לדוגמה למעקב אחר הפנים
JAW_SIDEWAYS_RIGHT = 1.0
27 JAW_THRUST
תמונה של פרצוף ניטרלי לצורך אימות
JAW_THRUST = 0.0
תמונה לדוגמה למעקב אחר הפנים
JAW_THRUST = 1.0
28 LID_TIGHTENER_L
תמונה של פרצוף ניטרלי לצורך אימות
LID_TIGHTENER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LID_TIGHTENER_L = 1.0
29 LID_TIGHTENER_R
תמונה של פרצוף ניטרלי לצורך אימות
LID_TIGHTENER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LID_TIGHTENER_R = 1.0
30 LIP_CORNER_DEPRESSOR_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_CORNER_DEPRESSOR_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_CORNER_DEPRESSOR_L = 1.0
31 LIP_CORNER_DEPRESSOR_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_CORNER_DEPRESSOR_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_CORNER_DEPRESSOR_R = 1.0
32 LIP_CORNER_PULLER_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_CORNER_PULLER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_CORNER_PULLER_L = 1.0
33 LIP_CORNER_PULLER_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_CORNER_PULLER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_CORNER_PULLER_R = 1.0
34 LIP_FUNNELER_LB
תמונה של פרצוף ניטרלי לצורך אימות
LIP_FUNNELER_LB = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_FUNNELER_LB = 1.0
35 LIP_FUNNELER_LT
תמונה של פרצוף ניטרלי לצורך אימות
LIP_FUNNELER_LT = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_FUNNELER_LT = 1.0
36 LIP_FUNNELER_RB
תמונה של פרצוף ניטרלי לצורך אימות
LIP_FUNNELER_RB = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_FUNNELER_RB = 1.0
37 LIP_FUNNELER_RT
תמונה של פרצוף ניטרלי לצורך אימות
LIP_FUNNELER_RT = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_FUNNELER_RT = 1.0
38 LIP_PRESSOR_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_PRESSOR_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_PRESSOR_L = 1.0
39 LIP_PRESSOR_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_PRESSOR_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_PRESSOR_R = 1.0
40 LIP_PUCKER_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_PUCKER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_PUCKER_L = 1.0
41 LIP_PUCKER_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_PUCKER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_PUCKER_R = 1.0
42 LIP_STRETCHER_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_STRETCHER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_STRETCHER_L = 1.0
43 LIP_STRETCHER_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_STRETCHER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_STRETCHER_R = 1.0
44 LIP_SUCK_LB
תמונה של פרצוף ניטרלי לצורך אימות
LIP_SUCK_LB = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_SUCK_LB = 1.0
45 LIP_SUCK_LT
תמונה של פרצוף ניטרלי לצורך אימות
LIP_SUCK_LT = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_SUCK_LT = 1.0
46 LIP_SUCK_RB
תמונה של פרצוף ניטרלי לצורך אימות
LIP_SUCK_RB = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_SUCK_RB = 1.0
47 LIP_SUCK_RT
תמונה של פרצוף ניטרלי לצורך אימות
LIP_SUCK_RT = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_SUCK_RT = 1.0
48 LIP_TIGHTENER_L
תמונה של פרצוף ניטרלי לצורך אימות
LIP_TIGHTENER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_TIGHTENER_L = 1.0
49 LIP_TIGHTENER_R
תמונה של פרצוף ניטרלי לצורך אימות
LIP_TIGHTENER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LIP_TIGHTENER_R = 1.0
50 LIPS_TOWARD
תמונה של פרצוף ניטרלי לצורך אימות
LIPS_TOWARD = 0.0
תמונה לדוגמה למעקב אחר הפנים
JAW_DROP = 1.0 and LIPS_TOWARD = 1.0
51 LOWER_LIP_DEPRESSOR_L
תמונה של פרצוף ניטרלי לצורך אימות
LOWER_LIP_DEPRESSOR_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
LOWER_LIP_DEPRESSOR_L = 1.0
52 LOWER_LIP_DEPRESSOR_R
תמונה של פרצוף ניטרלי לצורך אימות
LOWER_LIP_DEPRESSOR_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
LOWER_LIP_DEPRESSOR_R = 1.0
53 MOUTH_LEFT
תמונה של פרצוף ניטרלי לצורך אימות
MOUTH_LEFT = 0.0
תמונה לדוגמה למעקב אחר הפנים
MOUTH_LEFT = 1.0
54 MOUTH_RIGHT
תמונה של פרצוף ניטרלי לצורך אימות
MOUTH_RIGHT = 0.0
תמונה לדוגמה למעקב אחר הפנים
MOUTH_RIGHT = 1.0
55 NOSE_WRINKLER_L
תמונה של פרצוף ניטרלי לצורך אימות
NOSE_WRINKLER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
NOSE_WRINKLER_L = 1.0
56 NOSE_WRINKLER_R
תמונה של פרצוף ניטרלי לצורך אימות
NOSE_WRINKLER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
NOSE_WRINKLER_R = 1.0
57 OUTER_BROW_RAISER_L
תמונה של פרצוף ניטרלי לצורך אימות
OUTER_BROW_RAISER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
OUTER_BROW_RAISER_L = 1.0
58 OUTER_BROW_RAISER_R
תמונה של פרצוף ניטרלי לצורך אימות
OUTER_BROW_RAISER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
OUTER_BROW_RAISER_R = 1.0
59 UPPER_LID_RAISER_L
תמונה של פרצוף ניטרלי לצורך אימות
UPPER_LID_RAISER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
UPPER_LID_RAISER_L = 1.0
60 UPPER_LID_RAISER_R
תמונה של פרצוף ניטרלי לצורך אימות
UPPER_LID_RAISER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
UPPER_LID_RAISER_R = 1.0
61 UPPER_LIP_RAISER_L
תמונה של פרצוף ניטרלי לצורך אימות
UPPER_LIP_RAISER_L = 0.0
תמונה לדוגמה למעקב אחר הפנים
UPPER_LIP_RAISER_L = 1.0
62 UPPER_LIP_RAISER_R
תמונה של פרצוף ניטרלי לצורך אימון
UPPER_LIP_RAISER_R = 0.0
תמונה לדוגמה למעקב אחר הפנים
UPPER_LIP_RAISER_R = 1.0

קוד לדוגמה למעקב אחר פנים

הקוד לדוגמה הבא מראה איך לקבל את כל המשקלים של צורות המיזוג של הבעת הפנים.

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

  • 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

משתני Enum חדשים

מבנים חדשים

פונקציות חדשות

בעיות

היסטוריית הגרסאות

  • גרסה 1, 5 בספטמבר 2024 (Levana Chen)
    • תיאור ראשוני של התוסף