Aprende a usar rostros aumentados para renderizar recursos sobre rostros humanos en tu propia app.
Requisitos previos
Asegúrate de comprender los conceptos fundamentales de RA y cómo configurar una sesión de ARCore antes de continuar.
Detecta rostros
Los rostros se representan con objetos ARFace
que ARFaceManager
crea, actualiza y quita. Una vez por fotograma, el objeto ARFaceManager
invoca un evento facesChanged
que contiene tres listas: los que se agregaron, los que se actualizaron y los que se quitaron desde el último fotograma. Cuando ARFaceManager
detecte un rostro en la escena, creará una instancia de un Prefab con un componente ARFace
adjunto para hacer el seguimiento del rostro. Se puede dejar el Prefab null
.
Para configurar ARFaceManager
, crea un nuevo objeto de juego y agrégale el elemento ARFaceManager
.
Face Prefab es la instancia de Prefab en la pose central del rostro. Maximum Face Count representa la cantidad máxima de rostros que se pueden rastrear.
Acceder a los rostros detectados
Accede a los rostros detectados a través del componente ARFace
, que se conecta al Prefab de rostros. ARFace
proporciona vértices, índices, normales de vértices y coordenadas de textura.
Partes de un rostro detectado
La API de Augmented Faces proporciona una pose central, poses de tres regiones y una malla de rostros 3D.
Postura central
La pose central, que marca el centro de la cabeza de un usuario, es el punto de origen del Prefab que creó la instancia de ARFaceManager
. Se encuentra en el interior del cráneo, detrás de la nariz.
Los ejes de la pose central son los siguientes:
- El eje X positivo (X+) apunta hacia el oído izquierdo.
- El eje Y positivo (Y+) apunta hacia arriba fuera de la cara.
- El eje Z positivo (Z+) apunta al centro de la cabeza.
Poses de la región
Las poses de región marcan partes importantes del rostro del usuario, ubicadas en la frente izquierda, la frente derecha y la punta de la nariz. Las poses de la región siguen la misma orientación de eje que la pose central.
Para usar las poses de la región, reduce el subsistema de ARFaceManager
a ARCoreFaceSubsystem
y usa subsystem.GetRegionPoses()
para obtener información sobre las poses de cada región. Para ver un ejemplo de cómo hacerlo, consulta la muestra de uso de Unity en GitHub.
Malla facial 3D
La malla facial consta de 468 puntos que conforman un rostro humano. También se define en relación con la pose central.
Para visualizar la malla de rostros, conecta un ARFaceMeshVisualizer
a la Face Prefab. El ARFaceMeshVisualizer
generará un elemento Mesh
que corresponde al rostro detectado y lo configurará como la malla en los MeshFilter
y MeshCollider
adjuntos. Utiliza un objeto MeshRenderer
para establecer el objeto Material
que se usará para renderizar el rostro.
AR Default Face Prefab renderiza un material predeterminado en las mallas de rostros detectadas.
Sigue estos pasos para comenzar a usar el rostro predeterminado de RA:
- Configura un
ARFaceManager
. En la pestaña Hierarchy, usa + > XR AR Default Face para crear un nuevo objeto de rostro. Este objeto es temporal y se puede borrar una vez que crees el Prefab de rostros.
Accede a AR Default Face en el Inspector.
Arrastra el rostro predeterminado de RA recién creado de la pestaña Hierarchy a la ventana Project Assets para crear un Prefab.
Establece el Prefab recién creado como el Prefab de rostros en el campo Face Prefab de
ARFaceManager
.En la pestaña Hierarchy, borra el objeto de rostro, dado que ya no lo necesitas.
Accede a vértices individuales de la malla facial
Usa face.vertices
para acceder a las posiciones de los vértices de la malla facial. Usa face.normals
para acceder a las normales de vértices correspondientes.
Visualizar vértices individuales de la malla de rostros
Puedes usar Smoother para ver con facilidad los números de índice que corresponden a los vértices de una malla de rostros:
- Abre Smoother y, luego, importa
canonical_face_mesh.fbx
desde GitHub. - Navega a Edit > Preferences > Interface.
En el menú Display, selecciona Developer Extras.
Haz clic en el rostro en el viewport 3D para seleccionarlo y presiona Tab para ingresar al modo de edición.
Abre el menú desplegable junto al viewport de Overlays y selecciona Indices.
Destaca el vértice cuyo número de índice quieres determinar. Para destacar todos los vértices, usa Select > All.