如何使用sceneform下载3d模型并在我的arcore应用程序中实时显示?
最佳答案
是否可以下载三维模型(.obj格式)并实时加载到我的arcore应用程序中?
是的,是的!
1。安装google sceneform工具(beta)插件
在android studio中打开插件设置:
窗口:文件>设置>插件>浏览存储库
macos:android工作室>首选项>插件
然后单击浏览存储库并安装google sceneform工具(beta)。
2。导入三维资源
sceneform支持obj、fbx和gltf格式的三维资源。按照以下步骤导入资源:
验证项目的应用程序文件夹是否包含SampleData文件夹。如果文件夹不存在,请右键单击项目窗口中的应用程序文件夹,然后选择“新建>示例数据目录”来创建它。
sampledata文件夹是android studio项目的一部分,但其内容不包含在apk中。
将三维资源复制到SampleData文件夹中。
不要将资源复制到assets或res文件夹中,因为这将导致它不必要地包含在apk中。
在三维资源上单击鼠标右键,然后选择“导入场景表单资源”以开始导入过程。
单击“完成”时,向导将执行以下操作:
将sceneform gradle插件添加到项目的build.gradle(如果它不存在)。
依赖项{
类路径'com.google.ar.sceneform:plugin:1.0.0'
}
更新应用程序的build.gradle文件,使其包含一个apply插件行,并为每个导入的资产更新一个sceneform.asset()条目:
apply plugin:'com.google.ar.sceneform.plugin'
sceneform.asset('sampledata/models/andy.obj',
“默认”,
“sampledata/models/andy.sfa”,
'src/main/res/raw/andy')
这些条目创建两个分级任务:createAsset-<asset-name>
:如果SFA(sceneform资产定义)文件尚不存在,则创建该文件。
该文件包含一个完整的、人类可读的资产描述。它指向源资源中的模型和纹理,还通过为sceneform基于物理的材质提供材质参数来定义材质。
此任务不会覆盖现有的SFA文件,这意味着导入后对SFA文件所做的任何修改都不会被覆盖。compileAsset-<asset-name>
:将sfa文件编译为sfb(sceneform二进制资产)文件。
此文件将内置到应用程序的apk中,并在运行时加载以创建可渲染文件。
有关更多信息,请参见Sceneform Gradle Plugin reference。
在查看器窗口中打开SFA和SFB,允许您通过修改SFA、编译资源和预览SFB来迭代资源。有关可以调整的参数列表,请参见SFA文件格式参考。
三。创建可渲染
使用SFB格式的资源后,可以构建ModelRenderable并将其附加到场景中的节点,如下所示:
ModelRenderable.builder()
.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
资料来源:Import and Preview 3D assets(2018年6月18日)