Android ARCore加载模型异常

Android ARCore加载模型异常,android,arcore,Android,Arcore,正如许多人已经知道的,AR库目前的版本是1.17.1。由于Android studio导入插件已被弃用,我很难在AR场景中导入和使用模型 目前,我的原始文件夹中有2.gltf模型,我有以下代码试图在屏幕中显示模型: ModelRenderable.builder() .setSource(context.applicationContext, context.resources.getIdentifier(name, "raw", context.packageNam

正如许多人已经知道的,AR库目前的版本是1.17.1。由于Android studio导入插件已被弃用,我很难在AR场景中导入和使用模型

目前,我的原始文件夹中有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$0$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格式自20世纪80年代就已经存在,gltf格式是如此的新,似乎正在经历成长的痛苦…

obj格式模型仍然适用于较新版本的arcore。如果您只有“2.gltf模型”,那么我认为转换数据会容易得多。obj格式从20世纪80年代开始出现,gltf格式非常新,似乎正在经历成长的痛苦…

首先,您需要将库版本从1.17.0更改为1.15.0实现'com.google.ar.sceneform.ux:sceneform ux:1.15.0'实现'com.google.ar.sceneform:assets:1.15.0',为什么要使用.gltf模型。需要在运行时加载模型时使用gltf。尝试不同的模式,如.obj、fbx或sfb感谢您的回复。为什么要退回到1.15?我是说,我必须这样做吗?这只是一个测试。如果我能做到这一点,我将从服务器加载模型。所以我需要使用gltf models.coz ARCore现在是开源的,google不再维护ARCore的新版本:1.17。而且这个版本不稳定。知道了?1.15是一个稳定的版本。你的代码现在能用了吗?我确实试着降级了,但是我仍然得到同样的错误“Uri上没有RCB文件”。我认为sceneform需要一种特定类型的模型,而不仅仅是一个模型。有什么想法吗?你必须为sceneform场景提出一个替代sdk吗?它存档了吗?事实上,经过长时间的尝试,我使它工作了!!必须用搅拌器打开模型并从那里导出!我不知道为什么会发生这种情况,但这是唯一的办法,使它的工作!!首先,您需要将库版本从1.17.0更改为1.15.0实现'com.google.ar.sceneform.ux:sceneform ux:1.15.0'实现'com.google.ar.sceneform:assets:1.15.0',为什么要使用.gltf模型。需要在运行时加载模型时使用gltf。尝试不同的模式,如.obj、fbx或sfb感谢您的回复。为什么要退回到1.15?我是说,我必须这样做吗?这只是一个测试。如果我能做到这一点,我将从服务器加载模型。所以我需要使用gltf models.coz ARCore现在是开源的,google不再维护ARCore的新版本:1.17。而且这个版本不稳定。知道了?1.15是一个稳定的版本。你的代码现在能用了吗?我确实试着降级了,但是我仍然得到同样的错误“Uri上没有RCB文件”。我认为sceneform需要一种特定类型的模型,而不仅仅是一个模型。有什么想法吗?你必须为sceneform场景提出一个替代sdk吗?它存档了吗?事实上,经过长时间的尝试,我使它工作了!!必须用搅拌器打开模型并从那里导出!我不知道为什么会发生这种情况,但这是唯一的办法,使它的工作!!谢谢你的回答。这两个模型仅用于证明conept。稍后,将会有数百个模型!我真的想弄明白谷歌说“gltf受支持”是什么意思,但实际上没有gltf模型在播放。那“gltf受支持”可能是过时的信息。它看起来像是被扔到了船外的Sceneform,正如这里暗示的:谢谢你的回答。这两个模型仅用于证明conept。稍后,将会有数百个模型!我真的想弄明白谷歌说“gltf受支持”是什么意思,但实际上没有gltf模型在播放。那“gltf受支持”可能是过时的信息。它看起来像是被扔到了船外的Sceneform,如图所示: