Hướng dẫn dành cho nhà phát triển về Khuôn mặt tăng cường

Tìm hiểu cách sử dụng tính năng Khuôn mặt tăng cường trong ứng dụng.

Xây dựng và chạy ứng dụng mẫu

Cách tạo và chạy ứng dụng AugmentedFaces Java:

  1. Mở Android Studio phiên bản 3.1 trở lên. Bạn nên sử dụng một thiết bị thực (không phải Trình mô phỏng Android) để làm việc với tính năng Khuôn mặt tăng cường. Thiết bị phải được kết nối với máy phát triển qua USB. Hãy xem phần Bắt đầu nhanh trên Android để biết các bước chi tiết.

  2. Nhập AugmentedFaces Java sample vào mẫu dự án.

  3. Trong Android Studio, hãy nhấp vào Run (Chạy) . Sau đó, hãy chọn thiết bị của bạn làm mục tiêu triển khai rồi nhấp vào OK để chạy ứng dụng mẫu trên thiết bị.

  4. Nhấp vào Phê duyệt để cấp cho máy ảnh quyền truy cập vào ứng dụng mẫu.

    Ứng dụng sẽ mở máy ảnh trước và theo dõi khuôn mặt của bạn ngay lập tức trong nguồn cấp dữ liệu máy ảnh. Bạn nên đặt hình ảnh tai cáo trên hai bên trán và đặt mũi cáo lên mũi mình.

Sử dụng khuôn mặt tăng cường trong Cảnh

  1. Nhập các thành phần vào Biểu mẫu

  2. Định cấu hình phiên ARCore

  3. Nhận quyền truy cập vào khuôn mặt được phát hiện

  4. Hiển thị hiệu ứng trên khuôn mặt được phát hiện

Nhập tài sản vào Biểu mẫu

Hãy đảm bảo rằng các thành phần bạn sử dụng cho tính năng Khuôn mặt tăng cường được điều chỉnh theo tỷ lệ và được đặt ở vị trí chính xác. Để biết các mẹo và phương pháp hay nhất, hãy tham khảo bài viết Tạo thành phần cho khuôn mặt tăng cường.

Để áp dụng các thành phần như hoạ tiết và mô hình 3D vào lưới mặt tăng cường trong Sceneform, trước tiên, hãy nhập các thành phần.

Trong thời gian chạy, hãy sử dụng ModelRenderable.Builder để tải mô hình *.sfb và sử dụng Texture.Builder để tải hoạ tiết cho khuôn mặt.

// To ensure that the asset doesn't cast or receive shadows in the scene,
// ensure that setShadowCaster and setShadowReceiver are both set to false.
ModelRenderable.builder()
    .setSource(this, R.raw.fox_face)
    .build()
    .thenAccept(
        modelRenderable -> {
          faceRegionsRenderable = modelRenderable;
          modelRenderable.setShadowCaster(false);
          modelRenderable.setShadowReceiver(false);
        });

// Load the face mesh texture.
Texture.builder()
    .setSource(this, R.drawable.fox_face_mesh_texture)
    .build()
    .thenAccept(texture -> faceMeshTexture = texture);

Hướng lưới mặt

Lưu ý hướng của lưới mặt cho Cảnh:

Định cấu hình phiên ARCore

Tính năng Khuôn mặt tăng cường yêu cầu phiên ARCore được định cấu hình để sử dụng máy ảnh mặt trước (dùng để tự chụp ảnh chân dung) và bật tính năng hỗ trợ lưới khuôn mặt. Để thực hiện việc này trong Sceneform, hãy mở rộng lớp ARfragment và ghi đè cấu hình:

@Override
protected Set<Session.Feature> getSessionFeatures() {
  return EnumSet.of(Session.Feature.FRONT_CAMERA);
}

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setAugmentedFaceMode(AugmentedFaceMode.MESH3D);
  return config;
}

Tham khảo lớp ArFragment được phân lớp con này trong bố cục hoạt động của bạn.

Nhận quyền truy cập vào khuôn mặt được phát hiện

Lớp AugmentedFace mở rộng lớp Trackable. Trong hoạt động của ứng dụng, hãy sử dụng AugmentedFace để truy cập vào khuôn mặt đã phát hiện bằng cách gọi mặt đó từ phương thức addOnUpdateListener().

// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

Kết xuất hiệu ứng cho khuôn mặt

Việc hiển thị hiệu ứng bao gồm các bước sau:

for (AugmentedFace face : faceList) {
  // Create a face node and add it to the scene.
  AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
  faceNode.setParent(scene);

  // Overlay the 3D assets on the face.
  faceNode.setFaceRegionsRenderable(faceRegionsRenderable);

  // Overlay a texture on the face.
  faceNode.setFaceMeshTexture(faceMeshTexture);

  …
 }