إضافة XR_ANDROID_face_tracking OpenXR

سلسلة الاسم

XR_ANDROID_face_tracking

نوع الإضافة

إضافة مثيل

رقم الإضافة المسجَّل

459

المراجعة

1

التبعيات المتعلّقة بالإصدارات والإضافات

OpenXR 1.0

تاريخ آخر تعديل

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

أوصاف المَعلمات

يمكن للتطبيق إنشاء معرّف 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 إلى ما إذا كانت البيانات صالحة حتى لو لم تكن من الإطار الحالي.
  • اطّلِع على قسم مَعلمات حجم المخزن المؤقت للحصول على وصف تفصيلي ل retrieving the required parameters size.

يمكن للتطبيق ضبط parametersCapacityInput على XR_FACE_PARAMETER_COUNT_ANDROID للحصول على تعابير الوجه التي يتم فهرستها باستخدام XrFaceParameterIndicesANDROID.

يمثّل parameters المعروض ترجيحات دمج أشكال تعبيرات الوجه الحالية.

سيتم ترتيب تعديلات صفيف parameters لكي يمكن للتطبيق فهرسة العناصر باستخدام التعداد المرتبط بتعبير الوجه (مثل 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

الوصف

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 المُعدَّل. كل مَعلمة في هذا التعداد هي فهرس في صفيف شكل مزيج تكون قيمه من النوع 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));

أنواع العناصر الجديدة

ثوابت قائمة التعداد الجديدة

  • 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

عمليات التعداد الجديدة

التصاميم الجديدة

الدوالّ الجديدة

المشاكل

سجلّ الإصدارات

  • المراجعة 1، ‎05-09-2024 (ليفانا تشين)
    • الوصف الأولي للإضافة