Dowiedz się, jak używać rozszerzonych twarzy do renderowania zasobów na twarzach ludzi w swojej aplikacji.
Wymagania wstępne
Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.
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. Gotowy element może być pusty null
.
Aby skonfigurować ARFaceManager
, utwórz nowy obiekt gry i dodaj do niego ARFaceManager
.
Face Prefab to wstępnie utworzony obiekt w położeniu środkowym twarzy. Maximum Face Count oznacza maksymalną liczbę twarzy, które można śledzić.
Dostęp do wykrytych twarzy
Dostęp do wykrywanych twarzy przez komponent ARFace
, który jest dołączony do wstępnie przygotowanego modelu twarzy. ARFace
zawiera wierzchołki, indeksy, normalne wierzchołków i współrzędne tekstury.
Części wykrytej twarzy
Interfejs Augmented Faces API udostępnia pozę środkową, 3 pozy regionu i siatkę 3D twarzy.
Pozycja środkowa
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ę poza płaszczyznę
- Dodatnia oś Z (Z+) wskazuje na środek głowy
Pozycje regionalne
Pozycje regionalne, znajdujące się na lewym czole, prawym czole i końcu nosa, oznaczają ważne części twarzy użytkownika. Pozycje regionu mają tę samą oś względem pozycji środkowej.
Aby używać pozy regionu, prześlij w dół podsystem ARFaceManager
do ARCoreFaceSubsystem
i użyj subsystem.GetRegionPoses()
, aby uzyskać informacje o pozie dla każdego regionu. Przykładowy sposób wykonania znajdziesz w przykładowym pliku kodu Unity na GitHubie.
Siatka 3D twarzy
Siatka twarzy składa się z 468 punktów, które tworzą ludzką twarz. Jest ono również określone względem pozycji środkowej.
Aby zwizualizować siatkę twarzy, dodaj ARFaceMeshVisualizer
do Face Prefab. ARFaceMeshVisualizer
wygeneruje Mesh
odpowiadający wykrytej twarzy, ustawiając go jako siatkę w dołą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ąć korzystać z domyślnej twarzy AR:
- Skonfiguruj
ARFaceManager
. Na karcie Hierarchy kliknij + > 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.
Aby utworzyć gotowy element, przeciągnij nowo utworzoną opcję Domyślna twarz AR z karty Hierarchy do okna Project Assets.
Ustaw nowo utworzony szablon jako szablon twarzy w polu Face Prefab obiektu
ARFaceManager
.Na karcie Hierarchy usuń obiekt twarzy, ponieważ nie jest już potrzebny.
Dostęp do poszczególnych wierzchołków siatki twarzy
Aby uzyskać dostęp do pozycji wierzchołków siatki twarzy, użyj face.vertices
. Aby uzyskać dostęp do odpowiednich normalnych wierzchołków, użyj funkcji face.normals
.
wizualizować poszczególne wierzchołki siatki twarzy;
Za pomocą programu Blender możesz łatwo wyświetlić numery indeksów odpowiadające wierzchołkom siatki powierzchni:
- Otwórz Blendera i zaimportuj z GitHuba
canonical_face_mesh.fbx
. - Wejdź na Edit > Preferences > Interface.
W menu Display kliknij Developer Extras.
Wybierz twarz, klikając ją w oknie 3D, i naciśnij klawisz Tab, aby przejść do trybu edycji.
Otwórz menu Overlays i kliknij Indices.
Wyróżnij wierzchołek, którego numer indeksu chcesz określić. Aby wyróżnić wszystkie wierzchołki, użyj Select > All.