• 3D
  • Best import glTF method?

In my experience:

  • glTF cannot be made into insrtanced scene easily, so useless if I want to add a script or collider.
  • glb + seperate materials take up glb size * 2 due to the materials having the images embedded in them
  • glb + tres takes up 10x space as tres is awful for storing texture images
  • all the above are useless at following the project import settings (filter, mipmaps) and just totally ignore that part, leaving you to manually fix each and every texture import setting
  • gltf + separate material or tres takes up about 1/4 as much space (tres slightly less) as glb built-in and respects import settings but no instanced scenes (and the folder looks terrible with 20 files instead of 1)

So far, I've found no good solution for importing an object, having it respect my texture import settings and being able to turn it into an instanced scene to add scripts or colliders or whatever to.

I think if you import the gltf as a new inherited, it should be able to instanced. Otherwise just drop it into scene with a node parent and save it. That's what I do. I usually use glb though. If it asks, though, I think you need to choose new inherited. I think you might be able to delete it after that, also. I'm not sure. I thought I saw one guy do that in a tutorial or something. But, I haven't gotten it to respect settings so far so I guess you got further than me. I'll have to try that.

I use glTF and separate materials. You just have to double-click on the file and choose "new inherited" and then edit that (you almost never want to drag gltf or glb files into the scene directly). In any case, you'll probably still need to edit the materials yourself as DCC apps (like Blender) do not have an easy way to embed PBR materials (glTF does support it, but the exporters are not mature yet). So this is unavoidable.

@fire7side said: I think if you import the gltf as a new inherited, it should be able to instanced. Otherwise just drop it into scene with a node parent and save it. That's what I do. I usually use glb though. If it asks, though, I think you need to choose new inherited. I think you might be able to delete it after that, also. I'm not sure. I thought I saw one guy do that in a tutorial or something. But, I haven't gotten it to respect settings so far so I guess you got further than me. I'll have to try that.

New inherited, is that in the import settings? I've tried juggling those settings and presets so much, I'm confused by this point which does what. GLB seems like a fine format, but doesn't using with seperate materials just waste disk space as you have the textures inside both the glb and in seperate material files?

@cybereality said: I use glTF and separate materials. You just have to double-click on the file and choose "new inherited" and then edit that (you almost never want to drag gltf or glb files into the scene directly). In any case, you'll probably still need to edit the materials yourself as DCC apps (like Blender) do not have an easy way to embed PBR materials (glTF does support it, but the exporters are not mature yet). So this is unavoidable.

Why not drag the gltf or glb into scene exactly? Can you create a new inherited on the filesystem without having to open it up and save it first? Godot doesn't respect import texture settings so gltf seems like a more appropriate option since that way I can actually have it import textures with filter and mipmaps off instead of going through manually and doing it. glTF has a couple of ways of exporting, do you use tres files or materials? Cause tres files are substantially bigger than materials if you start with a glb file, and a little smaller (i think) than materials if they're seperate.

So you import the glTF model normally (such as saving it in your Godot project directory). Then, do not drag the glTF onto the scene. Double-click it on the bottom left (where your project files are) and a popup window appears. Choose "open new inherited". Then in this new scene, you can save the scene (with some name, this will be a tscn file). Then you drag the tscn file onto the scene and only edit that (not the original glTF file).

If you are dealing with lots of textures and need special options (such as disabling filtering or mipmaps) then you should adjust the default import options before adding the glTF files. Just import one texture (could be anything, just to test it), set the options you want in the "Import" tab, then click "Preset", and choose "set as default for texture". Then any additional textures you import will get the same settings.

@cybereality said: So you import the glTF model normally (such as saving it in your Godot project directory). Then, do not drag the glTF onto the scene. Double-click it on the bottom left (where your project files are) and a popup window appears. Choose "open new inherited". Then in this new scene, you can save the scene (with some name, this will be a tscn file). Then you drag the tscn file onto the scene and only edit that (not the original glTF file).

If you are dealing with lots of textures and need special options (such as disabling filtering or mipmaps) then you should adjust the default import options before adding the glTF files. Just import one texture (could be anything, just to test it), set the options you want in the "Import" tab, then click "Preset", and choose "set as default for texture". Then any additional textures you import will get the same settings.

Yep, I just did that and it works well, a little clunkier than the glb as I could just right-click and make a instanced scene on the filesystem rather than needing to popup the whole scene for it.

Import settings do not work importing glb files, but it works well with gltfs like this, I should have mentioned this is why I'm favoring gltf seperate as a bug does not permit packed textures to inherit import settings.

Oh also, can I re-saved the original gltf and have the instanced scene inherit the changes or will I have to create a new instanced scene from the updated gltf?

Yeah, so reimporting is kind of bugged. It does for the most part work, however, if you have any open scenes in the editor, they won't be updated immediately. So you have to close the scene, and then re-open it. Then you will see the changes. In any case, your edits will not be lost. So the glTF may (for example) change the geometry, but if you added or edited a material after that it will remain on the new model.

I think it'd be best to go with: