Я пытаюсь перевести пример расширенного изображения из Sceneform 1.15.0 для использования с ARCore 1.18.0 и Sceneform 1.16.0. (Обратите внимание, что репозиторий Sceneform 1.16.0 на GitHub поставляется только с образцом загрузчика gltfio).
Моя цель - использовать библиотеку GLTFIO для загрузки анимированных GLTF / GLB для отображения на изображениях. (Эта функция была невозможна с механизмом плагина Android Studio, предусмотренным для предыдущих версий Sceneform 1.16.0).
Таким образом я изменяю старый механизм загрузки, показанный в вышеупомянутом примере Sceneform 1.15.0:
...
CompletableFuture.allOf(model)
.thenAccept((Void aVoid) -> {
_image = image;
setAnchor(image.createAnchor(image.getCenterPose()));
Node nodeRenderable=new Node();
nodeRenderable.setParent(this);
nodeRenderable.setRenderable(modelgetNow(null));
})
.exceptionally(
throwable -> {
Log.e(TAG, "Exception loading", throwable);
return null;
});
}
...
... примерно так ...
...
//gltfio
WeakReference<ARActivity> weakActivity = new WeakReference<>((ARActivity) _context);
//
ModelRenderable.builder()
.setSource(_context,Uri.parse(uriAsset))
.setIsFilamentGltf(true)
.build()
.thenAccept(modelRenderable -> {
ARActivity activity = weakActivity.get();
if (activity != null) {
_image = image;
_renderable = modelRenderable;
//
// Set the anchor based in the center of the image.
setAnchor(image.createAnchor(image.getCenterPose()));
//
Node nodeRenderable=new Node();
nodeRenderable.setParent(this);
nodeRenderable.setRenderable(modelRenderable);
}
})
.exceptionally(throwable -> {
Toast toast =Toast.makeText(_context, "Unable to load renderable", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return null;
});
...
Все работает правильно, без ошибок и предупреждений в LogCat. Я имею в виду, что приложение отлично отслеживает изображение, но модель не отображается вообще.
К вашему сведению, я понял, что, когда я возобновляю работу приложения, модель отображается (но фиксируется на экране), пока я не наведу устройство на (расширяемое) изображение.
Кто-нибудь сталкивался с этим сценарием?
Любая помощь?