Entwicklerleitfaden für Augmented Faces für AR Foundation

Informationen dazu, wie Sie mit Augmented Face in Ihrer App Assets über menschliche Gesichter rendern

Voraussetzungen

Machen Sie sich mit den grundlegenden AR-Konzepten und der Konfiguration einer ARCore-Sitzung vertraut, bevor Sie fortfahren.

Gesichter erkennen

Gesichter werden durch ARFace-Objekte repräsentiert, die durch die ARFaceManager erstellt, aktualisiert und entfernt werden. Einmal pro Frame ruft ARFaceManager das Ereignis facesChanged auf, das drei Listen enthält: Gesichter, die hinzugefügt wurden, Gesichter, die aktualisiert wurden, und Gesichter, die seit dem letzten Frame entfernt wurden. Wenn der ARFaceManager ein Gesicht in der Szene erkennt, wird ein Prefab mit einer ARFace-Komponente instanziiert, um das Gesicht zu verfolgen. Das Prefab kann bei null bleiben.

Wenn Sie die ARFaceManager einrichten möchten, erstellen Sie ein neues Spielobjekt und fügen Sie ihm die ARFaceManager hinzu.

Face Prefab ist das Prefab, das in der Mitte der Pose des Gesichts instanziiert wird. Maximum Face Count steht für die maximale Anzahl von Gesichtern, die erkannt werden können.

Auf erkannte Gesichter zugreifen

Sie können über die Komponente ARFace auf erkannte Gesichter zugreifen, die mit dem Face-Prefab verbunden ist. ARFace enthält Vertices, Indizes, Vertexnormalen und Texturkoordinaten.

Teile eines erkannten Gesichts

Die Augmented Faces API bietet eine mittlere Position, drei Regionspositionen und ein 3D-Gesichtsnetz.

Pose zentrieren

Die Mittelpose, die die Mitte des Kopfes eines Nutzers markiert, ist der Ursprungspunkt des Prefabs, das durch die ARFaceManager instanziiert wird. Sie befindet sich im Schädel hinter der Nase.

Die Achsen der Mittelpose sind:

  • Die positive X-Achse (X+) zeigt zum linken Ohr.
  • Die positive Y-Achse (Y+) zeigt vom Gesicht nach oben
  • Die positive Z-Achse (Z+) zeigt in die Mitte des Kopfes.

Regions-Posen

Sie befinden sich auf der linken und rechten Stirn sowie auf der Nasenspitze und markieren wichtige Teile des Gesichts eines Nutzers. Die Positionsvarianten für die Region folgen derselben Achsenausrichtung wie die zentrale Pose.

Um die Regions-Posen zu verwenden, führen Sie ein Downcasten des Subsystems von ARFaceManager auf ARCoreFaceSubsystem aus und verwenden Sie subsystem.GetRegionPoses(), um Positionsinformationen für jede Region abzurufen. Ein Beispiel dazu finden Sie im Beispiel für die Verwendung von Unity auf GitHub.

3D-Gesichts-Mesh

Das Gesichts-Mesh besteht aus 468 Punkten, die ein menschliches Gesicht bilden. Sie wird ebenfalls relativ zur Mittelpose definiert.

Wenn Sie das Gesichts-Mesh visualisieren möchten, hängen Sie ein ARFaceMeshVisualizer an das Face Prefab an. Die ARFaceMeshVisualizer generiert ein Mesh, das dem erkannten Gesicht entspricht, und legt es als Mesh in den angehängten MeshFilters und MeshColliders fest. Verwenden Sie einen MeshRenderer, um das Material festzulegen, das zum Rendern des Gesichts verwendet wird.

Die AR Default Face Prefab rendert ein Standardmaterial auf erkannten Gesichtsmeshes.

So verwenden Sie das AR-Standardgesicht:

  1. Richten Sie ein ARFaceManager ein.
  2. Klicken Sie auf dem Tab Hierarchy auf + > XR > AR Default Face, um ein neues Objekt vom Typ „Ansicht“ zu erstellen. Dieses Objekt ist temporär und kann gelöscht werden, sobald Sie die Gesichtsvoreinstellung erstellt haben.

  3. Rufen Sie im Inspector die AR Default Face auf.

  4. Ziehen Sie das neu erstellte AR-Standardgesicht vom Tab Hierarchy in das Fenster Project Assets, um eine Vorabversion zu erstellen.

  5. Legen Sie die neu erstellte Vorabversion im Feld Face Prefab von ARFaceManager als Gesichtsvoreinstellung fest.

  6. Löschen Sie auf dem Tab Hierarchy das Gesichtsobjekt, da es nicht mehr benötigt wird.

Auf einzelne Eckpunkte des Gesichts-Meshes zugreifen

Verwenden Sie face.vertices, um auf die Positionen der Vertice des Gesichts-Meshes zuzugreifen. Verwenden Sie face.normals, um auf die entsprechenden Scheitelpunktnormalen zuzugreifen.

Einzelne Eckpunkte des Gesichts-Mesh visualisieren

Mit Blender können Sie sich ganz einfach die Indexnummern ansehen, die den Eckpunkten eines Gesichts-Meshes entsprechen:

  1. Öffnen Sie Blender und importieren Sie canonical_face_mesh.fbx von GitHub.
  2. Rufen Sie Edit > Preferences > Interface auf.
  3. Wählen Sie im Menü Display die Option Developer Extras aus.

  4. Klicken Sie im 3D-Viewport auf das Gesicht, um es auszuwählen, und drücken Sie die Tabulatortaste, um den Bearbeitungsmodus aufzurufen.

  5. Öffnen Sie das Drop-down-Menü neben dem Overlays-Viewport und wählen Sie Indices aus.

    Blender-Indexe für Gesichtsmeshes

  6. Markieren Sie den Scheitelpunkt, dessen Indexnummer Sie ermitteln möchten. Um alle Eckpunkte zu markieren, verwenden Sie Select > All.