导入 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 1.15 无法在 ARCore-Android 中播放 fbx 动画