Guide du développeur sur les visages augmentés pour Sceneform

Découvrez comment utiliser la fonctionnalité Visages augmentés dans vos propres applications.

Créer et exécuter l'application exemple

Pour créer et exécuter l'application AugmentedFaces Java:

  1. Ouvrez Android Studio version 3.1 ou ultérieure. Nous vous recommandons d'utiliser un appareil physique (et non l'émulateur Android) pour utiliser Augmented Faces. L'appareil doit être connecté à l'ordinateur de développement via USB. Consultez le guide de démarrage rapide Android pour connaître la procédure détaillée.

  2. Importez l'exemple Java AugmentedFaces dans votre projet.

  3. Dans Android Studio, cliquez sur Run (Exécuter) . Choisissez ensuite votre appareil comme cible de déploiement, puis cliquez sur OK pour lancer l'exemple d'application.

  4. Cliquez sur Approuver pour autoriser l'appareil photo à accéder à l'application exemple.

    L'application devrait ouvrir la caméra avant et suivre immédiatement votre visage dans le flux de la caméra. Il doit placer une image d'oreilles de renard sur les deux côtés de son front, et un renard sur le nez.

Utiliser la fonctionnalité Visages augmentés dans Sceneform

  1. Importer des éléments dans Sceneform

  2. Configurer la session ARCore

  3. Accéder au visage détecté

  4. Afficher l'effet sur le visage détecté

Importer des éléments dans Sceneform

Assurez-vous que les assets utilisés pour les visages augmentés sont mis à l'échelle et positionnés correctement. Pour obtenir des conseils et des bonnes pratiques, consultez Créer des assets pour les visages augmentés.

Pour appliquer des éléments tels que des textures et des modèles 3D à un maillage de visages amélioré dans Sceneform, commencez par les importer.

Au moment de l'exécution, utilisez ModelRenderable.Builder pour charger les modèles *.sfb et utilisez Texture.Builder pour charger une texture pour le visage.

// 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);

Orientation du visage

Notez l'orientation du maillage pour Sceneform:

Configurer la session ARCore

Augmented Faces nécessite que la session ARCore soit configurée pour utiliser la caméra frontale (mode selfie) et activer la prise en charge du maillage de visages. Pour ce faire, dans Sceneform, développez la classe ARFragment et remplacez la configuration:

@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;
}

Reportez-vous à cette classe ArFragment sous-classée dans la mise en page de votre activité.

Obtenir l'accès au visage détecté

La classe AugmentedFace étend la classe Trackable. Dans l'activité de votre application, utilisez AugmentedFace pour accéder au visage détecté en l'appelant à partir de la méthode addOnUpdateListener().

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

Afficher l'effet pour le visage

Pour afficher l'effet, procédez comme suit:

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);

  …
 }