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 MeshFilter
s und MeshCollider
s 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:
- Richten Sie ein
ARFaceManager
ein. 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.
Rufen Sie im Inspector die AR Default Face auf.
Ziehen Sie das neu erstellte AR-Standardgesicht vom Tab Hierarchy in das Fenster Project Assets, um eine Vorabversion zu erstellen.
Legen Sie die neu erstellte Vorabversion im Feld Face Prefab von
ARFaceManager
als Gesichtsvoreinstellung fest.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:
- Öffnen Sie Blender und importieren Sie
canonical_face_mesh.fbx
von GitHub. - Rufen Sie Edit > Preferences > Interface auf.
Wählen Sie im Menü Display die Option Developer Extras aus.
Klicken Sie im 3D-Viewport auf das Gesicht, um es auszuwählen, und drücken Sie die Tabulatortaste, um den Bearbeitungsmodus aufzurufen.
Öffnen Sie das Drop-down-Menü neben dem Overlays-Viewport und wählen Sie Indices aus.
Markieren Sie den Scheitelpunkt, dessen Indexnummer Sie ermitteln möchten. Um alle Eckpunkte zu markieren, verwenden Sie Select > All.