FBX File dragged into godot not importing

Godot Version

4.2.2

Question

Hello! So I’m dragging in my fbx files and the import isn’t triggering.

I’ve installed the Godot fork of FBX2gLTF and rebooted the engine.

I see that after dragging the file into the FileSystem, Godot is making a copy of the file on disc, but that’s it. I’m not seeing anything on the console and there isn’t a popup. Also I can’t see the FBX files in the FIleSystem even though they exist on disc.

I’ve been searching online and here but can’t find anything other than dragging and dropping once the importer is installed.

Is there a setting in the options or something else that I’m missing? Are there issues with certain FBX file versions?

Thanks!

Have you set a blender path yet? There’s a setting for that.

Might be an issue importing, I figure FBX2gLTF would spit out an error that Godot isn’t communicating to the console/output. You could try using FBX2gLTF directly on the FBX file to see, or create a basic FBX test file to import.

Oh so is the blender path required for the conversion? I’m not using blender so it’s not set.

I’ll give those suggestions a go. I’ve never used FBX2gLTF so didn’t realize that I could run it manually. Thanks!

So you’re right @gertkeno. Running the tool on it’s own showed a few errors, but it did export a file. However the gLTF itself had errors and wouldn’t import into godot either.

I’ve also tried using a basic box that I’ve exported from blender and while it gets converted correctly, the gLTF box doesn’t render in editor.

Not sure what to do without knowing the error messages. Could manually convert in blender if the problem FBXs open in it.

For context, I’m using a bunch of assets exported from unreal and unity as proxies.

The FBX2glTF manual export warnings:

Warning: node /RootNode/SM_Oak_Tree_a uses unsupported transform inheritance type ‘eInheritRrSs’.
(Further warnings of this type squelched.)

And when that new glTF file is imported to godot:

Godot Engine v4.2.2.stable.mono.official (c) 2007-present Juan Linietsky, Ariel Manzur & Godot Contributors.
modules/gltf/register_types.cpp:63 - Blend file import is enabled in the project settings, but no Blender path is configured in the editor settings. Blend files will not be imported.
— Debug adapter server started —
— GDScript language server started on port 6005 —
Can’t open file from path ‘res://buffer.bin’.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:1151 - Condition “!(format & Mesh::ARRAY_FORMAT_TEX_UV)” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()

This time I’m importing the fbx into blender, and then exporting out an fbx again.

The FBX2glTF export runs fine:

Wrote 4015 bytes of glTF to ./SM_Oak_Tree_a_OUT_out/SM_Oak_Tree_a_OUT.gltf.
Wrote 16704 bytes of binary data to ./SM_Oak_Tree_a_OUT_out/buffer.bin.

Then godot errors out when importing the new glTF file:

Can’t open file from path ‘res://buffer.bin’.
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
modules/gltf/gltf_document.cpp:1338 - Condition “(int)(offset + buffer_end) > buffer.size()” is true. Returning: ERR_PARSE_ERROR
scene/resources/surface_tool.cpp:932 - Condition “r_vertex->size() == 0” is true.
scene/resources/surface_tool.cpp:693 - Condition “index_array.size() == 0” is true. Continuing.
scene/resources/importer_mesh.cpp:170 - Condition “vertex_count == 0” is true.
scene/resources/importer_mesh.cpp:687 - Condition “surfaces.size() == 0” is true. Returning: Ref()

Trying FBX to glTF in Blender works.

I’ll just use Blender to batch export it all out until godot 4.3 is released next month. The new 4.3 fbx exporter looks promising.

It’s too bad about the importer not working in godot 4.2. I’m thinking that the FBX version used isn’t supported? I’ve tried fbx v2022 and v2018 but they both get the parsing errors.

Not sure if this would qualify as a solution since it’s more of a work around. If we can solve the above that would be ideal.

Try checking your Project Settings → General → FileSystem → Import.

Had the same issue only to find out that FBX is unchecked in my Project Settings. Should work now after restarting it

This solved the issue! Looks like the flag was disabled somehow. Not sure how that occurred but this is the solution. Thank you!