Узнайте, как использовать функцию дополненных лиц в собственных приложениях.
Создайте и запустите образец приложения
Чтобы создать и запустить Java-приложение AugmentedFaces :
Откройте Android Studio версии 3.1 или выше. Для работы с Augmented Faces рекомендуется использовать физическое устройство (а не эмулятор Android). Устройство должно быть подключено к машине разработки через USB. Подробные инструкции см. в кратком руководстве по Android .
Импортируйте образец Java AugmentedFaces в свой проект.
В Android Studio нажмите «Выполнить». . Затем выберите свое устройство в качестве цели развертывания и нажмите кнопку ОК , чтобы запустить образец приложения на своем устройстве.
Нажмите « Подтвердить », чтобы предоставить камере доступ к образцу приложения.
Приложение должно открыть переднюю камеру и сразу же отследить ваше лицо в потоке камеры. Он должен разместить изображения лисьих ушей по обеим сторонам вашего лба, а лисьий нос поместить на ваш собственный нос.
Использование дополненных лиц в форме сцены
Импорт активов в Sceneform
Убедитесь, что ресурсы, которые вы используете для дополненных лиц, правильно масштабированы и расположены. Советы и рекомендации см. в разделе «Создание ресурсов для дополненных лиц» .
Чтобы применить ресурсы, такие как текстуры и 3D-модели, к расширенной сетке лица в Sceneform, сначала импортируйте ресурсы.
Во время выполнения используйте ModelRenderable.Builder
для загрузки моделей *.sfb
и используйте Texture.Builder
для загрузки текстуры лица.
// 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);
Ориентация лицевой сетки
Обратите внимание на ориентацию сетки лица для Sceneform:
Настройте сеанс ARCore
Augmented Faces требует, чтобы сеанс ARCore был настроен для использования фронтальной (селфи) камеры и включения поддержки сетки лица. Чтобы сделать это в Sceneform, расширьте класс ARfragment и переопределите конфигурацию:
@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;
}
Обратитесь к этому подклассу класса ArFragment
в своем макете активности.
Получить доступ к обнаруженному лицу
Класс AugmentedFace
расширяет класс Trackable
. В активности вашего приложения используйте AugmentedFace
, чтобы получить доступ к обнаруженному лицу, вызвав его из addOnUpdateListener()
.
// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);
Рендерим эффект для лица
Рендеринг эффекта включает в себя следующие шаги:
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);
…
}