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:
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.
Nhập AugmentedFaces Java sample vào mẫu dự án.
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ị.
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
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);
…
}