دمج ميزة تتبُّع الوجه في تطبيقك باستخدام ARCore for Jetpack XR

بعد أن يمنح المستخدم إذنًا بتتبُّع الوجه، يمكن لتطبيقك استرداد معلومات حول شكل الوجه من خلال ARCore for Jetpack XR. يمكن أن تساعد معلومات شكل الوجه تطبيقك في عرض المستخدم في العالم الافتراضي، مثلاً، لتجربة نظارات افتراضية.

إنشاء جلسة ARCore لـ Jetpack XR

الحصول على معلومات حول وضعية الرأس من خلال جلسة ARCore for Jetpack XR راجِع مقالة التعرّف على رحلة المستخدِم خلال الجلسة للحصول على Session.

ضبط الجلسة

لا يتم تفعيل ميزة تتبُّع الوجه تلقائيًا في جلسات XR. لتفعيل ميزة تتبُّع الوجه، اضبط الجلسة وحدِّد الوضع FaceTrackingMode.USER:

val newConfig = session.config.copy(
    faceTracking = Config.FaceTrackingMode.USER,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    is SessionConfigureConfigurationNotSupported ->
        TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

استرداد بيانات الوجه

استخدِم Face.getUserFace(session) لاسترداد بيانات وجه المستخدم، والتي تتضمّن ما يلي:

  • قيم أشكال المزج للوجه: إنّ تعابير الوجه المحتملة هي مزيج من 68 قيمة لأشكال المزج. تمثّل كل قيمة من قيم أشكال المزج حركة وجه أو تشوّهًا في الوجه، وتشير القيمة إلى شدة الحركة أو التشوّه، وتتراوح بين 0.0 و1.0. للحصول على شرح لكل نوع من أنواع أشكال المزج، يُرجى الاطّلاع على مقالة التعرّف على أنواع أشكال المزج الخاصة بالوجه.
  • قيم الثقة للمناطق: يحتوي الوجه على ثلاث مناطق. تشير قيم الثقة إلى درجة التأكّد من دقة الوضعيات المحدّدة، وتتراوح بين 0.0 و1.0، حيث يشير 1.0 إلى أعلى مستوى ثقة.

val face = Face.getUserFace(session) ?: return
face.state.collect { state ->
    if (state.trackingState != TrackingState.TRACKING) return@collect

    val confidence = state.getConfidence(FaceConfidenceRegion.FACE_CONFIDENCE_REGION_LOWER)
    val blendShapeValue = state.blendShapes[FaceBlendShapeType.FACE_BLEND_SHAPE_TYPE_LIPS_TOWARD]
}

فهم أنواع أشكال الوجه

تعرض الجداول التالية كل نوع من أشكال مزج الوجوه:

Upper region blendshapes

الاسم الصور المرجعية
BROW_LOWERER_L
صورة مرجعية لوجه بدون مشاعر
BROW_LOWERER_L = 0.0
صورة مرجعية لتتبُّع الوجه
BROW_LOWERER_L = 1.0
BROW_LOWERER_R
صورة مرجعية لوجه بدون مشاعر
BROW_LOWERER_R = 0.0
صورة مرجعية لتتبُّع الوجه
BROW_LOWERER_R = 1.0
EYES_CLOSED_L
صورة مرجعية لوجه بدون مشاعر
EYES_CLOSED_L = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_CLOSED_L = 1.0
EYES_CLOSED_R
صورة مرجعية لوجه بدون مشاعر
EYES_CLOSED_R = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_CLOSED_R = 1.0
EYES_LOOK_DOWN_L
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_DOWN_L = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_DOWN_L = 1.0
EYES_LOOK_DOWN_R
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_DOWN_R = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_DOWN_R = 1.0
EYES_LOOK_LEFT_L
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_LEFT_L = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_LEFT_L = 1.0
EYES_LOOK_LEFT_R
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_LEFT_R = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_LEFT_R = 1.0
EYES_LOOK_RIGHT_L
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_RIGHT_L = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_RIGHT_L = 1.0
EYES_LOOK_RIGHT_R
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_RIGHT_R = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_RIGHT_R = 1.0
EYES_LOOK_UP_L
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_UP_L = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_UP_L = 1.0
EYES_LOOK_UP_R
صورة مرجعية لوجه بدون مشاعر
EYES_LOOK_UP_R = 0.0
صورة مرجعية لتتبُّع الوجه
EYES_LOOK_UP_R = 1.0
INNER_BROW_RAISER_L
صورة مرجعية لوجه بدون مشاعر
INNER_BROW_RAISER_L = 0.0
صورة مرجعية لتتبُّع الوجه
INNER_BROW_RAISER_L = 1.0
INNER_BROW_RAISER_R
صورة مرجعية لوجه بدون مشاعر
INNER_BROW_RAISER_R = 0.0
صورة مرجعية لتتبُّع الوجه
INNER_BROW_RAISER_R = 1.0
LID_TIGHTENER_L
صورة مرجعية لوجه بدون مشاعر
LID_TIGHTENER_L = 0.0
صورة مرجعية لتتبُّع الوجه
LID_TIGHTENER_L = 1.0
LID_TIGHTENER_R
صورة مرجعية لوجه بدون مشاعر
LID_TIGHTENER_R = 0.0
صورة مرجعية لتتبُّع الوجه
LID_TIGHTENER_R = 1.0
OUTER_BROW_RAISER_L
صورة مرجعية لوجه بدون مشاعر
OUTER_BROW_RAISER_L = 0.0
صورة مرجعية لتتبُّع الوجه
OUTER_BROW_RAISER_L = 1.0
OUTER_BROW_RAISER_R
صورة مرجعية لوجه بدون مشاعر
OUTER_BROW_RAISER_R = 0.0
صورة مرجعية لتتبُّع الوجه
OUTER_BROW_RAISER_R = 1.0
UPPER_LID_RAISER_L
صورة مرجعية لوجه بدون مشاعر
UPPER_LID_RAISER_L = 0.0
صورة مرجعية لتتبُّع الوجه
UPPER_LID_RAISER_L = 1.0
UPPER_LID_RAISER_R
صورة مرجعية لوجه بدون مشاعر
UPPER_LID_RAISER_R = 0.0
صورة مرجعية لتتبُّع الوجه
UPPER_LID_RAISER_R = 1.0

أشكال المزج في المنطقة السفلية

الاسم الصور المرجعية
CHEEK_PUFF_L
صورة مرجعية لوجه بدون مشاعر
CHEEK_PUFF_L = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_PUFF_L = 1.0
CHEEK_PUFF_R
صورة مرجعية لوجه بدون مشاعر
CHEEK_PUFF_R = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_PUFF_R = 1.0
CHEEK_RAISER_L
صورة مرجعية لوجه بدون مشاعر
CHEEK_RAISER_L = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_RAISER_L = 1.0
CHEEK_RAISER_R
صورة مرجعية لوجه بدون مشاعر
CHEEK_RAISER_R = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_RAISER_R = 1.0
CHEEK_SUCK_L
صورة مرجعية لوجه بدون مشاعر
CHEEK_SUCK_L = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_SUCK_L = 1.0
CHEEK_SUCK_R
صورة مرجعية لوجه بدون مشاعر
CHEEK_SUCK_R = 0.0
صورة مرجعية لتتبُّع الوجه
CHEEK_SUCK_R = 1.0
CHIN_RAISER_B
صورة مرجعية لوجه بدون مشاعر
CHIN_RAISER_B = 0.0
صورة مرجعية لتتبُّع الوجه
CHIN_RAISER_B = 1.0
CHIN_RAISER_T
صورة مرجعية لوجه بدون مشاعر
CHIN_RAISER_T = 0.0
صورة مرجعية لتتبُّع الوجه
CHIN_RAISER_T = 1.0
DIMPLER_L
صورة مرجعية لوجه بدون مشاعر
DIMPLER_L = 0.0
صورة مرجعية لتتبُّع الوجه
DIMPLER_L = 1.0
DIMPLER_R
صورة مرجعية لوجه بدون مشاعر
DIMPLER_R = 0.0
صورة مرجعية لتتبُّع الوجه
DIMPLER_R = 1.0
JAW_DROP
صورة مرجعية لوجه بدون مشاعر
JAW_DROP = 0.0
صورة مرجعية لتتبُّع الوجه
JAW_DROP = 1.0
JAW_SIDEWAYS_LEFT
صورة مرجعية لوجه بدون مشاعر
JAW_SIDEWAYS_LEFT = 0.0
صورة مرجعية لتتبُّع الوجه
JAW_SIDEWAYS_LEFT = 1.0
JAW_SIDEWAYS_RIGHT
صورة مرجعية لوجه بدون مشاعر
JAW_SIDEWAYS_RIGHT = 0.0
صورة مرجعية لتتبُّع الوجه
JAW_SIDEWAYS_RIGHT = 1.0
JAW_THRUST
صورة مرجعية لوجه بدون مشاعر
JAW_THRUST = 0.0
صورة مرجعية لتتبُّع الوجه
JAW_THRUST = 1.0
LIP_CORNER_DEPRESSOR_L
صورة مرجعية لوجه بدون مشاعر
LIP_CORNER_DEPRESSOR_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_CORNER_DEPRESSOR_L = 1.0
LIP_CORNER_DEPRESSOR_R
صورة مرجعية لوجه بدون مشاعر
LIP_CORNER_DEPRESSOR_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_CORNER_DEPRESSOR_R = 1.0
LIP_CORNER_PULLER_L
صورة مرجعية لوجه بدون مشاعر
LIP_CORNER_PULLER_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_CORNER_PULLER_L = 1.0
LIP_CORNER_PULLER_R
صورة مرجعية لوجه بدون مشاعر
LIP_CORNER_PULLER_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_CORNER_PULLER_R = 1.0
LIP_FUNNELER_LB
صورة مرجعية لوجه بدون مشاعر
LIP_FUNNELER_LB = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_FUNNELER_LB = 1.0
LIP_FUNNELER_LT
صورة مرجعية لوجه بدون مشاعر
LIP_FUNNELER_LT = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_FUNNELER_LT = 1.0
LIP_FUNNELER_RB
صورة مرجعية لوجه بدون مشاعر
LIP_FUNNELER_RB = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_FUNNELER_RB = 1.0
LIP_FUNNELER_RT
صورة مرجعية لوجه بدون مشاعر
LIP_FUNNELER_RT = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_FUNNELER_RT = 1.0
LIP_PRESSOR_L
صورة مرجعية لوجه بدون مشاعر
LIP_PRESSOR_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_PRESSOR_L = 1.0
LIP_PRESSOR_R
صورة مرجعية لوجه بدون مشاعر
LIP_PRESSOR_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_PRESSOR_R = 1.0
LIP_PUCKER_L
صورة مرجعية لوجه بدون مشاعر
LIP_PUCKER_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_PUCKER_L = 1.0
LIP_PUCKER_R
صورة مرجعية لوجه بدون مشاعر
LIP_PUCKER_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_PUCKER_R = 1.0
LIP_STRETCHER_L
صورة مرجعية لوجه بدون مشاعر
LIP_STRETCHER_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_STRETCHER_L = 1.0
LIP_STRETCHER_R
صورة مرجعية لوجه بدون مشاعر
LIP_STRETCHER_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_STRETCHER_R = 1.0
LIP_SUCK_LB
صورة مرجعية لوجه بدون مشاعر
LIP_SUCK_LB = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_SUCK_LB = 1.0
LIP_SUCK_LT
صورة مرجعية لوجه بدون مشاعر
LIP_SUCK_LT = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_SUCK_LT = 1.0
LIP_SUCK_RB
صورة مرجعية لوجه بدون مشاعر
LIP_SUCK_RB = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_SUCK_RB = 1.0
LIP_SUCK_RT
صورة مرجعية لوجه بدون مشاعر
LIP_SUCK_RT = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_SUCK_RT = 1.0
LIP_TIGHTENER_L
صورة مرجعية لوجه بدون مشاعر
LIP_TIGHTENER_L = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_TIGHTENER_L = 1.0
LIP_TIGHTENER_R
صورة مرجعية لوجه بدون مشاعر
LIP_TIGHTENER_R = 0.0
صورة مرجعية لتتبُّع الوجه
LIP_TIGHTENER_R = 1.0
LIPS_TOWARD
صورة مرجعية لوجه بدون مشاعر
LIPS_TOWARD = 0.0
صورة مرجعية لتتبُّع الوجه
JAW_DROP = 1.0 and LIPS_TOWARD = 1.0
LOWER_LIP_DEPRESSOR_L
صورة مرجعية لوجه بدون مشاعر
LOWER_LIP_DEPRESSOR_L = 0.0
صورة مرجعية لتتبُّع الوجه
LOWER_LIP_DEPRESSOR_L = 1.0
LOWER_LIP_DEPRESSOR_R
صورة مرجعية لوجه بدون مشاعر
LOWER_LIP_DEPRESSOR_R = 0.0
صورة مرجعية لتتبُّع الوجه
LOWER_LIP_DEPRESSOR_R = 1.0
MOUTH_LEFT
صورة مرجعية لوجه بدون مشاعر
MOUTH_LEFT = 0.0
صورة مرجعية لتتبُّع الوجه
MOUTH_LEFT = 1.0
MOUTH_RIGHT
صورة مرجعية لوجه بدون مشاعر
MOUTH_RIGHT = 0.0
صورة مرجعية لتتبُّع الوجه
MOUTH_RIGHT = 1.0
NOSE_WRINKLER_L
صورة مرجعية لوجه بدون مشاعر
NOSE_WRINKLER_L = 0.0
صورة مرجعية لتتبُّع الوجه
NOSE_WRINKLER_L = 1.0
NOSE_WRINKLER_R
صورة مرجعية لوجه بدون مشاعر
NOSE_WRINKLER_R = 0.0
صورة مرجعية لتتبُّع الوجه
NOSE_WRINKLER_R = 1.0
UPPER_LIP_RAISER_L
صورة مرجعية لوجه بدون مشاعر
UPPER_LIP_RAISER_L = 0.0
صورة مرجعية لتتبُّع الوجه
UPPER_LIP_RAISER_L = 1.0
UPPER_LIP_RAISER_R
صورة مرجعية لوجه بدون مشاعر
UPPER_LIP_RAISER_R = 0.0
صورة مرجعية لتتبُّع الوجه
UPPER_LIP_RAISER_R = 1.0
TONGUE_OUT
صورة مرجعية لوجه بدون مشاعر
TONGUE_OUT = 0.0
صورة مرجعية لتتبُّع الوجه
TONGUE_OUT = 1.0
TONGUE_LEFT
صورة مرجعية لوجه بدون مشاعر
TONGUE_LEFT = 0.0
صورة مرجعية لتتبُّع الوجه
TONGUE_LEFT = 1.0
TONGUE_RIGHT
صورة مرجعية لوجه بدون مشاعر
TONGUE_RIGHT = 0.0
صورة مرجعية لتتبُّع الوجه
TONGUE_RIGHT = 1.0
TONGUE_UP
صورة مرجعية لوجه بدون مشاعر
TONGUE_UP = 0.0
صورة مرجعية لتتبُّع الوجه
TONGUE_UP = 1.0
TONGUE_DOWN
صورة مرجعية لوجه بدون مشاعر
TONGUE_DOWN = 0.0
صورة مرجعية لتتبُّع الوجه
TONGUE_DOWN = 1.0