Vi3W
Skip to content

Guides

Textures missing after importing a 3D model? How to fix it

Why textures vanish on import (OBJ drops PBR, FBX links files, paths break) and how to fix it in Unity, Unreal, Godot and Blender.

Aman PorwalFounder @ Vi3W

3 min read

A pencil sketch of a brass lantern on paper, with the same lantern rising off the page as a solid, lit object

Quick answer

Why are textures missing after I import a 3D model?

Usually the textures didn't travel with the model, or the importer can't find or understand them. OBJ references separate image files through an MTL file, FBX may link rather than embed images, and some formats don't carry PBR maps at all. Use GLB with embedded textures where possible, or keep texture files beside the model and reconnect them.

First, find out which problem you have

  • Model is white or grey: the material exists but has no textures connected.
  • Model is pink or magenta (Unity): the shader is missing or incompatible with your render pipeline.
  • Textures look wrong, not missing: maps are connected to the wrong slots, or colour space is wrong.
  • Textures were never in the file: the format or export didn't include them.

Cause 1: the files didn't come along

  • OBJ stores materials in a separate .mtl file, which points to image files by name. If you copied only the .obj, there's nothing to load. Copy the .obj, .mtl and every image, keeping their relative paths.
  • FBX can either embed textures or link to them on disk. Linked paths often point to the original artist's computer. Re-export with embedding on, or copy the images next to the FBX.
  • glTF (.gltf) references separate .bin and image files; GLB packs everything into one file. GLB is the most reliable way to move a textured model. GLB vs glTF.

Cause 2: the format can't carry the maps

OBJ's MTL format was designed long before PBR, so roughness, metallic and packed maps often don't survive. Vi3W's own export notes say it plainly: its OBJ export is geometry only and PBR maps are lost. For textured models, use GLB or FBX. FBX vs OBJ compares them.

Cause 3: the engine didn't hook them up

Unity

  • Select the model, open the Materials tab in the Inspector. Try Extract Textures and Extract Materials so they become editable assets.
  • Pink materials mean the shader doesn't match your render pipeline (URP or HDRP). Convert materials with the pipeline's material upgrader, or assign a URP/HDRP Lit material and reconnect maps.
  • Normal maps: set the texture's Texture Type to Normal map.

Unreal Engine 5

  • If import didn't create textures, import the images separately and build a material: base colour, normal, and roughness/metallic (or an ORM packed map).
  • Set normal maps to normal map compression, and roughness/metallic/AO to linear (sRGB off).

Godot 4

  • GLB textures are imported automatically. If a material is plain, check the Advanced Import Settings' Materials section, or extract materials to files and edit them.

Blender

  • File › External Data › Find Missing Files points Blender at a folder of images.
  • After importing OBJ, check the Shading workspace: Image Texture nodes may exist but be empty.

Cause 4: colour space mix-ups

Base colour textures are sRGB. Normal, roughness, metallic and AO maps are linear data. If a roughness map is treated as sRGB, surfaces look too shiny or too matte. Check the colour space setting on each texture. PBR materials explains the maps.

Prevent it next time

  1. Prefer GLB for anything textured, or FBX with embedded textures.
  2. Keep models and textures in one folder per asset.
  3. Use consistent texture names: barrel_basecolor.png, barrel_normal.png.
  4. Test-import into a blank project before handing over.

For Roblox specifically, see Roblox mesh texture not showing.

From Vi3W

Export GLB to keep the PBR textures in a single file, or FBX for Unity and Unreal. Avoid OBJ when you need textures.

Need a textured model that arrives intact? Generate it in Vi3W and export GLB.

Frequently asked questions

how to add texture to a 3d model in unity

Import the texture images into the project, create a Material (or use the one the model created), and assign the images to the material's slots: base map (albedo), normal map, and metallic/smoothness. Then drag the material onto the model or set it in the model's import settings under Materials.

Last reviewed