Android ARCore Sceneform开发中.glb文件存放位置及路径获取
Sceneform加载GLB模型路径配置方法
setOnTapPlaneGlbModel() 方法接收的字符串参数是URI格式路径,不需要传入本地文件系统绝对路径,也不需要自行读取InputStream,按照以下规则配置即可:
- 文件存放:将
.glb模型文件放到项目的app/src/main/assets目录下,可按需在assets目录下创建子目录分类存放。 - 路径写法:assets目录下的文件统一使用
asset://前缀,拼接文件在assets内的相对路径即可。
示例:若将demo_model.glb直接放在assets根目录,代码可直接写为:
(supportFragmentManager.findFragmentById(R.id.single_player_ar_fragment) as ArFragment) .setOnTapPlaneGlbModel("asset://demo_model.glb")
若文件存放在assets下的ar子目录,对应路径改为asset://ar/demo_model.glb即可。
常见踩坑说明
- assets目录内的文件会被打包到APK内部,不存在可直接访问的文件系统绝对路径,此前无法获取到对应字符串路径属于正常情况,Sceneform内部会自动识别
asset://前缀,自行完成assets文件的读取逻辑,不需要手动调用open()方法获取输入流。 - 不建议将glb文件存放在res目录:除
res/raw外的其他res目录会被构建工具压缩处理,会损坏glb文件格式导致加载失败;如果一定要使用res/raw存放,路径格式为android.resource://应用包名/raw/文件名,且文件名必须为全小写,仅支持字母、数字、下划线,兼容性弱于assets目录。 - glb文件名尽量不要使用中文、空格、特殊符号,避免旧版本Sceneform解析路径失败。
内容的提问来源于stack exchange,提问作者Yonshoku
相关产品推荐
相关产品推荐

