Entwicklerleitfaden für Augmented Faces für AR Foundation

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

Vorbereitung

Machen Sie sich mit den grundlegenden AR-Konzepten vertraut. und Konfigurieren einer ARCore-Sitzung beschrieben, bevor du fortfährst.

Gesichter erkennen

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

Erstelle zum Einrichten des ARFaceManager ein neues Spielobjekt und füge ihm das ARFaceManager hinzu.

Face Prefab ist die Fertigstellung, die in der mittleren Position des Gesichts instanziiert wird. Maximum Face Count steht für die maximale Anzahl von Gesichtern, die erfasst werden können.

Auf erkannte Gesichter zugreifen

Auf erkannte Gesichter können Sie über die Komponente ARFace zugreifen, die mit der Gesichtsvoreinstellung verknüpft ist. ARFace stellt Eckpunkte, Indizes, Scheitelpunktnormalen und Texturkoordinaten bereit.

Teile eines erkannten Gesichts

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

Zentrieren

Die zentrale Position, also die Mitte des Kopfes eines Nutzers, ist der Ausgangspunkt der Fertigstellung, die von ARFaceManager instanziiert wird. Sie befindet sich im Schädel, hinter der Nase.

Die Achsen der Mittelposition sind folgende:

  • 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

Die Regionspositionen befinden sich auf der linken Stirn, der rechten Stirn und der Nasenspitze und markieren wichtige Gesichtsbereiche der Nutzenden. Die Regionspositionen folgen derselben Achsenausrichtung wie die Mittelposition.

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 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 mittleren Position definiert.

Fügen Sie ein ARFaceMeshVisualizer an Face Prefab an, um das Gesichtsnetz zu visualisieren. ARFaceMeshVisualizer generiert ein Mesh-Element, das dem erkannten Gesicht entspricht, und legt es als Mesh in den angehängten MeshFilters und MeshColliders fest. Mit einem MeshRenderer kannst du das Material-Objekt festlegen, das zum Rendern des Gesichts verwendet wird.

AR Default Face Prefab rendert bei erkannten Gesichtsnetzen ein Standardmaterial.

So verwenden Sie das AR-Standardgesicht:

  1. Richten Sie eine 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 Gesichtsvoreinstellung erstellt haben.

  3. Rufen Sie das AR Default Face im Inspector 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 Face Mesh zugreifen

Mit face.vertices können Sie auf die Positionen der Eckpunkte des Gesichtsnetzes zugreifen. Verwenden Sie face.normals, um auf die entsprechenden Scheitelpunktnormalen zuzugreifen.

Einzelne Eckpunkte des Face Mesh visualisieren

Mit Mixer können Sie sich ganz einfach die Indexnummern ansehen, die den Scheitelpunkten eines Gesichtsnetzes 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. Wählen Sie das Gesicht aus, indem Sie im 3D-Darstellungsbereich darauf klicken, und drücken Sie die Tabulatortaste, um in den Bearbeitungsmodus zu wechseln.

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

    Face Mesh-Indexe

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