Guía para desarrolladores de rostros aumentados de AR Foundation

Obtén información para usar rostros aumentados y renderizar recursos sobre rostros humanos en tu propia app.

Requisitos previos

Asegúrate de comprender los conceptos fundamentales de la 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, ARFaceManager invoca un evento facesChanged que contiene tres listas: los rostros 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 un seguimiento del rostro. El Prefab se puede dejar como null.

Para configurar el ARFaceManager, crea un objeto de juego nuevo y agrégale el ARFaceManager.

Face Prefab es el Prefab creado en la posición central del rostro. Maximum Face Count representa la cantidad máxima de rostros a los que se les puede hacer un seguimiento.

Accede a los rostros detectados

Accede a los rostros detectados a través del componente ARFace, que está conectado al prefabricado de rostro. 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, tres poses de región y una malla facial en 3D.

Posición central

La pose central, que marca el centro de la cabeza de un usuario, es el punto de origen del Prefab al que crea una instancia ARFaceManager. Se encuentra dentro del cráneo, detrás de la nariz.

Los ejes de la postura central son los siguientes:

  • El eje X positivo (X+) apunta hacia el oído izquierdo.
  • El eje Y positivo (Y+) apunta hacia arriba desde la cara.
  • El eje Z positivo (Z+) apunta hacia el centro de la cabeza.

Posiciones de la región

Las poses de región, que se encuentran en la frente izquierda, la frente derecha y la punta de la nariz, marcan partes importantes del rostro de un usuario. Las poses de la región siguen la misma orientación del eje que la pose central.

Para usar las poses de la región, baja el subsistema de ARFaceManager a ARCoreFaceSubsystem y usa subsystem.GetRegionPoses() para obtener información de pose para cada región. Para ver un ejemplo de cómo hacerlo, consulta el ejemplo 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 postura central.

Para visualizar la malla de la cara, adjunta un ARFaceMeshVisualizer al Face Prefab. ARFaceMeshVisualizer generará un Mesh que corresponderá al rostro detectado y lo establecerá como la malla en los MeshFilter y MeshCollider adjuntos. Usa un MeshRenderer para establecer el Material que se usa 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 la cara predeterminada de RA:

  1. Configura un ARFaceManager.
  2. 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 prefabricado de rostro.

  3. Accede a AR Default Face en el Inspector.

  4. Arrastra la cara predeterminada de RA recién creada de la pestaña Hierarchy a la ventana Project Assets para crear un Prefab.

  5. Establece el prefabricado creado recientemente como el prefabricado de rostro en el campo Face Prefab de ARFaceManager.

  6. En la pestaña Hierarchy, borra el objeto de rostro, ya que ya no es necesario.

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.

Visualiza los vértices individuales de la malla de rostro

Puedes usar Blender para ver fácilmente los números de índice que corresponden a los vértices de una malla de cara:

  1. Abre Blender y, luego, importa canonical_face_mesh.fbx desde GitHub.
  2. Navega a Edit > Preferences > Interface.
  3. En el menú Display, selecciona Developer Extras.

  4. Haz clic en el rostro en la vista en 3D para seleccionarlo y presiona Tab para ingresar al modo de edición.

  5. Abre el menú desplegable junto al viewport Overlays y selecciona Indices.

    Índices de malla de rostro de Blender

  6. Destaca el vértice cuyo número de índice deseas determinar. Para destacar todos los vértices, usa Select > All.