Узнайте, как использовать 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 по умолчанию:
- Настройте
ARFaceManager. На вкладке Hierarchy используйте + > XR > AR Default Face , чтобы создать новый объект лица. Этот объект является временным и может быть удален после создания префаба Face.

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

Перетащите только что созданное лицо AR Default Face с вкладки Hierarchy в окно Project Assets , чтобы создать префаб .
Установите вновь созданный префаб в качестве префаба лица в поле Face Prefab »
ARFaceManager.На вкладке Hierarchy удалите объект «лицо», так как он больше не нужен.
Доступ к отдельным вершинам сетки лица
Используйте face.vertices для доступа к позициям вершин сетки лица. Используйте face.normals для доступа к соответствующим нормалям вершин.
Визуализируйте отдельные вершины сетки лица
Вы можете использовать Blender , чтобы легко просмотреть индексные номера, соответствующие вершинам сетки лица:
- Откройте Blender и импортируйте
canonical_face_mesh.fbxиз GitHub. - Перейдите в Edit > Preferences > Interface .
В меню Display выберите Developer Extras .

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


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