Guía para desarrolladores de rostros aumentados de AR Foundation

Obtén información sobre cómo 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 la ARFaceManager crea, actualiza y quita. Una vez por fotograma, ARFaceManager invoca un evento facesChanged que contiene tres listas: caras que se agregaron, caras que se actualizaron y caras que se quitaron desde el último fotograma. Cuando ARFaceManager detecte un rostro en la escena, creará una instancia de Prefab con un componente ARFace adjunto para hacer un seguimiento del rostro. Puedes dejar el Prefab null.

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

Face Prefab es la instancia de Prefab con la que se creó la pose central del rostro. Maximum Face Count representa la cantidad máxima de rostros de los que se puede hacer un seguimiento.

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 texturas.

Partes de un rostro detectado

La API de Augmented Faces proporciona una pose central, tres posturas regionales y una malla de rostros 3D.

Centrar

La pose central, que marca el centro de la cabeza del usuario, es el punto de origen del objeto Prefab creado por ARFaceManager. Se encuentra dentro 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.

Posturas de región

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

Para usar las posturas de la región, reduce el subsistema de ARFaceManager a ARCoreFaceSubsystem y usa subsystem.GetRegionPoses() para obtener información de 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, adjunta un objeto ARFaceMeshVisualizer a Face Prefab. El ARFaceMeshVisualizer generará un Mesh que corresponda al rostro detectado y lo configurará como la malla en los MeshFilter y MeshCollider adjuntos. Usa un objeto MeshRenderer a fin de 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 el rostro predeterminado de RA:

  1. Configura una 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 Prefab de rostro.

  3. Accede a AR Default Face en el Inspector.

  4. Arrastra la cara predeterminada de RA creada recientemente desde la pestaña Hierarchy hasta la ventana Project Assets para crear un prefab.

  5. Configura el Prefab recién creado como el Prefab de rostro en el campo Face Prefab de ARFaceManager.

  6. En la pestaña Hierarchy, borra el objeto de rostro, dado que ya no lo necesitarás.

Accede a vértices individuales de la malla de rostros

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 vértices individuales de la malla facial

Puedes usar Blender para ver con facilidad los números de índice que corresponden a los vértices de la malla de rostros:

  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. Para seleccionar el rostro, haz clic en él en la viewport en 3D y presiona Tab para ingresar al modo de edición.

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

    Índices de malla de rostros de la licuadora

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