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

Hãy đảm bảo bạn hiểu rõ các khái niệm cơ bản về AR và cách định cấu hình một 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á. Sau 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 đã được thêm, khuôn mặt đã được cập nhật và khuôn mặt đã bị xoá kể từ khung hình cuối cùng. Khi phát hiện thấy một khuôn mặt trong cảnh, ARFaceManager sẽ tạo thực thể cho một Prefab có đính kèm thành phần ARFace để theo dõi khuôn mặt đó. Bạn có thể rời Prefab vào 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 bản sao ở tư thế trung tâm 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 dữ liệu về 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 được gắn 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 phần của khuôn mặt được phát hiện

API Gương mặt tăng cường cung cấp một tư thế trung tâm, 3 tư thế vùng và một lưới khuôn mặt 3D.

Tư thế trung tâm

Tư thế giữa, đánh dấu tâm điểm của người dùng, là điểm gốc của Prefab do ARFaceManager tạo thực thể. Khố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 trở lên) hướng về tai trái
  • Trục Y dương (Y+) trỏ lên trên ra ngoài mặt
  • Trục Z dương (Z+) trỏ vào giữa đầu

Tư thế vùng

Các tư thế vùng nằm trên trán trái, trán phải và đầu mũi, là các vị trí quan trọng trên khuôn mặt của người dùng. Các tư thế vùng tuân theo cùng một hướng trục với 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 rồi dùng subsystem.GetRegionPoses() để thu thập 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 3D

Lưới khuôn mặt bao 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ế trung tâm.

Để hình ảnh hoá lưới của 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 MeshFilterMeshCollider đính kèm. Dùng MeshRenderer để đặt Material dùng để kết xuất khuôn mặt.

AR Default Face Prefab hiển thị vật liệu mặc định trên lưới khuôn mặt được phát hiện.

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 đố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 Prefab khuôn mặt.

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

  4. Kéo Khuôn mặt mặc định thực tế tăng cường 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 dùng nữa.

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

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

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

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

  1. Mở Blender rồi 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 khuôn mặt bằng cách nhấp vào khuôn mặt đó trong khung nhìn 3D và nhấn phím 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ỉ số lưới của mặt máy xay

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