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 格式是如此新,以至于似乎正在经历成长的烦恼...