Przewodnik dla programistów dotyczący aplikacji Augmented Faces dla AR Foundation

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 MeshFilterMeshCollider. 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:

  1. Skonfiguruj ARFaceManager.
  2. 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.

  3. Otwórz AR Default Face w Inspektorze.

  4. Aby utworzyć gotowy element, przeciągnij nowo utworzoną opcję Domyślna twarz AR z karty Hierarchy do okna Project Assets.

  5. Ustaw nowo utworzony szablon jako szablon twarzy w polu Face Prefab obiektu ARFaceManager.

  6. 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:

  1. Otwórz Blendera i zaimportuj z GitHuba canonical_face_mesh.fbx.
  2. Wejdź na Edit > Preferences > Interface.
  3. W menu Display kliknij Developer Extras.

  4. Wybierz twarz, klikając ją w oknie 3D, i naciśnij klawisz Tab, aby przejść do trybu edycji.

  5. Otwórz menu Overlays i kliknij Indices.

    Indeksy siatki twarzy w Blenderze

  6. Wyróżnij wierzchołek, którego numer indeksu chcesz określić. Aby wyróżnić wszystkie wierzchołki, użyj Select > All.