Aprenda a usar rostos aumentados para renderizar recursos sobre rostos humanos no seu app.
Pré-requisitos
Verifique se você entendeu 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: os rostos que foram adicionados, os que foram atualizados e os que foram removidos desde o último frame. Quando o ARFaceManager
detecta um rosto na cena, ele instancia um Prefab com um componente ARFace
anexado para rastrear o rosto. O prefab pode ser deixado em null
.
Para configurar a ARFaceManager
, crie um novo objeto de jogo e adicione a ARFaceManager
a ele.
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 usando o componente ARFace
, que é anexado ao prefab de rosto. ARFace
fornece vértices, índices, normais de vértice e coordenadas de textura.
Partes de um rosto detectado
A API Augmented Faces fornece uma pose central, três poses regionais e uma malha de rostos em 3D.
Posição ao centro
A pose central, que marca o centro da cabeça de um 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 em direção à orelha esquerda
- O eixo Y positivo (Y+) aponta para cima para fora do rosto.
- O eixo Z positivo (Z+) aponta para o centro da cabeça
Posições da região
Localizadas na testa esquerda, na testa direita e na ponta do nariz, as poses regionais marcam partes importantes do rosto do usuário. As posições da região seguem a mesma orientação do eixo que a posição central.
Para usar as poses da região, reduza o subsistema do ARFaceManager
para ARCoreFaceSubsystem
e use subsystem.GetRegionPoses()
para coletar informações de pose para cada região. Para saber como fazer isso, consulte o exemplo de uso do Unity no GitHub (link em inglês).
Malha de rostos em 3D
A malha de rostos consiste em 468 pontos que compõem um rosto humano. Ela também é definida em relação à pose central.
Para visualizar a malha de rostos, anexe um ARFaceMeshVisualizer
ao Face Prefab. O ARFaceMeshVisualizer
gera um Mesh
que corresponde ao rosto detectado, definindo-o como a malha nos MeshFilter
s e MeshCollider
s anexados. Use um MeshRenderer
para definir o Material
usado para renderizar o rosto.
A AR Default Face Prefab renderiza um material padrão nas malhas de rostos detectadas.
Siga estas etapas para começar a usar o mostrador padrão de RA:
- Configure um
ARFaceManager
. Na guia Hierarchy, use + > XR > AR Default Face para criar um novo objeto de rosto. Esse objeto é temporário e pode ser excluído depois que você criar o prefab de rosto.
Acesse AR Default Face no inspetor.
Arraste o rosto padrão de RA recém-criado da guia Hierarchy para a janela Project Assets para criar um Prefab.
Defina o Prefab recém-criado como o Prefab no campo Face Prefab do
ARFaceManager
.Na guia Hierarchy, exclua o objeto de rosto, porque ele não é mais necessário.
Acessar vértices individuais da malha de rostos
Use face.vertices
para acessar as posições dos vértices da malha de rostos. Use face.normals
para acessar os vértices normais correspondentes.
Visualizar vértices individuais da malha de rostos
Use o Blender para visualizar facilmente os números de índice que correspondem aos vértices de uma malha de rostos:
- Abra o Blender e importe
canonical_face_mesh.fbx
do GitHub. - Navegue para Edit > Preferences > Interface.
No menu Display, selecione Developer Extras.
Selecione o rosto clicando nele na janela de visualização em 3D e pressione Tab para entrar no modo de edição.
Abra o menu suspenso ao lado da janela de visualização Overlays e selecione Indices.
Destaque o vértice com o número de índice que você quer determinar. Para destacar todos os vértices, use Select > All.