Saiba como usar o recurso de rostos aumentados nos seus próprios apps.
Criar e executar o app de exemplo
Para criar e executar o app AugmentedFaces Java:
Abra o Android Studio versão 3.1 ou mais recente. É recomendável usar um dispositivo físico (e não o Android Emulator) para trabalhar com rostos aumentadas. O dispositivo precisa estar conectado à máquina de desenvolvimento via USB. Veja as etapas detalhadas no guia de início rápido do Android.
Importe o exemplo AugmentedFaces do Java para o seu projeto.
No Android Studio, clique em Run . Em seguida, escolha seu dispositivo como destino da implantação e clique em OK para iniciar o app de amostra no seu dispositivo.
Clique em Aprovar para conceder à câmera acesso ao app de exemplo.
O app precisa abrir a câmera frontal e imediatamente rastrear seu rosto no feed da câmera. Ele precisa colocar imagens de orelhas de raposa sobre ambos os lados da sua testa e colocar um nariz de raposa sobre seu próprio nariz.
Como usar rostos aumentados no modo cena
Importar recursos para o Sceneform
Confira se os recursos usados nos rostos aumentados são dimensionados e posicionados corretamente. Para dicas e práticas, consulte Como criar recursos para rostos aumentadas.
Para aplicar recursos como texturas e modelos 3D a uma malha de rosto aumentada no Sceneform, primeiro importe os recursos.
No ambiente de execução, use ModelRenderable.Builder
para carregar os modelos *.sfb
e use o método Texture.Builder
para carregar uma textura para o rosto.
// To ensure that the asset doesn't cast or receive shadows in the scene,
// ensure that setShadowCaster and setShadowReceiver are both set to false.
ModelRenderable.builder()
.setSource(this, R.raw.fox_face)
.build()
.thenAccept(
modelRenderable -> {
faceRegionsRenderable = modelRenderable;
modelRenderable.setShadowCaster(false);
modelRenderable.setShadowReceiver(false);
});
// Load the face mesh texture.
Texture.builder()
.setSource(this, R.drawable.fox_face_mesh_texture)
.build()
.thenAccept(texture -> faceMeshTexture = texture);
Orientação da malha de rosto
Observe a orientação da malha de rosto para o formato de cena:
Configurar a sessão do ARCore
Esse recurso exige que a sessão do ARCore seja configurada para usar a câmera frontal (selfie) e ativar o suporte a malhas faciais. Para fazer isso no Sceneform, estenda a classe ARfragment e modifique a configuração:
@Override
protected Set<Session.Feature> getSessionFeatures() {
return EnumSet.of(Session.Feature.FRONT_CAMERA);
}
@Override
protected Config getSessionConfiguration(Session session) {
Config config = new Config(session);
config.setAugmentedFaceMode(AugmentedFaceMode.MESH3D);
return config;
}
Consulte esta classe ArFragment
com subclasse no layout da atividade.
Receber acesso ao rosto detectado
A classe AugmentedFace
estende a classe Trackable
. Na atividade do app, use AugmentedFace
para ter acesso ao rosto detectado, chamando-o pelo método addOnUpdateListener()
.
// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);
Renderizar o efeito para o rosto
A renderização do efeito envolve estas etapas:
for (AugmentedFace face : faceList) {
// Create a face node and add it to the scene.
AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
faceNode.setParent(scene);
// Overlay the 3D assets on the face.
faceNode.setFaceRegionsRenderable(faceRegionsRenderable);
// Overlay a texture on the face.
faceNode.setFaceMeshTexture(faceMeshTexture);
…
}