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 dùng tính năng Khuôn mặt tăng cường để hiển thị các thành phần trên khuôn mặt người trong ứng dụng của bạn.

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

Đảm bảo rằng bạn hiểu rõ 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ột lần mỗi khung hình, ARFaceManager sẽ gọi một sự kiện facesChanged chứa ba danh sách: khuôn mặt đã thêm, khuôn mặt đã cập nhật và khuôn mặt đã bị xoá kể từ khung hình gần đây nhất. Khi phát hiện khuôn mặt trong cảnh, ARFaceManager sẽ tạo thực thể cho một Prefab có đính kèm một thành phần ARFace để theo dõi khuôn mặt đó. Bạn có thể để Prefab null.

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

Face Prefab là Prefab được tạo thực thể ở vị trí chính giữa của khuôn mặt. Maximum Face Count là số lượng khuôn mặt tối đa có thể theo dõi.

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

Truy cập vào các khuôn mặt đã phát hiện thông qua thành phần ARFace đi kèm với 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 bộ 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 tư thế trung tâm, tư thế 3 vùng và lưới khuôn mặt 3D.

Tư thế ở giữa

Tư thế trung tâm (cho biết phần chính giữa đầu của người dùng) là điểm gốc của Prefab do ARFaceManager tạo thực thể. Mũi này 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+) chỉ về phía tai trái
  • Trục Y dương (Y+) hướng lên ngoài khuôn mặt
  • Trục Z dương (Z+) chỉ vào giữa đầu

Tư thế vùng

Khu vực tư thế nằm ở trán bên trái, trán bên phải và đầu mũi, đánh dấu những bộ phận quan trọng trên khuôn mặt người dùng. Tư thế vùng theo cùng một hướng trục với tư thế giữa.

Để sử dụng tư thế theo khu vực, hãy hạ hệ thống con của ARFaceManager xuống ARCoreFaceSubsystem và sử dụng subsystem.GetRegionPoses() để lấy thông tin 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 mặt 3D

Lưới khuôn mặt gồm 468 điểm tạo nên khuôn mặt người. Nó 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 nó làm lưới trong MeshFilterMeshColliders đính kèm. Sử dụng MeshRenderer để thiết lập Material dùng để kết xuất khuôn mặt.

AR Default Face Prefab hiển thị một vật liệu mặc định trên lưới khuôn mặt đã 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 của 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 chỉ 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 Khuôn 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 Face Prefab 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 thiết nữa.

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

Dùng face.vertices để truy cập vào vị trí 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.

Biểu diễn các đỉnh riêng lẻ của lưới mặt

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

  1. Mở Trình trộn rồi nhập canonical_face_mesh.fbx trên GitHub.
  2. Chuyển đến Edit > Preferences > Interface.
  3. Trên trình đơn Display, hãy chọn Developer Extras.

  4. Chọn khuôn mặt bằng cách nhấp vào khuôn mặt đó trong khung nhìn 3D và nhấn Tab để vào 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 trên mặt máy xay

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