我正在尝试翻译Sceneform 1.15.0的增强图像示例,以便与ARCore 1.18.0和Sceneform 1.16.0一起使用。(请注意,GitHub的Sceneform1.16.0存储库只附带gltfio示例)。
我的目标是使用GLTFIO库来加载动画GLTFs/GLB在图像上显示。(为Sceneform 1.16.0早期版本提供的Android插件机制无法实现此功能)。
通过这种方式,我改变了前面提到的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;
});
}
...像这样的...with ..。
...
//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中,所有运行都是正确的,没有错误或警告。我的意思是,应用程序跟踪图像完美,但模型是完全没有显示。
FYI,我意识到,当我继续应用,模型显示(但固定在屏幕上),直到我把设备指向(可增强的)图像。
有人经历过这种情况吗?
有什么帮助吗?
发布于 2020-08-05 09:43:10
解决了。建议的gltfio加载程序代码运行良好。这只是3D模型的一个问题,导致它被显示在剪裁空间之外。
https://stackoverflow.com/questions/63246918
复制相似问题