如何使用Sceneform实时下载3D模型并在我的Arcore应用程序中显示它?
答案 0 :(得分:4)
是否可以下载3D模型(.obj格式)并将其实时加载到我的Arcore应用程序中?
是的,它是!
<强> 1。安装Google Sceneform Tools(Beta)插件
在Android Studio中打开插件设置:
然后单击“浏览存储库”并安装Google Sceneform工具(测试版)。
<强> 2。导入3D资源
Sceneform支持OBJ,FBX和glTF格式的3D资源。请按照以下步骤导入资产:
验证项目的app文件夹是否包含sampledata文件夹。如果该文件夹不存在,请通过右键单击“项目”窗口中的应用程序文件夹,然后选择“新建”&gt;来创建该文件夹。示例数据目录。 sampledata文件夹是Android Studio项目的一部分,但其内容未包含在您的APK中。
将3D资源复制到sampledata文件夹中。
不要将资产复制到资产或资源文件夹中,因为这会导致资源不必要地包含在您的APK中。
右键单击3D资源,然后选择导入场景资产以开始导入过程。
单击“完成”后,向导将执行以下操作:
将Sceneform gradle插件添加到项目的build.gradle(如果它尚不存在)。
依赖{ classpath'com.google.ar.sceneform:plugin:1.0.0' }
更新应用的build.gradle文件,以包含应用插件行和每个导入资源的sceneform.asset()条目:
应用插件:'com.google.ar.sceneform.plugin'
sceneform.asset( '的sampleData /模型/ andy.obj', '默认', '的sampleData /模型/ andy.sfa', 'SRC /主/ RES /原料/安迪')
这些条目创建了两个gradle任务:
createAsset-<asset-name>
:如果SFA(Sceneform资产定义)文件尚不存在,则创建该文件。
该文件包含完整的,可读的资产描述。它指向源资源中的模型和纹理,还通过为Sceneform的基于物理的材质提供材质参数来定义材质。
此任务不会覆盖现有的SFA文件,这意味着在导入后对SFA文件所做的任何修改都不会被覆盖。
compileAsset-<asset-name>
:将SFA文件编译为SFB(Sceneform二进制资产)文件。
此文件内置于应用程序的APK中,并在运行时加载以创建可渲染的文件。有关详细信息,请参阅Sceneform Gradle Plugin reference。
第3。创建可渲染
以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日)