5

How to download 3D model and show it in my Arcore app in realtime using Sceneform?

4

1 回答 1

2

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

是的!

1. 安装 Google Sceneform Tools (Beta) 插件

在 Android Studio 中打开插件设置:

  • Windows:文件 > 设置 > 插件 > 浏览存储库
  • macOS:Android Studio > 首选项 > 插件

然后单击 Browse repositories 并安装 Google Sceneform Tools (Beta)。

2. 导入 3D 资产

Sceneform 支持 OBJ、FBX 和 glTF 格式的 3D 资源。请按照以下步骤导入资产:

  • 验证项目的 app 文件夹是否包含 sampledata 文件夹。如果该文件夹不存在,请通过右键单击 Project 窗口中的 app 文件夹然后选择 New > Sample Data Directory 来创建它。sampledata 文件夹是您的 Android Studio 项目的一部分,但其内容不包含在您的 APK 中。

  • 将 3D 资产复制到 sampledata 文件夹中。

  • 不要将资产复制到 assets 或 res 文件夹中,因为这会导致它不必要地包含在您的 APK 中。

右键单击 3D 资源并选择导入 Sceneform 资源以开始导入过程。

单击完成时,向导将执行以下操作:

  • 如果 Sceneform gradle 插件尚不存在,则将其添加到项目的 build.gradle 中。

    依赖项 { 类路径 'com.google.ar.sceneform:plugin:1.0.0' }

  • 更新应用的 build.gradle 文件以包含应用插件行,以及每个导入资产的 sceneform.asset() 条目:

    应用插件:'com.google.ar.sceneform.plugin'

    sceneform.asset('sampledata/models/andy.obj', 'default', 'sampledata/models/andy.sfa', 'src/main/res/raw/andy')

这些条目创建了两个 gradle 任务:

  • createAsset-<asset-name>:如果 SFA(场景资产定义)文件尚不存在,则创建它。该文件包含资产的完整、人类可读的描述。它指向源资源中的模型和纹理,还通过为 Sceneform 的基于物理的材质提供材质参数来定义材质。此任务不会覆盖现有的 SFA 文件,这意味着您在导入后对 SFA 文件所做的任何修改都不会被覆盖。

    • compileAsset-<asset-name>:将 SFA 文件编译为 SFB(Sceneform 二进制资产)文件。该文件被内置到您应用的 APK 中,并在运行时加载以创建可渲染对象。

有关详细信息,请参阅Sceneform Gradle 插件参考

  • 在查看器窗口中打开 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;
    });

来源:导入和预览 3D 资产(2018 年 6 月 18 日)

于 2018-06-18T06:57:46.633 回答