5

我正在尝试 Google 为 AR 提供的新Sceneform SDK。

它说要使用 Google Sceneform Tools 插件来导入资产。所以我按照这里提到的所有步骤来导入我的资产。

在导入任何 3D 模型(.obj 或 .fbx 格式)时,每次我收到此错误 -错误创建 sfa时没有其他错误详细信息,然后它提供了恢复资产导入过程的选项。

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

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

4

8 回答 8

2

我已通过在我的 obj 文件的标题中删除“mtllib xxxx.mtl”来修复此错误。

希望它可以帮助某人:)

编辑 我找到了解决方案而没有删除 obj 文件中的某些内容。只需将 xxxx.mtl 和 xxxx.obj 放在同一个文件夹中

于 2018-05-15T11:17:02.720 回答
2

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

关联

1.右键单击 3D 资源并选择“导入 Sceneform 资源”

2.点击“完成”

3.单击“保留损坏的gradle更改”

4.在“gradle files has changed...”中点击“sync now”——同步成功,在sampledata文件夹中创建.sfa文件,在assets文件夹中创建.sfb文件

于 2018-05-14T14:59:49.937 回答
1

问题是 .obj 文件的名称与 .sfa 和 .sfb 文件的名称不同,只需将 .obj 文件重命名为您想要的名称,不要碰 .sfa 和 .sfb 文件的名称。

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

于 2019-10-02T22:51:54.973 回答
0

谷歌现在已经更新了 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'

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

于 2018-05-16T18:40:06.040 回答
0

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

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

于 2018-12-28T21:40:47.900 回答
0

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

于 2018-05-16T08:48:53.040 回答
0

可能是您没有在 .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', <--- 这是你可能犯错的地方

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

step4pic

-

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

于 2020-05-02T05:00:42.953 回答
0

问题是因为 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 文件。

希望这能解决问题。

于 2019-11-06T12:18:40.943 回答