I use better collada exporter (I still use Blender 2.79).
First: My game runs in GLES2 and is also targeted on mobile devices. So maybe my requirements are very different from yours.
When I create models in Blender, I try to use material names which I also want to keep in Godot that way. So I also reuse materials from other models. And try to avoid using the same names for different materials accross different models. (Avoid "Material.001")
I also normally directly use the textures from the godot project directory. (At least same name / path structure may be advisable.)
I export the models with "Triangulate", "apply modifiers", uncheck "copy images" (they're already there).
Then I created an import script for import on godot. (You can put that in the import settings)
On Materials I usually select storage "Mesh" and "Built in". Storage also to "Single scene".
Compression is usually enabled. But for bigger meshes (roughly >50m) I need to disable it when accuracy is needed. (I.e. when terrain tiles need to match.)
The import script has some tool functions which I apply to imported models. This has meanwhile grown to quite a big number. Such a script gets passed the imported scene and you can use gdscript to do many things each time an import takes place.
One of these functions scans the materials.
- if they contain textures then I scan the specific res:// path where I put such materials (recursively) for fitting a material name. If that doesn't succeed then I check if I find the texture file (from the resource path in the material or the surface name) and assign the correct texture path to the material.
- Certain material names are matched against known shader names (terrain, water ...) and replaced.
- If the materials are albedo only, I search for albedo materials with that surface name in my res:// path and assign them. If nothing is found, I print out warning and keep the materials (I didn't manage to save new materials from such an import script so I manually save new materials after import once when required.)
I also do a number of other processing tasks in the script. Naturally, those depend on the type of game/app.
- Assigning of physics attributes / joints (sometimes depending on markers in the object names)
- Auto-Creating/Assigning collision shapes for certain surface names.
- Auto recreating/adjusting UVs for certain surface names.
- Auto removing "cast shadow" for certain object/surface names.
- Auto creating "shadow only" meshes for certain surfaces.
I usually set cast shadow to off for bigger terrains. Where shadow is useful (i.e. vertical walls) but the part is not a separate mesh but a part/material of a bigger mesh I create a shadow only copy of that surface. This probably is a very specific use case but has considerably helped with performance for me (especially on mobile devices and low performing PCs).