מחרוזת שם
XR_ANDROID_face_tracking
סוג התוסף
תוסף למכונה
מספר תוסף רשום
459
גרסה
1
תלות בתוספים ובגרסאות
תאריך השינוי האחרון
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);
תיאורי פרמטרים
session
הוא ה-handle של XrSession שבו מעקב הפנים יהיה פעיל.createInfo
הוא XrFaceTrackerCreateInfoANDROID שמשמש לציון מכשיר מעקב הפנים.faceTracker
הוא ה-handle של XrFaceTrackerANDROID המוחזר.
אפליקציה יכולה ליצור מנוף XrFaceTrackerANDROID באמצעות הפונקציה xrCreateFaceTrackerANDROID.
אם המערכת לא תומכת במעקב אחר פנים, הפונקציה xrCreateFaceTrackerANDROID תחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED
.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_face_tracking
לפני שמפעילים את xrCreateFaceTrackerANDROID session
חייב להיות מזהה XrSession חוקיcreateInfo
חייב להיות הפניה למבנה חוקי של XrFaceTrackerCreateInfoANDROIDfaceTracker
חייב להיות מצביע למזהה 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.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_face_tracking
לפני שמשתמשים ב-XrFaceTrackerCreateInfoANDROID - הערך של
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_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
כדי לשקף את מצב כיול הפנים.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_face_tracking
לפני שמפעילים את xrGetFaceCalibrationStateANDROID 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 שמקבלת את המצב של מעקב הפנים והבעות הפנים שהוחזרו.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_face_tracking
לפני שמפעילים את xrGetFaceStateANDROID faceTracker
חייב להיות מזהה XrFaceTrackerANDROID חוקיgetInfo
חייב להיות הפניה למבנה תקין של XrFaceStateGetInfoANDROIDfaceStateOutput
חייב להיות הפניה למבנה 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
שבו מתבצעת הבקשה לקבלת הבעות הפנים.
אפליקציות צריכות לבקש זמן שווה לזמן ההצגה המשוער של המסגרת שעבר רינדור.
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
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;
} 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).
שימוש תקין (מרומז)
- חובה להפעיל את התוסף
XR_ANDROID_face_tracking
לפני שמשתמשים ב-XrFaceStateANDROID - הערך של
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 יש את המשמעויות הבאות:
Enum |
תיאור |
|
מציין שמעקב הפנים מושהה, אבל יכול להימשך בעתיד. |
|
המעקב הופסק, אבל עדיין יש ללקוח מכשיר מעקב פנים פעיל. |
|
מתבצע מעקב אחר הפנים והתנוחה שלו עדכנית. |
מוסכמות של צורות מיזוג
התוסף הזה מגדיר 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 | ||
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
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 חדשים
מבנים חדשים
פונקציות חדשות
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
בעיות
היסטוריית הגרסאות
- גרסה 1, 5 בספטמבר 2024 (Levana Chen)
- תיאור ראשוני של התוסף