导入 Sceneform 资产不会生成 .sfa 和 .sfb 文件

Posted

技术标签:

【中文标题】导入 Sceneform 资产不会生成 .sfa 和 .sfb 文件【英文标题】:Importing sceneform asset does not generate .sfa and .sfb files 【发布时间】:2020-09-19 06:47:22 【问题描述】:

当我尝试导入sceneform资产并在弹出的窗口上按完成时,没有任何反应。没有.sfa,.sfb文件生成。build.gradle文件中也没有生成任何内容。我不得不提一下我之前在同一个项目中导入了场景格式资产,一切正常,但现在(一段时间后)当我再次尝试时它不起作用。

【问题讨论】:

您需要提及更多细节。您正在运行哪个 Sceneform 版本? 在设置中,在插件部分:Google Sceneform Tools (Beta) 1.15.0。在 build.gradle (Project) 我有“classpath 'com.google.ar.sceneform:plugin:1.17.0”。在 build.gradle(Module:app) 我有“ implementation 'com.google.ar:core:1.17 .0'"" 实施 'com.google.ar.sceneform.ux:sceneform-ux:1.17.0'" "实施 'com.google.ar.sceneform:core:1.17.0'"。我认为在我收到升级 gradle 文件的弹出消息后它们更新到 1.17.0。我尝试将它们更改为 1.15.0 但它仍然不起作用。 我也试过卸载重装插件,还是不行。 【参考方案1】:

来自https://developers.google.com/sceneform/develop/

考虑到 1.15 和 1.17.1 相同,以及这些问题

https://github.com/google-ar/sceneform-android-sdk/issues/1078 https://github.com/google-ar/sceneform-android-sdk/issues/989 https://github.com/google-ar/sceneform-android-sdk/issues/912

看起来它不再处于开发阶段,而且他们不会修复它。这是android studio 3.6及更高版本的问题。


没有解决办法,要么你可以回滚到Android studio 3.5,要么你可以使用一个快速的解决方法。

    在您的应用程序中创建一个新的 sampledata 目录。

    右键单击***应用程序级目录>新建>示例数据目录

    将您的 3D 资产及其依赖项(obj、mtl、fbx、png)放入 sampledata 目录。

    将类路径“com.google.ar.sceneform:plugin:1.15.0”添加到您的项目级 gradle。确保您在存储库中有 google()。

    // Top-level build file where you can add configuration options. common to all sub-projects/modules
    buildscript 
        repositories 
            google()
            jcenter()
        
        dependencies 
             classpath "com.android.tools.build:gradle:4.0.1"
             classpath 'com.google.ar.sceneform:plugin:1.15.0'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
         
    
    

    sceneform 需要特定版本的 NDK 和 Java。并且您需要应用插件和依赖项,因为它不会自动添加到最新版本的 android studio 中。 应用插件:'com.android.application' 应用插件:'com.google.ar.sceneform.plugin'

     android 
         ...
    
         defaultConfig 
             ...
    
             ndk 
                 /*
                 * Sceneform is available for the following ABIs: arm64-v8a, armv7a,
                 * x86_64 and x86. This sample app enables arm64-v8a to run on
                 * devices and x86 to run on the emulator. Your application should
                 * list the ABIs most appropriate to minimize APK size (arm64-v8a recommended).
                 */
                 abiFilters 'arm64-v8a', 'x86'
             
             compileOptions 
                 sourceCompatibility JavaVersion.VERSION_1_8
                 targetCompatibility JavaVersion.VERSION_1_8
             
         
    
         buildTypes 
             ...
         
     
    
     dependencies 
         ...
         implementation 'com.google.ar.sceneform:core:1.15.0'
     
    
     < sceneform.asset code - 7th step >
    

    我已将 Mars 3D asset 从 Poly 添加到我的示例数据中。目录结构类似于

    将原始数据目录添加到资源中。 右键单击 res > 新建 > 文件夹 > 原始资源文件夹。

    将此添加到应用级 gradle 文件的末尾。

     sceneform.asset('sampledata/mars.obj', // 'Source Asset Path' specified during import.
         'default',                         // 'Material Path' specified during import.
         'sampledata/mars.sfa',             // '.sfa Output Path' specified during import.
         'src/main/res/raw/mars')
    

    同步文件,它现在应该可以工作了。

Sceneform 已弃用对 SFB 和 SFB Sceneform Android Studio 插件的支持(可以使用 glTF)-Release Notes

该文档仅适用于 sceneform 1.15.0 - 不包括 glTF 工作流程。您可以查看this 演示以了解如何使用 glTF。

【讨论】:

我正在使用 macOS Big Sur 和 AndroidStudio 4.1.2 。我按照你的步骤没有任何错误,但它没有用。什么都没有生成!你能帮忙吗? @SinaKhorshidian Idk 它应该可以工作。我的 AndroidStudio 版本是 4.0.1,没什么大的区别,所以这应该不是问题;但是,我使用的是 Windows 并在物理设备上进行了测试。我已经在 GitHub 上上传了 repo。克隆并检查它是否有帮助。 github.com/AniketKariya/sceneform-test 我误解了你的回答。我必须在同步文件后重建项目。【参考方案2】:

我遇到了同样的问题,我注意到您可以在没有插件的情况下通过在 build.gradle 中添加带有 sceneform.asset(...) 的模型并构建项目、相关的 .sfa 和 .sfb 文件来执行此操作然后创建。

【讨论】:

【参考方案3】:

场景 1.16 和 1.17 only supports gltf:

As part of the 1.16.0 release, support for SFA and SFB assets was removed in favor of adding glTF support

Android Studio 3.6 和 Sceneform Tools 中还有一个错误,导致 Android Studio 崩溃(将 AS 降级到 3.5 会有所帮助)。 如果你想使用 .fbx,你应该降级到 Sceneform 1.15 或者你可以使用 Sceneform 1.17 和 gltf 格式

【讨论】:

v1.17 不存在用于 SceneForm。正确的?没有提到任何 v1.17 here 它确实存在:mvnrepository.com/artifact/com.google.ar.sceneform/core/1.17.0 问题是我的对象是.gltf格式的,它仍然没有转换它 .glb/.gltf 格式文件可以直接扩充。 .sfb/.sfa 方式现已弃用。 请注意,来自 Google 的 Sceneform 开发人员文档的官方建议是:“不要使用 com.google.ar.sceneform.* Maven 工件的 1.17.0 版本。” - developers.google.com/sceneform/develop

以上是关于导入 Sceneform 资产不会生成 .sfa 和 .sfb 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sceneform 生态系统有问题地旋转 3D 模型

Google sceneform 3D导入

Sceneform 1.15 无法在 ARCore-Android 中播放 fbx 动画

在 Android Studio 3.6 中使用 Import Sceneform Asset 导入 FBX 时出错

统一的 ARCore 与 Sceneform 功能/用例?

将 SQLite 数据库从 sdcard 导入到 android - 没有资产文件夹