android - 使用 Sceneform 实时下载 3D 模型

标签 android opengl-es 3d arcore sceneform

<分区>

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

最佳答案

Is it possible to download a 3D model (.obj format) and load it in my Arcore app in realtime?

是的,是的!

<强>1。安装 Google Sceneform Tools(测试版)插件

在 Android Studio 中打开插件设置:

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

然后单击浏览存储库并安装 Google Sceneform 工具(测试版)。

<强>2。导入 3D Assets

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

  • 验证您项目的应用程序文件夹是否包含示例数据文件夹。如果该文件夹不存在,请在“项目”窗口中右键单击应用程序文件夹,然后选择“新建”>“示例数据目录”来创建它。 sampledata 文件夹是您的 Android Studio 项目的一部分,但其内容不包含在您的 APK 中。

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

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

右键单击 3D Assets 并选择“导入 Sceneform Assets ”以开始导入过程。

当您单击“完成”时,向导会执行以下操作:

  • 将 Sceneform gradle 插件添加到项目的 build.gradle(如果尚不存在)。

    依赖关系{ 类路径 'com.google.ar.sceneform:plugin:1.0.0'

  • 更新您应用的 build.gradle 文件以包含应用插件行和每个导入 Assets 的 sceneform.asset() 条目:

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

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

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

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

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

有关详细信息,请参阅 Sceneform Gradle Plugin reference .

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

<强>3。创建可渲染

获得 SFB 格式的 Assets 后,您可以构建一个 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 日)

关于android - 使用 Sceneform 实时下载 3D 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903957/

相关文章:

android - OpenGL ES 中圆角矩形的最佳实践

ios - 点积和亮度/Findmyicone

3d - 天盒vs天球

android - 如何在 Android 中使用 IsLetter、IsDigit 和 IsChar

java - 使用大数组列表加速自动完成算法

android - 改造 2 使用 apikey 发布?

android - 在适用于 Android 的 OpenGL ES 中,将对象转换到 map 上的最佳方式是什么?

c++ - 3D 屏幕空间光线转换/拾取 DirectX9

c++ - Qt 3d C++ 动画

Android 屏幕顶部 3 到 4 个点指示当前 View 示例代码