بعد أن يمنح المستخدم إذنًا بتتبُّع الوجه، يمكن لتطبيقك استرداد معلومات حول شكل الوجه من خلال ARCore for Jetpack XR. يمكن أن تساعد معلومات شكل الوجه تطبيقك في عرض المستخدم في العالم الافتراضي، مثلاً، لتجربة نظارات افتراضية.
إنشاء جلسة ARCore لـ Jetpack XR
الحصول على معلومات الوجه من خلال Jetpack XR Runtime 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] }
فهم أنواع أشكال مزج الوجوه
تعرض الجداول التالية كل نوع من أشكال مزج الوجوه:
أشكال المزج في المنطقة العلوية
| الاسم | الصور المرجعية | |
|---|---|---|
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 |
Lower region blendshapes
| الاسم | الصور المرجعية | |
|---|---|---|
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_LEFT |
|
|
TONGUE_RIGHT |
|
|
TONGUE_UP |
|
|
TONGUE_DOWN |
|
|