پس از اینکه کاربر اجازه ردیابی چهره را داد ، برنامه شما میتواند اطلاعات شکل چهره را از طریق ARCore برای Jetpack XR بازیابی کند. اطلاعات شکل چهره میتواند به برنامه شما کمک کند تا کاربر را در دنیای مجازی، مثلاً برای امتحان کردن عینک مجازی، نمایش دهد.
یک جلسه ARCore برای Jetpack XR ایجاد کنید
اطلاعات چهره را از طریق یک Session زمان اجرای Jetpack XR که برنامه شما میتواند ایجاد کند، دریافت کنید.
پیکربندی جلسه
ردیابی چهره به طور پیشفرض در جلسات 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) برای بازیابی دادههای چهره کاربر استفاده کنید که شامل موارد زیر است:
- مقادیر ترکیب شکل چهره : حالات ممکن یک چهره ترکیبی از ۶۸ مقدار شکل ترکیبی است. هر مقدار شکل ترکیبی نشان دهنده یک حرکت یا تغییر شکل چهره است و مقدار آن شدت آن را نشان میدهد که از
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 |
شکلهای ترکیبی ناحیه پایینی
| نام | تصاویر مرجع | |
|---|---|---|
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 | ![]() | ![]() |





































































