Obtén información para usar la función de caras aumentadas en tus propias apps.
Cómo compilar y ejecutar la app de muestra
Para compilar y ejecutar la app de AugmentedFaces Java, haz lo siguiente:
Abre Android Studio 3.1 o una versión posterior. Se recomienda usar un dispositivo físico (y no Android Emulator) para trabajar con caras aumentadas. El dispositivo debe estar conectado a la máquina de desarrollo por USB. Consulta la guía de inicio rápido de Android para obtener pasos detallados.
Importa la muestra Java de AugmentedFaces a tu proyecto.
En Android Studio, haz clic en Run
. Luego, elige tu dispositivo como destino de implementación y haz clic en OK para iniciar la app de muestra en tu dispositivo.
Haz clic en Aprobar para permitir que la cámara acceda a la app de muestra.
La app debe abrir la cámara frontal y rastrear tu rostro de inmediato en el feed de la cámara. Debes colocar imágenes de orejas de zorro en ambos lados de la frente y colocar una nariz de zorro sobre la nariz.
Cómo usar rostros aumentados en Sceneform
Importar elementos a Sceneform
Asegúrate de que los elementos que usas para los rostros aumentados tengan la escala y la posición correctos. Si quieres obtener sugerencias y prácticas, consulta Cómo crear elementos para los rostros aumentados.
Para aplicar elementos como texturas y modelos 3D a una malla de rostros aumentada en Sceneform, primero importa los elementos.
En el entorno de ejecución, usa ModelRenderable.Builder
para cargar los modelos *.sfb
y Texture.Builder
a fin de cargar una textura para el rostro.
// 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);
Orientación de la malla facial
Ten en cuenta la orientación de la malla de rostros para Sceneform:
Configura la sesión de ARCore
Los rostros aumentados requieren que se configure la sesión de ARCore para usar la cámara frontal (selfie) y habilitar la compatibilidad con la malla de rostros. Para hacerlo en Sceneform, extiende la clase ARfragment y anula la configuración:
@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;
}
Consulta esta subclase de la clase ArFragment
en el diseño de la actividad.
Obtén acceso al rostro detectado
La clase AugmentedFace
extiende la clase Trackable
. En la actividad de tu app, usa AugmentedFace
para acceder al rostro detectado desde el método addOnUpdateListener()
.
// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);
Cómo renderizar el efecto del rostro
La representación del efecto implica los siguientes pasos:
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);
…
}