Guia do desenvolvedor de rostos aumentados para AR Foundation

Aprenda a usar Rostos aumentados para renderizar recursos sobre rostos humanos no seu próprio app.

Pré-requisitos

Entenda os conceitos fundamentais de RA. e como configurar uma sessão do ARCore antes de continuar.

Detectar rostos

Os rostos são representados por objetos ARFace criados, atualizados e removidos pela ARFaceManager. Uma vez por frame, o ARFaceManager invoca um evento facesChanged que contém três listas: rostos que foram adicionados, rostos que foram atualizados e rostos que foram removidos desde o último frame. Quando o ARFaceManager detectar um rosto na cena, ele vai instanciar um Prefab com um componente ARFace anexado para rastrear o rosto. O Prefab pode ser deixado como null.

Para configurar o ARFaceManager, crie um novo objeto de jogo e adicione o ARFaceManager a ele.

O Face Prefab é o prefab instanciado na pose central do rosto. Maximum Face Count representa a quantidade máxima de rostos que podem ser rastreados.

Acessar rostos detectados

Acesse os rostos detectados com o componente ARFace, que é anexado ao Prefab de rosto. ARFace fornece vértices, índices, vértices normais e coordenadas de textura.

Partes de um rosto detectado

A API Augmented Faces oferece uma pose central, três poses de região e uma malha de rosto 3D.

Posição central

A posição central, que marca o centro da cabeça do usuário, é o ponto de origem do Prefab instanciado pelo ARFaceManager. Ele fica dentro do crânio, atrás do nariz.

Os eixos da pose central são os seguintes:

  • O eixo X positivo (X+) aponta para a orelha esquerda
  • O eixo Y positivo (Y+) aponta para cima, fora do rosto.
  • O eixo Z positivo (Z+) aponta para o centro da cabeça

Posições da região

Localizada na testa esquerda, na testa direita e na ponta do nariz, as poses da região marcam partes importantes do rosto de um usuário. As posições da região seguem a mesma orientação de eixo da posição do centro.

Para usar as poses da região, faça o downgrade do subsistema do ARFaceManager para ARCoreFaceSubsystem e use subsystem.GetRegionPoses() para conseguir informações de pose para cada região. Para conferir um exemplo de como fazer isso, consulte o exemplo de uso (link em inglês) do Unity no GitHub (link em inglês).

Rede mesh de rosto 3D

A malha de rostos consiste em 468 pontos que compõem um rosto humano. Também é definido em relação à posição central.

Para visualizar a malha de rosto, anexe um ARFaceMeshVisualizer ao Face Prefab. O ARFaceMeshVisualizer gera um Mesh que corresponde ao rosto detectado, definindo-o como a malha nos MeshFilters e MeshColliders anexados. Use um MeshRenderer para definir o Material usado para renderizar o rosto.

O AR Default Face Prefab renderiza um material padrão nas malhas faciais detectadas.

Siga estas etapas para começar a usar o Face padrão de RA:

  1. Configure um ARFaceManager.
  2. Na guia Hierarchy, use + > XR > AR Default Face para criar um novo objeto de rosto. Esse objeto é temporário e poderá ser excluído depois que você criar o Prefab de rosto.

  3. Acesse o AR Default Face no Inspector.

  4. Arraste o rosto padrão de RA recém-criado da guia Hierarchy para a janela Project Assets para criar um Prefab.

  5. Defina o Prefab recém-criado como de rosto no campo Face Prefab do ARFaceManager.

  6. Na guia Hierarchy, exclua o objeto de rosto, já que ele não é mais necessário.

Acessar vértices individuais da malha facial

Use face.vertices para acessar as posições dos vértices da malha facial. Use face.normals para acessar os vértices normais correspondentes.

Visualizar vértices individuais da malha facial

Use o Liquidificador para conferir com facilidade os números de índice que correspondem aos vértices da malha facial:

  1. Abra o Liquidificador e importe canonical_face_mesh.fbx do GitHub.
  2. Navegue para Edit > Preferences > Interface.
  3. No menu Display, selecione Developer Extras.

  4. Selecione a face clicando nela na janela de visualização em 3D e pressione Tab para entrar no modo de edição.

  5. Abra o menu suspenso ao lado da janela de visualização Overlays e selecione Indices.

    Índices da malha de rosto do Liquidificador

  6. Destaque o vértice cujo número de índice você gostaria de determinar. Para destacar todos os vértices, use Select > All.