ARCore 加载模型异常
ARCore loading model exception
众所周知,AR 库目前的版本为 1.17.1。由于 Android 工作室导入插件已弃用,我很难在 AR 场景中导入和使用模型。
目前我的 raw 文件夹中有 2 个 .gltf 模型,我有以下代码试图在屏幕上显示模型:
ModelRenderable.builder()
.setSource(context.applicationContext, context.resources.getIdentifier(name, "raw", context.packageName))
.build()
.thenAccept {
renderable = it
}
.exceptionally {
print("Error : $it")
null
}
当我尝试添加模型时,出现以下异常:
2020-12-01 17:34:27.012 24894-26864/com.inform.ar E/ModelRenderable: Unable to load Renderable registryId='android.resource://com.inform.ar/raw/armchair'
java.util.concurrent.CompletionException: java.lang.AssertionError: No RCB file at uri: android.resource://com.inform.ar/raw/armchair
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:278)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:284)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1629)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.AssertionError: No RCB file at uri: android.resource://com.inform.ar/raw/armchair
at com.google.ar.sceneform.rendering.LoadRenderableFromSfbTask.byteBufferToSfb(LoadRenderableFromSfbTask.java:191)
at com.google.ar.sceneform.rendering.LoadRenderableFromSfbTask.lambda$downloadAndProcessRenderable[=11=]$LoadRenderableFromSfbTask(LoadRenderableFromSfbTask.java:121)
at com.google.ar.sceneform.rendering.-$$Lambda$LoadRenderableFromSfbTask$A8YYsoT3V_A--F80fBJ_ZLNSnhc.get(Unknown Source:4)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1627)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
这段代码有什么问题?没有更新的官方教程。所有演示都无法正常工作,大多数教程都使用插件导入模型。你们有任何想法如何使这项工作吗?
obj 格式模型在较新版本的 arcore 上仍然可以正常工作。如果您“只有 2 个 .gltf 模型”,那么我认为转换数据会容易得多。 obj 格式自 1980 年代以来就已经存在,而 gltf 格式是如此新,以至于似乎正在经历成长的烦恼...
众所周知,AR 库目前的版本为 1.17.1。由于 Android 工作室导入插件已弃用,我很难在 AR 场景中导入和使用模型。
目前我的 raw 文件夹中有 2 个 .gltf 模型,我有以下代码试图在屏幕上显示模型:
ModelRenderable.builder()
.setSource(context.applicationContext, context.resources.getIdentifier(name, "raw", context.packageName))
.build()
.thenAccept {
renderable = it
}
.exceptionally {
print("Error : $it")
null
}
当我尝试添加模型时,出现以下异常:
2020-12-01 17:34:27.012 24894-26864/com.inform.ar E/ModelRenderable: Unable to load Renderable registryId='android.resource://com.inform.ar/raw/armchair'
java.util.concurrent.CompletionException: java.lang.AssertionError: No RCB file at uri: android.resource://com.inform.ar/raw/armchair
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:278)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:284)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1629)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.AssertionError: No RCB file at uri: android.resource://com.inform.ar/raw/armchair
at com.google.ar.sceneform.rendering.LoadRenderableFromSfbTask.byteBufferToSfb(LoadRenderableFromSfbTask.java:191)
at com.google.ar.sceneform.rendering.LoadRenderableFromSfbTask.lambda$downloadAndProcessRenderable[=11=]$LoadRenderableFromSfbTask(LoadRenderableFromSfbTask.java:121)
at com.google.ar.sceneform.rendering.-$$Lambda$LoadRenderableFromSfbTask$A8YYsoT3V_A--F80fBJ_ZLNSnhc.get(Unknown Source:4)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1627)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
这段代码有什么问题?没有更新的官方教程。所有演示都无法正常工作,大多数教程都使用插件导入模型。你们有任何想法如何使这项工作吗?
obj 格式模型在较新版本的 arcore 上仍然可以正常工作。如果您“只有 2 个 .gltf 模型”,那么我认为转换数据会容易得多。 obj 格式自 1980 年代以来就已经存在,而 gltf 格式是如此新,以至于似乎正在经历成长的烦恼...