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 MeshFilter
và MeshCollider
đí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:
- Thiết lập
ARFaceManager
. 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.
Truy cập AR Default Face trong Trình kiểm tra.
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.
Đặ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 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:
- Mở Blender rồi nhập
canonical_face_mesh.fbx
từ GitHub. - Chuyển đến Edit > Preferences > Interface.
Trong 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 phím 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 mà bạn muốn xác định. Để đánh dấu tất cả các đỉnh, hãy sử dụng Select > All.