Entwicklerleitfaden für Augmented Faces für AR Foundation

Weitere Informationen zur Verwendung von Augmented Faces

Vorbereitung

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 dargestellt, die vom 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 gleichzeitig 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 zentrale Pose, drei regionale Posen und ein 3D-Gesichts-Mesh.

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 nach oben aus der Oberfläche heraus.
  • Die positive Z-Achse (Z+) zeigt in die Mitte des Kopfes.

Region Posen

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

Wenn Sie die Regionsposen verwenden möchten, müssen Sie das Subsystem von ARFaceManager auf ARCoreFaceSubsystem herabstufen und mit subsystem.GetRegionPoses() Informationen zur Position für jede Region abrufen. 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 ein MeshRenderer, um den Material festzulegen, der zum Rendern des Gesichts verwendet wird.

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

So verwenden Sie das Standard-AR-Gesicht:

  1. Richten Sie ein ARFaceManager ein.
  2. Klicken Sie auf dem Tab Hierarchy auf + > XR > AR Default Face, um ein neues Gesicht zu erstellen. Dieses Objekt ist temporär und kann gelöscht werden, sobald Sie das Face-Prefab 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 ein Prefab zu erstellen.

  5. Legen Sie das neu erstellte Prefab im Feld Face Prefab von ARFaceManager als Gesicht-Prefab fest.

  6. Löschen Sie auf dem Tab Hierarchy das Gesichtobjekt, 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 Eckpunkt, dessen Indexnummer Sie ermitteln möchten. Verwenden Sie Select > All, um alle Eckpunkte hervorzuheben.