Узнайте, как использовать 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 .