Entwicklerleitfaden für Augmented Faces für AR Foundation

Hier erfahren Sie, wie Sie in Ihrer eigenen App mit Augmented Reality Assets über menschlichen Gesichtern rendern.

Voraussetzungen

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

Gesichter erkennen

Gesichter werden durch ARFace-Objekte dargestellt, die mit der ARFaceManager erstellt, aktualisiert und entfernt werden. Einmal pro Frame ruft ARFaceManager ein facesChanged-Ereignis 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 ARFaceManager ein Gesicht in der Szene erkennt, wird eine Prefab-Komponente mit einer angehängten ARFace-Komponente instanziiert, um das Gesicht zu verfolgen. Die Fertigung kann am null verlassen werden.

Erstellen Sie zum Einrichten des ARFaceManager ein neues Spielobjekt und fügen Sie ihm das ARFaceManager hinzu.

Face Prefab ist das in der Mittelposition des Gesichts instanziierte Prefab. Maximum Face Count steht für die maximale Anzahl von Gesichtern, die erfasst werden können.

Auf erkannte Gesichter zugreifen

Sie können über die Komponente ARFace, die an die Gesichtsvorbereitung angehängt ist, auf erkannte Gesichter zugreifen. ARFace stellt Eckpunkte, Indexe, Normalen von Scheitelpunkte und Texturkoordinaten bereit.

Teile eines erkannten Gesichts

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

Zentrieren

Die Mittelposition, die die Mitte des Kopfes eines Nutzers kennzeichnet, ist der Ausgangspunkt des Prefab-Elements, das vom ARFaceManager instanziiert wird. Sie befindet sich im Schädel hinter der Nase.

Die Mittelstellung hat folgende Achsen:

  • Die positive X-Achse (X+) zeigt in Richtung des linken Ohrs.
  • Die positive Y-Achse (Y+) zeigt nach oben aus dem Gesicht heraus.
  • Die positive Z-Achse (Z+) zeigt in die Mitte des Kopfes.

Regionspositionen

Der Bereich befindet sich auf der linken Stirn, der rechten Stirn und der Nase und markiert wichtige Bereiche des Gesichts der Nutzenden. Die Position der Region entspricht der Achsenausrichtung.

Um die Regionspositionen zu verwenden, stufen Sie das Subsystem von ARFaceManager zu ARCoreFaceSubsystem herunter und verwenden Sie subsystem.GetRegionPoses(), um Positionsinformationen für jede Region abzurufen. Ein Beispiel dafür finden Sie im Nutzungsbeispiel von Unity auf GitHub (in englischer Sprache).

3D-Gesichtsnetz

Das Gesichtsnetz besteht aus 468 Punkten, die ein menschliches Gesicht bilden. Sie wird auch relativ zur Mittelposition definiert.

Wenn du das Gesichtsnetz anzeigen möchtest, bringe ein ARFaceMeshVisualizer an das Face Prefab an. ARFaceMeshVisualizer generiert ein Mesh-Element, das dem erkannten Gesicht entspricht, und legt es als Mesh-Netzwerk in den angehängten MeshFilter- und MeshCollider-Elementen fest. Verwenden Sie einen MeshRenderer, um das Material-Element festzulegen, mit dem das Gesicht gerendert wird.

AR Default Face Prefab rendert ein Standardmaterial für erkannte Gesichtsnetze.

Befolge diese Schritte, um das AR-Standardgesicht zu verwenden:

  1. Richten Sie ein ARFaceManager ein.
  2. Verwenden Sie auf dem Tab Hierarchy + > XR > AR Default Face, um ein neues Gesichtsobjekt zu erstellen. Dieses Objekt ist temporär und kann gelöscht werden, sobald Sie die Gesichtsvorbereitung erstellen.

  3. Rufen Sie AR Default Face im Inspector auf.

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

  5. Legen Sie im Feld Face Prefab von ARFaceManager die neu erstellte Fertigung als Gesichts-Prefab fest.

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

Auf einzelne Eckpunkte des Gesichtsnetzes zugreifen

Verwenden Sie face.vertices, um auf die Positionen der Eckpunkte des Gesichtsnetzes zuzugreifen. Verwenden Sie face.normals, um auf die entsprechenden Vertex-Normalwerte zuzugreifen.

Einzelne Eckpunkte des Gesichtsnetzes visualisieren

Mit Blender können Sie ganz einfach die Indexnummern aufrufen, die den Eckpunkten eines Gesichtsnetzes entsprechen:

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

  4. Wählen Sie das Gesicht aus, indem Sie im 3D-Darstellungsbereich darauf klicken, und drücken Sie die Tabulatortaste, um den Bearbeitungsmodus aufzurufen.

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

    Mesh-Index-Indizes für Blender

  6. Markieren Sie den Scheitelpunkt, dessen Indexnummer Sie bestimmen möchten. Verwenden Sie Select > All, um alle Eckpunkte zu markieren.