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 MeshFilter
s und MeshCollider
s 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:
- Richten Sie ein
ARFaceManager
ein. 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.
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 ein Prefab zu erstellen.
Legen Sie das neu erstellte Prefab im Feld Face Prefab von
ARFaceManager
als Gesicht-Prefab fest.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:
- Ö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 Eckpunkt, dessen Indexnummer Sie ermitteln möchten. Verwenden Sie Select > All, um alle Eckpunkte hervorzuheben.