Руководство разработчика Augmented Faces для AR Foundation

Узнайте, как использовать Augmented Faces для рендеринга ресурсов поверх человеческих лиц в вашем собственном приложении.

Предварительные условия

Прежде чем продолжить, убедитесь, что вы понимаете фундаментальные концепции AR и то, как настроить сеанс ARCore .

Обнаружение лиц

Лица представлены объектами ARFace , которые создаются, обновляются и удаляются с помощью ARFaceManager . Один раз для каждого кадра ARFaceManager вызывает событие facesChanged , которое содержит три списка : лица, которые были добавлены, лица, которые были обновлены, и лица, которые были удалены с момента последнего кадра. Когда ARFaceManager обнаруживает лицо на сцене, он создает экземпляр Prefab с прикрепленным компонентом ARFace для отслеживания лица. Префаб можно оставить null .

Чтобы настроить ARFaceManager , создайте новый игровой объект и добавьте к нему ARFaceManager .

Face Prefab — это префаб, созданный в центральной позе лица. Maximum Face Count представляет собой максимальное количество лиц, которые можно отслеживать.

Доступ к обнаруженным лицам

Доступ к обнаруженным лицам осуществляется через компонент ARFace , который прикреплен к префабу Face. ARFace предоставляет вершины, индексы, нормали вершин и координаты текстур.

Части обнаруженного лица

API Augmented Faces предоставляет центральную позу, три позы областей и 3D-сетку лица.

Центральная поза

Центральная поза, которая отмечает центр головы пользователя, является исходной точкой префаба, созданного ARFaceManager . Он расположен внутри черепа, за носом.

Оси центральной позы следующие:

  • Положительная ось X (X+) указывает на левое ухо.
  • Положительная ось Y (Y+) направлена ​​вверх от лица.
  • Положительная ось Z (Z+) направлена ​​в центр головы.

Позы региона

Расположенные на левом лбу, правом лбу и кончике носа позы областей отмечают важные части лица пользователя. Позы региона следуют той же ориентации оси, что и центральная поза.

Чтобы использовать позы региона, понизьте подсистему ARFaceManager до ARCoreFaceSubsystem и используйте subsystem.GetRegionPoses() для получения информации о позе для каждого региона. Пример того, как это сделать, см. в примере использования Unity на GitHub.

3D-сетка для лица

Сетка лица состоит из 468 точек, составляющих человеческое лицо. Это также определяется относительно центральной позы.

Чтобы визуализировать сетку лица, прикрепите ARFaceMeshVisualizer к Face Prefab . ARFaceMeshVisualizer сгенерирует Mesh , соответствующую обнаруженному лицу, установив ее в качестве сетки в присоединенных MeshFilter и MeshCollider . Используйте MeshRenderer , чтобы установить Material используемый для рендеринга лица.

AR Default Face Prefab отображает материал по умолчанию на обнаруженных сетках лица.

Выполните следующие шаги, чтобы начать использовать лицо AR по умолчанию:

  1. Настройте ARFaceManager .
  2. На вкладке Hierarchy используйте + > XR > AR Default Face , чтобы создать новый объект лица. Этот объект является временным и может быть удален после создания префаба Face.

  3. Откройте AR Default Face в Инспекторе.

  4. Перетащите только что созданное лицо AR Default Face с вкладки Hierarchy в окно Project Assets , чтобы создать префаб .

  5. Установите вновь созданный префаб в качестве префаба лица в поле Face Prefab ARFaceManager .

  6. На вкладке Hierarchy удалите объект «лицо», так как он больше не нужен.

Доступ к отдельным вершинам сетки лица

Используйте face.vertices для доступа к позициям вершин сетки лица. Используйте face.normals для доступа к соответствующим нормалям вершин.

Визуализируйте отдельные вершины сетки лица

Вы можете использовать Blender , чтобы легко просмотреть индексные номера, соответствующие вершинам сетки лица:

  1. Откройте Blender и импортируйте canonical_face_mesh.fbx из GitHub.
  2. Перейдите в Edit > Preferences > Interface .
  3. В меню Display выберите Developer Extras .

  4. Выберите лицо, щелкнув его в окне 3D-просмотра, и нажмите Tab, чтобы войти в режим редактирования.

  5. Откройте раскрывающееся меню рядом с окном просмотра Overlays и выберите Indices .

    Индексы сетки лица Blender

  6. Выделите вершину, порядковый номер которой вы хотите определить. Чтобы выделить все вершины, используйте Select > All .