Panduan developer Augmented Faces untuk AR Foundation

Pelajari cara menggunakan Augmented Faces untuk merender aset di atas wajah manusia di aplikasi Anda.

Prasyarat

Pastikan Anda memahami konsep AR fundamental dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.

Deteksi wajah

Wajah diwakili oleh objek ARFace yang dibuat, diperbarui, dan dihapus oleh ARFaceManager. Sekali per frame, ARFaceManager akan memanggil peristiwa facesChanged yang berisi tiga daftar: wajah yang telah ditambahkan, wajah yang telah diperbarui, dan wajah yang telah dihapus sejak frame terakhir. Saat ARFaceManager mendeteksi wajah dalam adegan, instance akan dibuat di Prefab dengan komponen ARFace yang terpasang untuk melacak wajah. Prefab dapat ditinggalkan pada null.

Untuk menyiapkan ARFaceManager, buat objek game baru dan tambahkan ARFaceManager ke objek tersebut.

Face Prefab adalah Prefab yang dibuat instance-nya di pose wajah tengah. Maximum Face Count menunjukkan jumlah maksimum wajah yang dapat dilacak.

Mengakses wajah yang terdeteksi

Mengakses wajah yang terdeteksi melalui komponen ARFace, yang dilampirkan ke Prefab Wajah. ARFace memberikan verteks, indeks, normal verteks, dan koordinat tekstur.

Bagian dari wajah yang terdeteksi

Augmented Faces API menyediakan pose tengah, tiga pose region, dan mesh wajah 3D.

Pose tengah

Pose tengah, yang menandai pusat dari kepala pengguna, adalah titik asal Prefab yang dibuat oleh ARFaceManager. Berada di dalam tengkorak, di belakang hidung.

Sumbu dari pose tengah adalah sebagai berikut:

  • Sumbu X positif (X+) mengarah ke telinga kiri
  • Sumbu Y positif (Y+) mengarah ke atas dari wajah
  • Sumbu Z positif (Z+) mengarah ke tengah kepala

Pose wilayah

Terletak di dahi kiri, dahi kanan, dan ujung hidung, pose area menandai bagian penting dari wajah pengguna. Pose wilayah mengikuti orientasi sumbu yang sama dengan pose di tengah.

Untuk menggunakan pose wilayah, turunkan subsistem ARFaceManager ke ARCoreFaceSubsystem dan gunakan subsystem.GetRegionPoses() untuk mendapatkan informasi pose untuk setiap wilayah. Untuk contoh cara melakukannya, lihat contoh penggunaan Unity di GitHub.

Mesh wajah 3D

Mesh wajah terdiri dari 468 titik yang membentuk wajah manusia. Ini juga didefinisikan relatif terhadap pose di tengah.

Untuk memvisualisasikan mesh wajah, lampirkan ARFaceMeshVisualizer ke Face Prefab. ARFaceMeshVisualizer akan menghasilkan Mesh yang sesuai dengan wajah yang terdeteksi, yang menetapkannya sebagai mesh di MeshFilter dan MeshCollider terlampir. Gunakan MeshRenderer untuk menetapkan Material yang digunakan untuk merender wajah.

AR Default Face Prefab merender material default pada mesh wajah yang terdeteksi.

Ikuti langkah-langkah berikut untuk mulai menggunakan Wajah Default AR:

  1. Siapkan ARFaceManager.
  2. Di tab Hierarchy, gunakan + > XR > AR Default Face untuk membuat objek wajah baru. Objek ini bersifat sementara dan dapat dihapus setelah Anda membuat Prefab Wajah.

  3. Mengakses AR Default Face di Inspector.

  4. Tarik Tampilan Default AR yang baru dibuat dari tab Hierarchy ke dalam jendela Project Assets untuk membuat Prefab.

  5. Tetapkan Prefab yang baru dibuat sebagai Prefab Wajah di kolom Face Prefab ARFaceManager.

  6. Di tab Hierarchy, hapus objek wajah karena sudah tidak diperlukan lagi.

Mengakses vertex dari mesh wajah

Gunakan face.vertices untuk mengakses posisi verteks mesh wajah. Gunakan face.normals untuk mengakses normal verteks yang sesuai.

Visualisasikan vertex masing-masing mesh wajah

Anda dapat menggunakan Blender untuk dengan mudah melihat nomor indeks yang sesuai dengan verteks mesh wajah:

  1. Buka Blender dan impor canonical_face_mesh.fbx dari GitHub.
  2. Buka Edit > Preferences > Interface
  3. Di bagian menu Display, pilih Developer Extras.

  4. Pilih wajah dengan mengkliknya di area pandang 3D, lalu tekan Tab untuk masuk ke Mode Edit.

  5. Buka menu drop-down di samping area pandang Overlays, lalu pilih Indices.

    Indeks mesh wajah blender

  6. Tandai vertex yang nomor indeksnya ingin Anda tentukan. Untuk menandai semua verteks, gunakan Select > All.