سلسلة الاسم
XR_ANDROID_face_tracking
نوع الإضافة
إضافة مثيل
رقم الإضافة المسجَّل
459
المراجعة
1
التبعيات المتعلّقة بالإصدارات والإضافات
تاريخ آخر تعديل
2024-09-06
حالة عنوان IP
ما مِن مطالبات معروفة بعناوين IP.
المساهمون
سبنسر كوين، Google
جاريد فايندر، Google
ليفانا تشين، Google
نظرة عامة
تتيح هذه الإضافة للتطبيقات الحصول على أوزان أشكال المزج وعرض تعابير الوجه في تجارب الواقع المعزّز.
تهدف هذه الإضافة إلى تقديم المعلومات اللازمة لإنشاء نماذج аватارات طبيعية ومعبّرة للمستخدمين في الفضاء الافتراضي. يمكن للتطبيق التحقّق من تفعيل معايرة الوجه قبل الحصول على أوزان أشكال الدمج.
أداة تتبُّع الوجه
جهاز تتبُّع الوجوه هو جهاز استشعار يتتبّع تعابير الوجه من خلال بث الصور الموجَّهة للمستخدمين ومعايرة الكاميرا. يتمثل الغرض الرئيسي من هذه الإضافة في ربط تعابير الوجه للمستخدمين بصورهم الرمزية في مشهد افتراضي.
بيانات تتبُّع الوجوه هي معلومات شخصية حسّاسة وترتبط ارتباطًا وثيقًا بالخصوصية الشخصية والنزاهة. ننصح بشدة بأن تطلب التطبيقات التي تخزِّن بيانات تتبُّع الوجوه أو تنقلها من المستخدم قبولًا نشطًا ومحددًا لإجراء ذلك.
- ستتلقّى التطبيقات
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 المعروض.
يمكن للتطبيق إنشاء معرّف XrFaceTrackerANDROID باستخدام الدالة xrCreateFaceTrackerANDROID.
إذا كان النظام لا يتيح تتبُّع الوجوه، سيعرض xrCreateFaceTrackerANDROID
القيمة XR_ERROR_FEATURE_UNSUPPORTED
.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
XR_ANDROID_face_tracking
قبل استدعاء xrCreateFaceTrackerANDROID. 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.
الاستخدام الصالح (ضمني)
- يجب تفعيل امتداد
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
يجب أن يكون مؤشرًا إلى بنية 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
يتم فيه طلب تعابير الوجه.
يجب أن تطلب التطبيقات وقتًا يساوي وقت العرض المتوقّع للإطار المعروض.
الاستخدام الصالح (ضمني)
- يجب تفعيل إضافة
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
إلى ما إذا كانت البيانات صالحة حتى لو لم تكن من الإطار الحالي. - اطّلِع على قسم مَعلمات حجم المخزن المؤقت للحصول على وصف تفصيلي ل retrieving the required
parameters
size.
يمكن للتطبيق ضبط parametersCapacityInput
على
XR_FACE_PARAMETER_COUNT_ANDROID
للحصول على تعابير الوجه التي يتم فهرستها باستخدام XrFaceParameterIndicesANDROID.
يمثّل parameters
المعروض ترجيحات دمج
أشكال تعبيرات الوجه الحالية.
سيتم ترتيب تعديلات صفيف parameters
لكي يمكن للتطبيق فهرسة العناصر باستخدام التعداد المرتبط بتعبير الوجه (مثل 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 |
الوصف |
|
يشير ذلك إلى أنّ ميزة "تتبُّع الوجوه" متوقّفة مؤقتًا، ولكن قد تتم استعادتها في المستقبل. |
|
توقّف التتبّع ولكن لا يزال لدى العميل أداة تتبُّع للوجه نشطة. |
|
يتم تتبُّع الوجه ووضعه الحالي. |
اصطلاحات دمج الأشكال
تحدِّد هذه الإضافة 63 شكلاً للمزج من خلال
XR_FACE_PARAMETER_COUNT_ANDROID
، لتنسيق G-Nome المُعدَّل. كل مَعلمة
في هذا التعداد هي فهرس في صفيف شكل مزيج تكون قيمه من النوع
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));
أنواع العناصر الجديدة
ثوابت قائمة التعداد الجديدة
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
عمليات التعداد الجديدة
التصاميم الجديدة
الدوالّ الجديدة
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
المشاكل
سجلّ الإصدارات
- المراجعة 1، 05-09-2024 (ليفانا تشين)
- الوصف الأولي للإضافة