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 MeshFilter
s und MeshCollider
s 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:
- Richten Sie eine
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 Gesichtsvoreinstellung erstellt haben.
Rufen Sie das AR Default Face im Inspector 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 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:
- Ö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.
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.
Öffnen Sie das Drop-down-Menü neben dem Darstellungsbereich Overlays 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.