Importing 3D models into Unity

The import settings that matter, the ones that quietly cost memory, and why your model is the wrong size.

Unity's model importer has a lot of options and about six that decide whether an asset behaves.

Scale

Unity works in metres — one unit is one metre. FBX files carry a unit scale and exporters disagree about it, so the Scale Factor and Convert Units settings exist to reconcile the difference. Set them once per source tool and stop thinking about it.

A model importing at 0.01 or 100 times its size is almost always centimetres-versus-metres.

Mesh settings

  • Read/Write Enabled. Off unless you modify the mesh at runtime. On, it keeps a second copy in system memory — a straight doubling of that mesh's memory cost.
  • Optimize Mesh. Reorders vertices for cache coherency. Leave on.
  • Mesh Compression. Lossy. Saves disk, costs precision. Useful for background props, risky for anything with fine detail or hard edges.
  • Generate Colliders. Creates a mesh collider from the render mesh. Almost always wrong — see collision meshes.

Normals and tangents

  • Import if the source has authored normals, which it usually should.
  • Calculate with a smoothing angle if it does not. Getting this wrong produces faceted surfaces that should be smooth, or smooth surfaces that should be faceted.
  • Tangents must be calculated the same way your normal maps were baked, or the lighting is subtly wrong everywhere.

Materials

Unity does not import materials well from any format, and this is normal. Expect to rebuild materials in-engine and point them at the imported textures. Extract Materials gets you editable assets rather than embedded ones.

Render pipelines

Materials are pipeline-specific. A material authored for the Built-in pipeline renders magenta in URP or HDRP. Decide the pipeline at project start; converting later is a real migration.

Textures

  • sRGB on for base colour and emissive. Off for normal, roughness, metallic, AO — those hold data, not colour, and gamma-correcting them is wrong.
  • Normal map type set explicitly, so Unity packs the channels correctly.
  • Max Size and Compression are where texture memory is actually decided. A project's memory problems are usually here rather than in geometry.