Dowiedz się, jak używać rozszerzonych twarzy do renderowania zasobów na ludzkich twarzach w aplikacji.
Wymagania wstępne
Zanim przejdziesz dalej, upewnij się, że znasz podstawowe pojęcia związane z AR i 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ę ARFaceManager
wywołuje zdarzenie facesChanged
obejmujące 3 listy: dodane twarze, twarze, które zostały zaktualizowane, i twarze usunięte od ostatniej klatki. Gdy ARFaceManager
wykryje twarz w scenie, utworzy instancję prefab z dołączonym komponentem ARFace
do śledzenia twarzy. Prefab można pozostawić null
.
Aby skonfigurować ARFaceManager
, utwórz nowy obiekt gry i dodaj do niego ARFaceManager
.
Face Prefab to przykład gotowego modelu twarzy, który znajduje się w środkowej pozycji twarzy. Maximum Face Count reprezentuje maksymalną liczbę twarzy, które można śledzić.
Dostęp do wykrytych twarzy
Dostęp do wykrytych twarzy możesz uzyskać za pomocą komponentu ARFace
, który jest dołączony do prefabu twarzy. ARFace
podaje wierzchołki, indeksy, normalne wierzchołki i współrzędne tekstur.
Części wykrytej twarzy
Interfejs Augmented Faces API umożliwia ustawienie pozycji pośrodku, 3 pozycje regionu i siatkę twarzy 3D.
Pozycja pośrodku
Środkowa pozycja, która wyznacza środek głowy użytkownika, to punkt początkowy prefabu utworzonego przez ARFaceManager
. Znajduje się wewnątrz czaszki, 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 środek głowy
Pozycje w regionie
Na lewym czole, prawym czole i czubku nosa umiejscowione są ważne części twarzy użytkownika. Region ma taką samą orientację osi co w pozycji środkowej.
Aby użyć pozycji regionu, wyłącz podsystem ARFaceManager
na ARCoreFaceSubsystem
i użyj subsystem.GetRegionPoses()
, aby uzyskać informacje o pozycji każdego regionu. Przykład znajdziesz w przykładzie użytkowania Unity na GitHubie.
Trójwymiarowa siatka z twarzą
Siatka twarzy składa się z 468 punktów, z których składa się twarz człowieka. Określa się ją także względem pozycji środkowej.
Aby zwizualizować siatkę twarzy, dołącz ARFaceMeshVisualizer
do Face Prefab. ARFaceMeshVisualizer
wygeneruje obiekt Mesh
odpowiadający wykrytej twarzy, ustawiając go jako siatkę w załączonych elementach MeshFilter
i MeshCollider
. Użyj MeshRenderer
, aby ustawić Material
używane do renderowania twarzy.
AR Default Face Prefab renderuje materiał domyślny na wykrytych siatkach twarzy.
Aby zacząć używać domyślnej twarzy AR, wykonaj te czynności:
- Skonfiguruj
ARFaceManager
. Na karcie Hierarchy użyj + > XR > AR Default Face, aby utworzyć nowy obiekt twarzy. Ten obiekt jest tymczasowy i można go usunąć po utworzeniu prefabu 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.
Ustaw nowo utworzony prefab jako „Prefab twarzy” w polu Face Prefab
ARFaceManager
.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. Aby uzyskać dostęp do odpowiednich wierzchołków normalnych, użyj face.normals
.
Zwizualizuj poszczególne wierzchołki siatki twarzy
Możesz użyć narzędzia Blender, aby łatwo wyświetlać numery indeksu odpowiadające wierzchołkom siatki płaszczyzn:
- Otwórz Blender i zaimportuj
canonical_face_mesh.fbx
z GitHuba. - Wejdź na Edit > Preferences > Interface.
Z menu Display wybierz Developer Extras.
Wybierz twarz, klikając ją w widoku 3D, a następnie naciśnij klawisz Tab, aby przejść do trybu edycji.
Otwórz menu obok widocznego obszaru Overlays i wybierz Indices.
Zaznacz wierzchołek, którego numer indeksu chcesz określić. Aby wyróżnić wszystkie wierzchołki, użyj Select > All.