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

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:

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

  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. Ustaw nowo utworzony prefab jako „Prefab twarzy” w polu Face Prefab ARFaceManager.

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

  1. Otwórz Blender i zaimportuj 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 widoku 3D, a następnie naciśnij klawisz Tab, aby przejść do trybu edycji.

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

    Indeksy siatki Blender

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