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 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 MeshFilterMeshCollider đí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:

  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 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 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 đế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:

  1. Mở Blender và 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 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.

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