Panduan developer Augmented Faces untuk Sceneform

Pelajari cara menggunakan fitur Augmented Faces di aplikasi Anda sendiri.

Mem-build dan menjalankan aplikasi contoh

Untuk membuat dan menjalankan aplikasi AugmentedFaces Java:

  1. Buka Android Studio versi 3.1 atau yang lebih baru. Sebaiknya gunakan perangkat fisik (dan bukan Android Emulator) agar berfungsi dengan Augmented Faces. Perangkat harus terhubung ke mesin pengembangan melalui USB. Lihat panduan memulai Android untuk mengetahui langkah-langkah mendetail.

  2. Impor sampel Java AugmentedFaces ke project Anda.

  3. Di Android Studio, klik Run . Kemudian, pilih perangkat Anda sebagai target deployment dan klik OK untuk meluncurkan aplikasi contoh di perangkat Anda.

  4. Klik Setujui untuk memberi kamera akses ke aplikasi contoh.

    Aplikasi akan membuka kamera depan dan segera melacak wajah Anda di feed kamera. Gambar ini harus menempatkan gambar telinga rubah di kedua sisi dahi Anda, dan menempatkan hidung rubah di atas hidung Anda sendiri.

Menggunakan Augmented Faces di Sceneform

  1. Mengimpor aset ke Sceneform

  2. Mengonfigurasi sesi ARCore

  3. Mendapatkan akses ke wajah yang terdeteksi

  4. Merender efek pada wajah yang terdeteksi

Mengimpor aset ke dalam Sceneform

Pastikan aset yang Anda gunakan untuk Augmented Faces diskalakan dan diposisikan dengan benar. Untuk tips dan praktik, lihat Membuat Aset untuk Tampilan Augmented.

Untuk menerapkan aset seperti tekstur dan model 3D ke mesh wajah yang ditingkatkan dalam Sceneform, impor aset terlebih dahulu.

Saat runtime, gunakan ModelRenderable.Builder untuk memuat model *.sfb, dan gunakan Texture.Builder untuk memuat tekstur wajah.

// To ensure that the asset doesn't cast or receive shadows in the scene,
// ensure that setShadowCaster and setShadowReceiver are both set to false.
ModelRenderable.builder()
    .setSource(this, R.raw.fox_face)
    .build()
    .thenAccept(
        modelRenderable -> {
          faceRegionsRenderable = modelRenderable;
          modelRenderable.setShadowCaster(false);
          modelRenderable.setShadowReceiver(false);
        });

// Load the face mesh texture.
Texture.builder()
    .setSource(this, R.drawable.fox_face_mesh_texture)
    .build()
    .thenAccept(texture -> faceMeshTexture = texture);

Orientasi mesh wajah

Perhatikan orientasi mesh wajah untuk Sceneform:

Mengonfigurasi sesi ARCore

Augmented Faces memerlukan sesi ARCore yang dikonfigurasi untuk menggunakan kamera depan (selfie) dan mengaktifkan dukungan mesh wajah. Untuk melakukannya di Sceneform, perluas class ARfragment, dan ganti konfigurasi:

@Override
protected Set<Session.Feature> getSessionFeatures() {
  return EnumSet.of(Session.Feature.FRONT_CAMERA);
}

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setAugmentedFaceMode(AugmentedFaceMode.MESH3D);
  return config;
}

Lihat class ArFragment yang di-subclass ini di tata letak aktivitas Anda.

Dapatkan akses ke wajah yang terdeteksi

Class AugmentedFace memperluas class Trackable. Dalam aktivitas aplikasi Anda, gunakan AugmentedFace untuk mendapatkan akses ke wajah yang terdeteksi dengan memanggilnya dari metode addOnUpdateListener().

// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

Render efek untuk wajah

Proses rendering efek melibatkan langkah-langkah berikut:

for (AugmentedFace face : faceList) {
  // Create a face node and add it to the scene.
  AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
  faceNode.setParent(scene);

  // Overlay the 3D assets on the face.
  faceNode.setFaceRegionsRenderable(faceRegionsRenderable);

  // Overlay a texture on the face.
  faceNode.setFaceMeshTexture(faceMeshTexture);

  …
 }