Menggabungkan pelacakan wajah di aplikasi Anda dengan ARCore untuk Jetpack XR

Setelah pengguna memberikan izin untuk pelacakan wajah, aplikasi Anda dapat mengambil informasi bentuk wajah melalui ARCore untuk Jetpack XR. Informasi bentuk wajah dapat membantu aplikasi Anda menampilkan pengguna di dunia virtual, misalnya, untuk mencoba kacamata virtual.

Membuat sesi ARCore untuk Jetpack XR

Mendapatkan informasi postur kepala melalui sesi ARCore untuk Jetpack XR. Lihat Memahami siklus proses Sesi untuk mendapatkan Session.

Mengonfigurasi sesi

Pelacakan wajah tidak diaktifkan secara default pada sesi XR. Untuk mengaktifkan pelacakan wajah, konfigurasi sesi dan tetapkan mode 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. */)
}

Mengambil data wajah

Gunakan Face.getUserFace(session) untuk mengambil data wajah pengguna, yang berisi hal berikut:

  • Nilai blendshape wajah: Kemungkinan ekspresi wajah adalah kombinasi dari 68 nilai blend shape. Setiap nilai bentuk campuran mewakili gerakan wajah atau deformasi wajah, dan nilai tersebut menunjukkan intensitasnya, mulai dari 0.0 hingga 1.0. Untuk penjelasan setiap jenis bentuk campuran, lihat Memahami jenis bentuk campuran wajah.
  • Nilai keyakinan untuk wilayah: Wajah memiliki tiga wilayah. Nilai keyakinan menunjukkan tingkat kepastian akurasi untuk pose yang diberikan, mulai dari 0.0 hingga 1.0, dengan 1.0 menunjukkan keyakinan tertinggi.

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]
}

Memahami jenis blendshape wajah

Tabel berikut mencantumkan setiap jenis bentuk campuran wajah:

Blendshape wilayah atas

Nama Gambar Referensi
BROW_LOWERER_L
Gambar referensi wajah netral
BROW_LOWERER_L = 0.0
gambar referensi pelacakan wajah
BROW_LOWERER_L = 1.0
BROW_LOWERER_R
Gambar referensi wajah netral
BROW_LOWERER_R = 0.0
gambar referensi pelacakan wajah
BROW_LOWERER_R = 1.0
EYES_CLOSED_L
Gambar referensi wajah netral
EYES_CLOSED_L = 0.0
gambar referensi pelacakan wajah
EYES_CLOSED_L = 1.0
EYES_CLOSED_R
Gambar referensi wajah netral
EYES_CLOSED_R = 0.0
gambar referensi pelacakan wajah
EYES_CLOSED_R = 1.0
EYES_LOOK_DOWN_L
Gambar referensi wajah netral
EYES_LOOK_DOWN_L = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_DOWN_L = 1.0
EYES_LOOK_DOWN_R
Gambar referensi wajah netral
EYES_LOOK_DOWN_R = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_DOWN_R = 1.0
EYES_LOOK_LEFT_L
Gambar referensi wajah netral
EYES_LOOK_LEFT_L = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_LEFT_L = 1.0
EYES_LOOK_LEFT_R
Gambar referensi wajah netral
EYES_LOOK_LEFT_R = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_LEFT_R = 1.0
EYES_LOOK_RIGHT_L
Gambar referensi wajah netral
EYES_LOOK_RIGHT_L = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_RIGHT_L = 1.0
EYES_LOOK_RIGHT_R
Gambar referensi wajah netral
EYES_LOOK_RIGHT_R = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_RIGHT_R = 1.0
EYES_LOOK_UP_L
Gambar referensi wajah netral
EYES_LOOK_UP_L = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_UP_L = 1.0
EYES_LOOK_UP_R
Gambar referensi wajah netral
EYES_LOOK_UP_R = 0.0
gambar referensi pelacakan wajah
EYES_LOOK_UP_R = 1.0
INNER_BROW_RAISER_L
Gambar referensi wajah netral
INNER_BROW_RAISER_L = 0.0
gambar referensi pelacakan wajah
INNER_BROW_RAISER_L = 1.0
INNER_BROW_RAISER_R
Gambar referensi wajah netral
INNER_BROW_RAISER_R = 0.0
gambar referensi pelacakan wajah
INNER_BROW_RAISER_R = 1.0
LID_TIGHTENER_L
Gambar referensi wajah netral
LID_TIGHTENER_L = 0.0
gambar referensi pelacakan wajah
LID_TIGHTENER_L = 1.0
LID_TIGHTENER_R
Gambar referensi wajah netral
LID_TIGHTENER_R = 0.0
gambar referensi pelacakan wajah
LID_TIGHTENER_R = 1.0
OUTER_BROW_RAISER_L
Gambar referensi wajah netral
OUTER_BROW_RAISER_L = 0.0
gambar referensi pelacakan wajah
OUTER_BROW_RAISER_L = 1.0
OUTER_BROW_RAISER_R
Gambar referensi wajah netral
OUTER_BROW_RAISER_R = 0.0
gambar referensi pelacakan wajah
OUTER_BROW_RAISER_R = 1.0
UPPER_LID_RAISER_L
Gambar referensi wajah netral
UPPER_LID_RAISER_L = 0.0
gambar referensi pelacakan wajah
UPPER_LID_RAISER_L = 1.0
UPPER_LID_RAISER_R
Gambar referensi wajah netral
UPPER_LID_RAISER_R = 0.0
gambar referensi pelacakan wajah
UPPER_LID_RAISER_R = 1.0

