Too Many Materials After Importing From Blender? Material Slots and URP

Illustration: several colored material spheres merging into one atlas texture sheet

You import one prop from Blender and Unity creates nine materials for it. Half are called Material.001, they are greyed out so you can’t edit them, and your frame debugger shows the barrel alone costs six draw calls. If you have too many materials after importing from Blender, the fix is partly in Blender (fewer, cleaner material slots) and partly in Unity (remapping to your own URP materials). This guide covers both, plus how Blender’s Principled BSDF maps to URP Lit and when a texture atlas is worth the effort.

Material Slots, Submeshes and Draw Calls

In Blender, each object has a list of material slots in the Material Properties tab. Every face is assigned to one slot. When you export, Unity splits the mesh into one submesh per used slot, and each submesh is drawn separately.

So a crate with wood, metal and rope materials is three draws. A house built from 40 separate objects, each with three slots, can be 120 draws before you add a single enemy. The SRP Batcher in URP makes each of those draws cheaper when they share a shader, but it doesn’t make them free. Fewer submeshes and fewer distinct materials still help, especially on mobile. Our draw calls and SRP Batcher guide explains how URP batches and how to read the Frame Debugger.

A rough target for indie props: one material for small and medium props, two or three for hero objects or characters (for example body, hair, transparent eyes). Transparent parts usually need their own material because they use a different surface type.

Cleaning Up Materials in Blender

Do this before export. It is much easier than untangling it in Unity.

1. Remove unused slots. Select the object, go to Material Properties, open the dropdown arrow under the slot list (Material Specials) and choose Remove Unused Slots. Slots with no faces assigned disappear.

2. Merge duplicate materials. The .001, .002 copies appear when you duplicate objects with single-user materials, append from other files, or import kits. They’re identical but count as separate materials. To merge them:

  1. Switch an Outliner to the Blender File display mode and expand Materials.
  2. Right-click the duplicate (for example Wood.001) and choose Remap Users.
  3. Pick the original Wood as the new ID. Every object that used the copy now uses the original.

Then purge the orphans with File > Clean Up > Purge Unused Data.

3. Share materials across objects. Select all objects that should use the same materials, make the one with the correct setup active (click it last), then press Ctrl+L and choose Link Materials.

4. Collapse slots on a single object. If several slots should really be one, select the faces in Edit Mode, pick the target slot and click Assign. Then remove unused slots again.

5. Name materials for Unity. Name them what you want the Unity material to be called, such as M_Wood_Planks. Clear names make remapping by name possible, which we use below.

If you join objects with Ctrl+J, Blender merges their slot lists. Objects sharing the same material end up with one shared slot, so joining small static props that always appear together is a quick way to cut draws.

How Unity Imports Blender Materials

Select the FBX in Unity and open the Materials tab of the Import Settings. The important options:

  • Material Creation Mode: Import via MaterialDescription (the default) builds materials from the FBX data. None imports no materials, so the model uses the default material until you assign your own.
  • Location: Use Embedded Materials keeps materials inside the model asset (the default). Use External Materials (Legacy) writes them as separate .mat files, the old Unity behaviour.
  • Remapped Materials: a list with one slot per Blender material. Drag any project material into a slot to replace the imported one.

Embedded materials are read-only, which is why they look greyed out in the Inspector. You have two ways to make them editable: click Extract Materials… to write them as .mat files and remap automatically, or create your own materials and remap to them. In a URP project, the embedded materials use URP Lit.

If textures are missing, white or pink, that is a separate problem with texture paths and shaders. See Blender textures missing in Unity for embedded media, Extract Textures and pink shader fixes.

🧰 Tools that tame imported assets

If you import a lot of models, the right editor tools save hours: material and mesh combiners, batch import presets and better asset browsers. We tested the Asset Store tools that are actually worth paying for as a solo dev.

See our Unity Asset Store tool picks →

Remapping to Your Own URP Materials

The cleanest long-term setup: keep a folder of hand-made URP materials (one M_Wood_Planks, one M_Metal_Painted, and so on) and make every imported model point at them. Imported materials then never pile up, and changing one material updates every model that uses it.

You can remap by hand in the Remapped Materials list, or let Unity search by name:

  1. In the Materials tab, expand On Demand Remap.
  2. Set Naming to From Model’s Material (it looks for a material with the same name as the Blender one).
  3. Set Search to Project-Wide or Recursive-Up.
  4. Click Search and Remap, then Apply.

For many models, this editor script does the same thing for every selected model, matching names against a materials folder. Put it in an Editor folder:

using System.Linq;
using UnityEditor;
using UnityEngine;

public static class RemapModelMaterials
{
    const string MaterialFolder = "Assets/Materials";

