Dowiedz się, jak używać ulepszonych twarzy do renderowania zasobów we własnej aplikacji na twarze ludzkich twarzy.
Wymagania wstępne
Upewnij się, że znasz podstawowe pojęcia związane z AR. i dowiedz się, jak skonfigurować sesję ARCore, zanim przejdziesz dalej.
Wykrywanie twarzy
Twarze są reprezentowane przez obiekty ARFace
, które są tworzone, aktualizowane i usuwane przez ARFaceManager
. Raz na klatkę element ARFaceManager
wywołuje zdarzenie facesChanged
, które zawiera 3 listy: twarze dodane, twarze, które zostały zaktualizowane, i twarze usunięte od ostatniej klatki. Gdy ARFaceManager
wykryje twarz na scenie, utworzy instancję Prefab z komponentem ARFace
dołączonym do śledzenia twarzy. Prefab może pozostać null
.
Aby skonfigurować ARFaceManager
, utwórz nowy obiekt gry i dodaj do niego ARFaceManager
.
Face Prefab to gotowe wystąpienie w środkowej pozycji twarzy. Maximum Face Count oznacza maksymalną liczbę twarzy, które można śledzić.
Dostęp do wykrytych twarzy
Dostęp do wykrytych twarzy można uzyskać za pomocą komponentu ARFace
dołączonego do gotowego ustawienia twarzy. Funkcja ARFace
udostępnia wierzchołki, indeksy, normalne wierzchołki i współrzędne tekstury.
Części wykrytej twarzy
Interfejs Augmented Faces API udostępnia pozycję środkową, 3 pozycje regionów i siatkę twarzy 3D.
Pozycja pośrodku
Pozycja środkowa, czyli środek głowy użytkownika, to punkt początkowy elementu Prefab utworzonego przez obiekt ARFaceManager
. Znajduje się w czaszce, za nosem.
Osie środkowej pozycji są następujące:
- Dodatnia oś X (X+) jest skierowana w stronę lewego ucha
- Dodatnia oś Y (Y+) jest skierowana w górę na płaszczyźnie
- Dodatnia oś Z (Z+) jest skierowana na środek głowy
Pozycje regionalne
Ta lokalizacja znajduje się na lewym czole, prawym czole i końcu nosa. Pozycje regionalne oznaczają ważne części twarzy użytkownika. Pozycje regionu mają tę samą oś względem pozycji środkowej.
Aby użyć pozycji regionu, obniż podsystem ARFaceManager
do ARCoreFaceSubsystem
i użyj subsystem.GetRegionPoses()
, aby uzyskać informacje o położeniu dla każdego regionu. Przykład znajdziesz w próbce wykorzystania Unity w GitHubie.
Siatka twarzy 3D
Siatka twarzy składa się z 468 punktów tworzących twarz człowieka. Jest ono również określone względem pozycji środkowej.
Aby zobaczyć siatkę twarzy, przymocuj ARFaceMeshVisualizer
do urządzenia Face Prefab. ARFaceMeshVisualizer
wygeneruje element Mesh
odpowiadający wykrytej twarzy, ustawiając ją jako siatkę w załączonych MeshFilter
i MeshCollider
. Użyj MeshRenderer
, aby ustawić obiekt Material
używany do renderowania twarzy.
W wykrytych siatkach płaszczyzny AR Default Face Prefab renderuje materiał domyślny.
Aby zacząć używać domyślnej twarzy w AR:
- Skonfiguruj
ARFaceManager
. Na karcie Hierarchy użyj opcji + > XR > AR Default Face, aby utworzyć nowy obiekt twarzy. Ten obiekt jest tymczasowy i można go usunąć po utworzeniu prefabryka twarzy.
Otwórz AR Default Face w inspektorze.
Przeciągnij nowo utworzoną domyślną twarz AR z karty Hierarchy do okna Project Assets, aby utworzyć prefab.
W polu Face Prefab usługi
ARFaceManager
ustaw nowo utworzony szablon jako gotowy do użycia z twarzą.Na karcie Hierarchy usuń obiekt twarzy, ponieważ nie jest już potrzebny.
Dostęp do poszczególnych wierzchołków siatki twarzy
Użyj face.vertices
, aby uzyskać dostęp do pozycji wierzchołków siatki twarzy. Użyj narzędzia face.normals
, aby uzyskać dostęp do odpowiednich wartości normalnych wierzchołków.
Wizualizacja poszczególnych wierzchołków siatki twarzy
Możesz użyć narzędzia Blender, aby łatwo wyświetlić numery indeksu, które odpowiadają wierzchołkom siatki twarzy:
- Otwórz Blender i zaimportuj plik
canonical_face_mesh.fbx
z GitHuba. - Wejdź na Edit > Preferences > Interface.
Z menu Display wybierz Developer Extras.
Wybierz twarz, klikając ją w widocznym obszarze 3D, a następnie naciśnij Tab, aby przejść do trybu edycji.
Otwórz menu obok widocznego obszaru (Overlays) i wybierz Indices.
Wyróżnij wierzchołek, którego numer indeksu chcesz określić. Aby wyróżnić wszystkie wierzchołki, użyj elementu Select > All.