Blendshape wilayah bawah

Nama Gambar Referensi
CHEEK_PUFF_L
Gambar referensi wajah netral
CHEEK_PUFF_L = 0.0
gambar referensi pelacakan wajah
CHEEK_PUFF_L = 1.0
CHEEK_PUFF_R
Gambar referensi wajah netral
CHEEK_PUFF_R = 0.0
gambar referensi pelacakan wajah
CHEEK_PUFF_R = 1.0
CHEEK_RAISER_L
Gambar referensi wajah netral
CHEEK_RAISER_L = 0.0
gambar referensi pelacakan wajah
CHEEK_RAISER_L = 1.0
CHEEK_RAISER_R
Gambar referensi wajah netral
CHEEK_RAISER_R = 0.0
gambar referensi pelacakan wajah
CHEEK_RAISER_R = 1.0
CHEEK_SUCK_L
Gambar referensi wajah netral
CHEEK_SUCK_L = 0.0
gambar referensi pelacakan wajah
CHEEK_SUCK_L = 1.0
CHEEK_SUCK_R
Gambar referensi wajah netral
CHEEK_SUCK_R = 0.0
gambar referensi pelacakan wajah
CHEEK_SUCK_R = 1.0
CHIN_RAISER_B
Gambar referensi wajah netral
CHIN_RAISER_B = 0.0
gambar referensi pelacakan wajah
CHIN_RAISER_B = 1.0
CHIN_RAISER_T
Gambar referensi wajah netral
CHIN_RAISER_T = 0.0
gambar referensi pelacakan wajah
CHIN_RAISER_T = 1.0
DIMPLER_L
Gambar referensi wajah netral
DIMPLER_L = 0.0
gambar referensi pelacakan wajah
DIMPLER_L = 1.0
DIMPLER_R
Gambar referensi wajah netral
DIMPLER_R = 0.0
gambar referensi pelacakan wajah
DIMPLER_R = 1.0
JAW_DROP
Gambar referensi wajah netral
JAW_DROP = 0.0
gambar referensi pelacakan wajah
JAW_DROP = 1.0
JAW_SIDEWAYS_LEFT
Gambar referensi wajah netral
JAW_SIDEWAYS_LEFT = 0.0
gambar referensi pelacakan wajah
JAW_SIDEWAYS_LEFT = 1.0
JAW_SIDEWAYS_RIGHT
Gambar referensi wajah netral
JAW_SIDEWAYS_RIGHT = 0.0
gambar referensi pelacakan wajah
JAW_SIDEWAYS_RIGHT = 1.0
JAW_THRUST
Gambar referensi wajah netral
JAW_THRUST = 0.0
gambar referensi pelacakan wajah
JAW_THRUST = 1.0
LIP_CORNER_DEPRESSOR_L
Gambar referensi wajah netral
LIP_CORNER_DEPRESSOR_L = 0.0
gambar referensi pelacakan wajah
LIP_CORNER_DEPRESSOR_L = 1.0
LIP_CORNER_DEPRESSOR_R
Gambar referensi wajah netral
LIP_CORNER_DEPRESSOR_R = 0.0
gambar referensi pelacakan wajah
LIP_CORNER_DEPRESSOR_R = 1.0
LIP_CORNER_PULLER_L
Gambar referensi wajah netral
LIP_CORNER_PULLER_L = 0.0
gambar referensi pelacakan wajah
LIP_CORNER_PULLER_L = 1.0
LIP_CORNER_PULLER_R
Gambar referensi wajah netral
LIP_CORNER_PULLER_R = 0.0
gambar referensi pelacakan wajah
LIP_CORNER_PULLER_R = 1.0
LIP_FUNNELER_LB
Gambar referensi wajah netral
LIP_FUNNELER_LB = 0.0
gambar referensi pelacakan wajah
LIP_FUNNELER_LB = 1.0
LIP_FUNNELER_LT
Gambar referensi wajah netral
LIP_FUNNELER_LT = 0.0
gambar referensi pelacakan wajah
LIP_FUNNELER_LT = 1.0
LIP_FUNNELER_RB
Gambar referensi wajah netral
LIP_FUNNELER_RB = 0.0
gambar referensi pelacakan wajah
LIP_FUNNELER_RB = 1.0
LIP_FUNNELER_RT
Gambar referensi wajah netral
LIP_FUNNELER_RT = 0.0
gambar referensi pelacakan wajah
LIP_FUNNELER_RT = 1.0
LIP_PRESSOR_L
Gambar referensi wajah netral
LIP_PRESSOR_L = 0.0
gambar referensi pelacakan wajah
LIP_PRESSOR_L = 1.0
LIP_PRESSOR_R
Gambar referensi wajah netral
LIP_PRESSOR_R = 0.0
gambar referensi pelacakan wajah
LIP_PRESSOR_R = 1.0
LIP_PUCKER_L
Gambar referensi wajah netral
LIP_PUCKER_L = 0.0
gambar referensi pelacakan wajah
LIP_PUCKER_L = 1.0
LIP_PUCKER_R
Gambar referensi wajah netral
LIP_PUCKER_R = 0.0
gambar referensi pelacakan wajah
LIP_PUCKER_R = 1.0
LIP_STRETCHER_L
Gambar referensi wajah netral
LIP_STRETCHER_L = 0.0
gambar referensi pelacakan wajah
LIP_STRETCHER_L = 1.0
LIP_STRETCHER_R
Gambar referensi wajah netral
LIP_STRETCHER_R = 0.0
gambar referensi pelacakan wajah
LIP_STRETCHER_R = 1.0
LIP_SUCK_LB
Gambar referensi wajah netral
LIP_SUCK_LB = 0.0
gambar referensi pelacakan wajah
LIP_SUCK_LB = 1.0
LIP_SUCK_LT
Gambar referensi wajah netral
LIP_SUCK_LT = 0.0
gambar referensi pelacakan wajah
LIP_SUCK_LT = 1.0
LIP_SUCK_RB
Gambar referensi wajah netral
LIP_SUCK_RB = 0.0
gambar referensi pelacakan wajah
LIP_SUCK_RB = 1.0
LIP_SUCK_RT
Gambar referensi wajah netral
LIP_SUCK_RT = 0.0
gambar referensi pelacakan wajah
LIP_SUCK_RT = 1.0
LIP_TIGHTENER_L
Gambar referensi wajah netral
LIP_TIGHTENER_L = 0.0
gambar referensi pelacakan wajah
LIP_TIGHTENER_L = 1.0
LIP_TIGHTENER_R
Gambar referensi wajah netral
LIP_TIGHTENER_R = 0.0
gambar referensi pelacakan wajah
LIP_TIGHTENER_R = 1.0
LIPS_TOWARD
Gambar referensi wajah netral
LIPS_TOWARD = 0.0
gambar referensi pelacakan wajah
JAW_DROP = 1.0 and LIPS_TOWARD = 1.0
LOWER_LIP_DEPRESSOR_L
Gambar referensi wajah netral
LOWER_LIP_DEPRESSOR_L = 0.0
gambar referensi pelacakan wajah
LOWER_LIP_DEPRESSOR_L = 1.0
LOWER_LIP_DEPRESSOR_R
Gambar referensi wajah netral
LOWER_LIP_DEPRESSOR_R = 0.0
gambar referensi pelacakan wajah
LOWER_LIP_DEPRESSOR_R = 1.0
MOUTH_LEFT
Gambar referensi wajah netral
MOUTH_LEFT = 0.0
gambar referensi pelacakan wajah
MOUTH_LEFT = 1.0
MOUTH_RIGHT
Gambar referensi wajah netral
MOUTH_RIGHT = 0.0
gambar referensi pelacakan wajah
MOUTH_RIGHT = 1.0
NOSE_WRINKLER_L
Gambar referensi wajah netral
NOSE_WRINKLER_L = 0.0
gambar referensi pelacakan wajah
NOSE_WRINKLER_L = 1.0
NOSE_WRINKLER_R
Gambar referensi wajah netral
NOSE_WRINKLER_R = 0.0
gambar referensi pelacakan wajah
NOSE_WRINKLER_R = 1.0
UPPER_LIP_RAISER_L
Gambar referensi wajah netral
UPPER_LIP_RAISER_L = 0.0
gambar referensi pelacakan wajah
UPPER_LIP_RAISER_L = 1.0
UPPER_LIP_RAISER_R
Gambar referensi wajah netral
UPPER_LIP_RAISER_R = 0.0
gambar referensi pelacakan wajah
UPPER_LIP_RAISER_R = 1.0
TONGUE_OUT
Gambar referensi wajah netral
TONGUE_OUT = 0.0
gambar referensi pelacakan wajah
TONGUE_OUT = 1.0
TONGUE_LEFT
Gambar referensi wajah netral
TONGUE_LEFT = 0.0
gambar referensi pelacakan wajah
TONGUE_LEFT = 1.0
TONGUE_RIGHT
Gambar referensi wajah netral
TONGUE_RIGHT = 0.0
gambar referensi pelacakan wajah
TONGUE_RIGHT = 1.0
TONGUE_UP
Gambar referensi wajah netral
TONGUE_UP = 0.0
gambar referensi pelacakan wajah
TONGUE_UP = 1.0
TONGUE_DOWN
Gambar referensi wajah netral
TONGUE_DOWN = 0.0
gambar referensi pelacakan wajah
TONGUE_DOWN = 1.0