Issue Importing Obj Into Blender With Textures I'm trying to import a map alongside with models from Jedi Academy (Quake3 based game - idTech3 engine) and I use a program called Noesis to open map in .bsp format. It works and shows textures correctly:

This program has ability to export map into obj/fbx/dae and many more formats. So I've chosen obj format, loaded into Blender and there are no textures shown, only meshes. The strange thing is that I heard that materials are held in .mtl file, but there is no such file in game data nor Noesis didn't generate anything like that.
But here's the weird thing, this program treat's materials as they were textures, this is part of the output obj file:
https://pastebin.com/EHR1JXJn
So you can clearly see there:
usemtl textures/desert/stucco_grime
And this textures/desert/stucco_grime is actually a jpg file!

Indeed blender thinks it's material and not texture:

So I can create manually a material, and load a texture from this jpg file to it and it will work, but there are hundreds of models and I'm looking for some automatic way of doing this

A couple side questions:

Any good tutorial what are UV's that everyone are talking about,
these are essentially coordinates where to apply texture on given
mesh?
There is no such thing as &quot;material&quot; generally? A &quot;material&quot; is
internal thing of game engine that decides how to renders model,
like adding bump-mapping and changing color intensity? If so, why
there are &quot;mtl&quot; files available in .obj format
In case someone wondered I just resolved my problem by writing some code:

import bpy

for obj in bpy.data.objects:
    if obj.active_material is not None:
        if obj.active_material.name.startswith('textures'):
            print(obj.active_material.name)
            mat = obj.active_material
            tex = 0
            if mat.texture_slots[0] is not None:
                continue
            try:
                tex = bpy.data.textures[mat.name]
            except KeyError:
                tex = bpy.data.textures.new(mat.name, 'IMAGE')
                try:
                    tex.image = bpy.data.images.load('path/to/assets/' + mat.name + '.jpg')
                except RuntimeError:
                    print(mat.name + ' not found')
                    continue
            slot = mat.texture_slots.add()
            slot.texture = tex