ARCore使用Sceneform加载.obj/.gltf模型无显示 报No RCB file错误求助
根因分析
你使用的1.15.0版本官方原生Sceneform仅支持预转换后的.sfb格式渲染资源,无法直接加载.obj/.gltf/.fbx等原始3D模型格式,你直接传入obj文件的Uri后,系统无法识别对应格式的渲染资源,因此抛出No RCB file at uri错误。
可行解决方案
方案1:切换到社区维护版Sceneform(更推荐)
谷歌官方废弃Sceneform项目后,社区已推出持续维护的fork分支,新增了直接加载gltf/glb格式模型的能力,无需提前转换为sfb,且兼容最新版ARCore,修改成本极低:
- 替换
build.gradle中的Sceneform相关依赖,删除原有3个sceneform、arcore依赖,替换为:
implementation 'com.gorisse.thomas.sceneform:sceneform-ux:1.20.2'
- 将你的3D模型导出为
.glb格式(可通过免费工具Blender完成导出,选择glTF二进制格式即可),放入assets目录 - 修改Uri构造代码,正确读取assets下的glb文件:
// 替换原有Uri.parse("testscene.obj") selectObject = Uri.parse("file:///android_asset/testscene.glb");
- 其余业务逻辑无需修改,即可正常加载模型
方案2:离线转换模型为sfb格式
不想替换依赖的情况下,可使用官方开源的命令行转换工具生成sfb文件,无需安装已废弃的Android Studio插件:
- 下载对应操作系统的Sceneform命令行转换工具包
- 执行命令转换3D模型为sfb格式,示例如下:
./converter --input testscene.obj --output testscene.sfb
- 将生成的
.sfb文件放入assets目录,修改Uri指向该sfb文件即可:
selectObject = Uri.parse("testscene.sfb");
补充注意事项
如果保留使用obj格式,需要确保同目录下存放了对应的.mtl材质文件和所有关联的纹理图片,否则即使加载成功也会出现材质丢失、模型显示全白的问题。
内容的提问来源于stack exchange,提问作者MUCHUAN SU
相关产品推荐
相关产品推荐

