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ộ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 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 rồi 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 là 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 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ế giữa (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ể. 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ế vùng
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 tư thế 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 khuôn mặt 3D
Lưới khuôn mặt 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ế chính 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 MeshFilter
và MeshCollider
đính kèm. Sử dụng MeshRenderer
để đặt 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 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 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 đế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á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ể 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:
- Mở Blender và 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 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.
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. Để làm nổi bật tất cả các đỉnh, hãy sử dụng Select > All.