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

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:

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

  3. Otwórz AR Default Face w inspektorze.

  4. Przeciągnij nowo utworzoną domyślną twarz AR z karty Hierarchy do okna Project Assets, aby utworzyć prefab.

  5. W polu Face Prefab usługi ARFaceManager ustaw nowo utworzony szablon jako gotowy do użycia z twarzą.

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

  1. Otwórz Blender i zaimportuj plik canonical_face_mesh.fbx z GitHuba.
  2. Wejdź na Edit > Preferences > Interface.
  3. Z menu Display wybierz Developer Extras.

  4. Wybierz twarz, klikając ją w widocznym obszarze 3D, a następnie naciśnij Tab, aby przejść do trybu edycji.

  5. Otwórz menu obok widocznego obszaru (Overlays) i wybierz Indices.

    Indeksy siatki twarzy z miksera

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