在 Android studio 上使用 Sceneform 插件导入模型但得到 'error creating sfa'

Importing models using the Sceneform plugin on Android studio but getting 'error creating sfa'

我正在尝试 Google 的新 Sceneform SDK for AR。

它说要使用 Google Sceneform Tools 插件导入资源。因此,我按照提到的所有步骤 here 来导入我的资产。

在导入任何 3D 模型(.obj 或 .fbx 格式)时,每次出现此错误 - 创建 sfa 时出错 ,没有其他错误细节,然后它给出恢复资产导入过程的选项。

我正在使用 Android Studio 3.1.2 并且我在 Linux OS (Ubuntu 18.04)。

我已经反复验证了这些步骤,但一切看起来都很好。还有其他人面临同样的问题吗?

github 上的这个解决方案帮助了我:

Link

1.right-单击 3D 资产并 select "Import Sceneform Asset"

2.click "finish"

3.click "keep broken gradle changes"

4.in "gradle files have changed..." 点击 "sync now" - 同步成功,.sfa 文件在 sampledata 文件夹中创建,.sfb 文件在 assets 文件夹中创建

我通过删除 obj 文件 header 中的 'mtllib xxxx.mtl' 修复了这个错误。

希望对大家有所帮助:)

编辑 我在没有删除 obj 文件中的内容的情况下找到了解决方案。只需将 xxxx.mtl 和 xxxx.obj

放在同一个文件夹中

目前在 Github 上为此创建了一个问题。 Ubuntu 18.04 中的转换器存在兼容性问题,但我不确定它是否适用于其他发行版或 Ubuntu.Issue 13

的旧版本

Google 现在更新了 Sceneform gradle 插件,修复了这个错误。使用 Sceneform 插件的 1.0.1 版本。

在您的项目 build.gradle 文件中,替换此 -

classpath 'com.google.ar.sceneform:plugin:1.0.0'

有了这个-

classpath 'com.google.ar.sceneform:plugin:1.0.1'

它应该完美地导入您的资产。它现在对我有用。

同样的错误。这不是故障。我意识到这是因为 obj 文件(第 1 行)中的材料路径不正确。它仍然认为材料文件的名称是'materials.mtl',而实际上我已经将它重命名为'tree.mtl'(它是一个树的模型)。

教训:不要重命名材质或纹理文件(除非你记得更改 obj 文件中的路径)。

问题是.obj 文件的名称与.sfa 和.sfb 文件的名称不同,只需将.obj 文件重命名为您想要的名称即可,切勿更改.sfa 和.sfb 文件的名称.sfb 文件。

还要确保 .mtl 文件与其相关联。

问题是因为 sceneform.asset 文件已经添加到您的模块 build.gradle。下面是 build.gradle

中的 sceneform.asset 文件的示例
sceneform.asset('sampledata/andy.obj',
    'default',
    'sampledata/andy.sfa',
    'src/main/res/raw/andy')

这将始终给出一条错误消息,表明已存在同名任务。

要解决此问题,请删除添加到 Gradle 的 sceneform.asset 文件并重试同步,然后再次重新导入 .sfb 文件。

希望这能解决问题。

可能是因为您没有在生成 .sfa 路径时输入 EXACT 3d 文件名。

转到 gradle 文件的最后一行,并在我在这里写 Your-3d-Model-file-Name 的代码中替换你的文件名然后再次尝试手动生成 sfb 文件..

apply plugin: 'com.google.ar.sceneform.plugin', sceneform.asset('sample_data/Your-3d-Model-file-Name.obj',

'default', // 'Material Path' specified during import.

'sample_data/Your-3d-Model-file-Name.sfa', <--- This is where you could have made a mistake

'src/main/res/raw') // 'location you want to store the generated .sfb file'

-

最终同步您的 gradle 文件并重建您的项目...您的 SFb 模型将在您指定的位置生成.. 对于那些仍然有问题的人,android studio 3.6 和 sceneform 之间也存在兼容性问题...... 所以那些想要关于如何生成 sfb 文件的**完整答案的人应该 **