使用Sceneform实时下载3D模型

时间:2018-06-18 06:47:22

标签: android opengl-es 3d arcore sceneform

如何使用Sceneform实时下载3D模型并在我的Arcore应用程序中显示它?

1 个答案:

答案 0 :(得分:4)

  

是否可以下载3D模型(.obj格式)并将其实时加载到我的Arcore应用程序中?

是的,它是!

<强> 1。安装Google Sceneform Tools(Beta)插件

在Android Studio中打开插件设置:

  • Windows:文件&gt;设置&gt;插件&gt;浏览存储库
  • macOS:Android Studio&gt;偏好&gt;插件

然后单击“浏览存储库”并安装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

  • 在“查看器”窗口中打开SFA和SFB,允许您通过修改SFA,编译资产和预览SFB来迭代资产。有关可以调整的参数列表,请参阅SFA文件格式参考。

第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日)