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 MeshFilter
và MeshCollider
s đí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:
- Thiết lập
ARFaceManager
. 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.
Truy cập vào AR Default Face trong Trình kiểm tra.
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.
Đặt Prefab mới tạo làm Face Prefab trong trường Face Prefab của
ARFaceManager
.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:
- Mở Trình trộn rồi nhập
canonical_face_mesh.fbx
trên GitHub. - Chuyển đến Edit > Preferences > Interface.
Trên trình đơn Display, hãy chọn Developer Extras.
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.
Mở trình đơn thả xuống bên cạnh khung nhìn Overlays rồi chọn Indices.
Đá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.