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