Hướng dẫn dành cho nhà phát triển tính năng Khuôn mặt tăng cường trong AR Foundation

Tìm hiểu cách sử dụng tính năng Augmented Faces (Khuôn mặt tăng cường) để kết xuất các thành phần trên khuôn mặt người trong ứng dụng của riêng bạn.

Điều kiện tiên quyết

Hãy đảm bảo rằng bạn hiểu các khái niệm cơ bản về AR và cách định cấu hình phiên ARCore trước khi tiếp tục.

Phát hiện khuôn mặt

Khuôn mặt được biểu thị bằng các đối tượng ARFace do ARFaceManager tạo, cập nhật và xoá. Mỗi khung hình, ARFaceManager sẽ gọi một sự kiện facesChanged chứa 3 danh sách: khuôn mặt đã thêm, khuôn mặt đã cập nhật và khuôn mặt đã xoá kể từ khung hình trước. Khi phát hiện một khuôn mặt trong cảnh, ARFaceManager sẽ tạo bản sao của Prefab có đính kèm thành phần ARFace để theo dõi khuôn mặt đó. Bạn có thể để Prefab là null.

Để thiết lập ARFaceManager, hãy tạo một đối tượng trò chơi mới và thêm ARFaceManager vào đối tượng đó.

Face Prefab là Prefab được tạo bản sao ở tư thế chính giữa của khuôn mặt. Maximum Face Count thể hiện số lượng khuôn mặt tối đa có thể theo dõi.

Truy cập vào khuôn mặt đã phát hiện

Truy cập vào các khuôn mặt được phát hiện thông qua thành phần ARFace được đính kèm vào Face Prefab. ARFace cung cấp các đỉnh, chỉ mục, pháp tuyến đỉnh và toạ độ kết cấu.

Các phần của khuôn mặt được phát hiện

API Khuôn mặt tăng cường cung cấp một tư thế chính giữa, ba tư thế theo vùng và một lưới khuôn mặt 3D.

Tư thế ở giữa

Tư thế chính giữa (đánh dấu vị trí chính giữa đầu của người dùng) là điểm gốc của Prefab được tạo bản sao bởi ARFaceManager. Nó nằm bên trong hộp sọ, phía sau mũi.

Các trục của tư thế trung tâm như sau:

  • Trục X dương (X+) hướng về tai trái
  • Trục Y dương (Y+) chỉ lên trên mặt
  • Trục Z dương (Z+) hướng vào giữa đầu

Tư thế theo khu vực

Nằm ở trán trái, trán phải và chóp mũi, tư thế theo vùng đánh dấu các phần quan trọng trên khuôn mặt của người dùng. Các tư thế vùng tuân theo hướng trục giống như tư thế trung tâm.

Để sử dụng các tư thế khu vực, hãy chuyển hệ thống con của ARFaceManager xuống ARCoreFaceSubsystem và sử dụng subsystem.GetRegionPoses() để lấy thông tin về tư thế cho từng khu vực. Để biết ví dụ về cách thực hiện việc này, hãy xem mẫu sử dụng của Unity trên GitHub.

Lưới khuôn mặt 3D

Lưới khuôn mặt bao gồm 468 điểm tạo nên khuôn mặt người. Giá trị này cũng được xác định tương ứng với tư thế ở giữa.

Để trực quan hoá lưới khuôn mặt, hãy đính kèm ARFaceMeshVisualizer vào Face Prefab. ARFaceMeshVisualizer sẽ tạo một Mesh tương ứng với khuôn mặt được phát hiện, đặt khuôn mặt đó làm lưới trong các MeshFilterMeshCollider đính kèm. Sử dụng MeshRenderer để đặt Material dùng để kết xuất khuôn mặt.

AR Default Face Prefab kết xuất một chất liệu mặc định trên lưới khuôn mặt được phát hiện.

Hãy làm theo các bước sau để bắt đầu sử dụng khuôn mặt mặc định AR:

  1. Thiết lập ARFaceManager.
  2. Trong thẻ Hierarchy, hãy sử dụng + > XR > AR Default Face để tạo một đối tượng khuôn mặt mới. Đối tượng này là tạm thời và có thể bị xoá sau khi bạn tạo Face Prefab.

  3. Truy cập vào AR Default Face trong Trình kiểm tra.

  4. Kéo Mặt mặc định AR mới tạo từ thẻ Hierarchy vào cửa sổ Project Assets để tạo một Prefab.

  5. Đặt Prefab mới tạo làm Prefab mặt trong trường Face Prefab của ARFaceManager.

  6. Trong thẻ Hierarchy, hãy xoá đối tượng khuôn mặt vì không cần đến đối tượng này nữa.

Truy cập vào từng đỉnh của lưới khuôn mặt

Sử dụng face.vertices để truy cập vào vị trí của các đỉnh của lưới mặt. Sử dụng face.normals để truy cập vào các pháp tuyến đỉnh tương ứng.

Hình dung từng đỉnh của lưới khuôn mặt

Bạn có thể sử dụng Blender để dễ dàng xem các số chỉ mục tương ứng với các đỉnh của lưới mặt:

  1. Mở Blender và nhập canonical_face_mesh.fbx từ GitHub.
  2. Chuyển đến Edit > Preferences > Interface.
  3. Trong trình đơn Display, hãy chọn Developer Extras.

  4. Chọn mặt bằng cách nhấp vào mặt đó trong khung nhìn 3D, rồi nhấn phím Tab để chuyển sang Chế độ chỉnh sửa.

  5. Mở trình đơn thả xuống bên cạnh khung nhìn Overlays rồi chọn Indices.

    Chỉ mục lưới mặt Blender

  6. Đánh dấu đỉnh có số chỉ mục mà bạn muốn xác định. Để làm nổi bật tất cả các đỉnh, hãy sử dụng Select > All.