    [MenuItem("Tools/Remap Selected Model Materials")]
    static void Remap()
    {
        foreach (Object obj in Selection.objects)
        {
            string path = AssetDatabase.GetAssetPath(obj);
            if (AssetImporter.GetAtPath(path) is not ModelImporter importer) continue;

            var embedded = AssetDatabase.LoadAllAssetsAtPath(path).OfType<Material>().ToList();
            int count = 0;

            foreach (Material mat in embedded)
            {
                Material match = AssetDatabase
                    .FindAssets($"{mat.name} t:Material", new[] { MaterialFolder })
                    .Select(AssetDatabase.GUIDToAssetPath)
                    .Select(p => AssetDatabase.LoadAssetAtPath<Material>(p))
                    .FirstOrDefault(m => m != null && m.name == mat.name);

                if (match == null) continue;

                importer.AddRemap(
                    new AssetImporter.SourceAssetIdentifier(typeof(Material), mat.name),
                    match);
                count++;
            }

            if (count > 0) importer.SaveAndReimport();
            Debug.Log($"{path}: remapped {count} of {embedded.Count} material(s)");
        }
    }
}

Select one or more FBX files in the Project window and run Tools > Remap Selected Model Materials. Any material without a match is left alone and reported in the count. Commit to git first, since it reimports the models.

Principled BSDF to URP Lit

FBX was not designed for modern PBR materials, so not everything survives the trip. What reliably comes through from a Principled BSDF:

  • Base Color and an image texture plugged into it.
  • Normal map, when it goes through a Normal Map node into Normal.
  • Basic Alpha and Emission values, depending on how they are wired.

What usually does not come through correctly: roughness and metallic maps, node groups, procedural textures, Mix nodes, and anything that isn’t a plain image texture into a Principled input. Procedural textures must be baked to images first.

The biggest gotcha is roughness. URP Lit uses Smoothness, which is 1 minus roughness, and it reads smoothness from the alpha channel of the Metallic map (or the Base Map alpha, set by the Source option under Smoothness). So a roughness map from Blender or Substance doesn’t plug straight in. You need to invert it and pack it into the metallic texture’s alpha channel, or export your textures with a Unity URP preset from your texturing tool.

In practice, treat the imported material as a hint. Set up the final URP Lit material by hand once (Base Map, Metallic Map with smoothness in alpha, Normal Map, Occlusion), then remap every model to it.

Vertex colours are another trap. Blender exports colour attributes in the FBX, but URP Lit ignores vertex colours. To use them, make a Shader Graph with a Vertex Color node multiplied into Base Color.

Fewer Materials: Atlases, Trim Sheets and Palettes

When an object really needs several looks, put them in one texture instead of several materials.

Colour palette texture. For low-poly and stylised games, this is the best trick there is. Make a small texture (say 64×64) of flat colour swatches. UV unwrap the model and scale each part’s UV islands down onto the colour it should be. One material, one texture, every prop in the game can share it, and the SRP Batcher loves it.

Trim sheets. One texture with strips of repeating detail (planks, metal edges, bolts) that many modular pieces share. Unwrap faces onto the right strip. Great for environments.

Baked atlas. For a finished prop with several materials, bake them into one texture set:

  1. Add a second UV map for the atlas and unwrap the whole object into it with no overlaps (UV > Smart UV Project or Unwrap, then Pack Islands).
  2. In every material, add an Image Texture node pointing at one new image and click it so it is the active node. Don’t connect it.
  3. In the UV Maps list, highlight the atlas map (the bake writes into the highlighted map) but leave the camera icon on the original map, so your existing textures still read from it.
  4. Switch the render engine to Cycles. In Render Properties > Bake, choose Bake Type Diffuse and under Contributions keep only Color.
  5. Click Bake, save the image, then repeat for normals if needed.
  6. Replace the old materials with one new material using the baked image, and make the atlas UV map the first one in the list.

Baking takes some setup, so save it for props that appear often or hero assets where the draw call savings add up.

Troubleshooting

Materials are greyed out and can’t be edited

They are embedded in the model asset and read-only. Use Extract Materials in the Materials tab, or remap the slots to your own materials.

Model has Material.001, Material.002 and so on

Duplicate materials in Blender. Remap Users in the Outliner’s Blender File view, purge unused data, and re-export.

Remapped materials reset after reimport

The remap was made on a different model file, or the Blender material was renamed so the slot name no longer matches. Remaps are stored by material name, so keep names stable.

Model is pink after import

A shader mismatch, usually Built-in materials in a URP project. Our pink materials fix covers converting them.

Metal looks like plastic, or everything is too shiny

Roughness didn’t convert to smoothness. Set the Smoothness slider or pack an inverted roughness map into the Metallic map’s alpha.

Model still has many draw calls after cleanup

Check that you actually re-exported and Unity reimported. Then look in the Frame Debugger for objects with several submeshes or materials that use different shader variants, which can’t share a batch.

FAQ

Does each material slot add a draw call in Unity?

Yes. Each used slot becomes a submesh, and each submesh is drawn separately. The SRP Batcher makes them cheaper but not free.

Should I set Material Creation Mode to None?

It keeps imports clean if you assign materials yourself on prefabs. If you want automatic remapping by name, keep the default mode so the material slots still appear in the Remapped Materials list.

Will Unity’s Lit shader match Blender’s Eevee render?

Close but never identical. Lighting, tone mapping and post processing differ, so judge final materials inside Unity.

Is one material per object always best?

For most props, yes. Characters and objects with transparent parts usually need two or three, and that is fine.

Can I share one material across hundreds of props?

Yes, with a palette texture or trim sheet. It is one of the most effective optimisations for stylised indie games.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *