Skip to content
Photogrammetry & 3D Heritage

To texture a 3D heritage model well, you give it a clean UV layout, bake colour from your source photographs at a resolution matched to the captured detail, and keep colour management consistent from capture through export. The texture is what makes a model legible and useful — geometry alone rarely answers a research question. This guide covers the full texturing workflow with concrete settings and the pitfalls that produce blur and seams.

Texture vs UV map — what's the difference?

These two are easy to confuse but do different jobs:

  • The texture is a 2D image holding colour (and sometimes normal or roughness detail).
  • The UV map is the set of coordinates telling each point on the mesh where in that image to sample.

A perfect texture image looks awful on a bad UV layout, and vice versa. Most photogrammetry tools generate both automatically, but understanding the split is what lets you diagnose problems.

What resolution should heritage textures be?

Match the texture to the detail your photos actually resolved — over-inflating resolution just wastes storage without adding information.

ObjectTypical texture sizeNotes
Small artefact (coin, sherd)4096 pxOne page usually plenty
Medium object (vessel, bust)8192 pxOne or two pages
Large object / facadeMultiple 8192 px pagesTile by UV islands
Web/AR delivery2048–4096 pxDownscaled derivative

Keep a high-resolution archival master and generate smaller derivatives for delivery.

How do I bake the texture?

Baking projects the source photographs back onto the mesh through the cameras. In most tools it is a single step after meshing; the key settings are texture size and the blending mode. A scripted Metashape example:

python
chunk.buildUV(mapping=Metashape.GenericMapping, page_count=1)
chunk.buildTexture(
    blending_mode=Metashape.MosaicBlending,
    texture_size=8192,
    fill_holes=True
)
chunk.exportModel("artefact.obj", texture_format=Metashape.ImageFormatPNG)

MosaicBlending picks the best source image per region (sharpest, most frontal), which usually beats simple averaging for heritage detail.

Why is my texture blurry or seamed?

These are the two complaints you will hear most. Diagnose by cause:

  • Blurry overall -> texture resolution too low, or source photos soft. Re-bake higher; if photos are soft, no bake fixes it.
  • Visible seams -> UV islands meet where lighting differed between frames. Improve the unwrap and ensure consistent capture lighting.
  • Patchy colour shifts -> per-image exposure/white-balance drift. Re-develop the whole set identically and re-bake.
  • Ghosting / double detail -> camera alignment error upstream; fix geometry first.

Texture problems are often capture problems wearing a costume.

Should I bake textures or use vertex colours?

For archival models, bake textures. Vertex colours store one colour per vertex, so detail is capped by mesh density and you must subdivide heavily to get sharpness — wasteful. Baked maps decouple appearance from geometry, letting you decimate the mesh for delivery while keeping crisp colour. Reserve vertex colours for quick previews or extremely dense point-derived meshes.

How do I keep colour accurate?

Colour fidelity starts at capture, not texturing:

  1. Photograph a colour reference target in the set.
  2. Set a fixed white balance (e.g. 5200K) across every frame.
  3. Develop all frames identically — no per-image grading.
  4. Record or embed the colour profile in your paradata.

Then the bake faithfully carries that controlled colour. A beautiful but colour-uncontrolled texture is not a reliable record.

What formats should I export?

Split archival from delivery:

  • Archival master: OBJ or PLY + sidecar texture (PNG/TIFF) + MTL, all kept together.
  • Web/AR delivery: glTF/GLB or USDZ with embedded, compressed textures.

Never separate the mesh from its material and texture files — moving the OBJ alone strips its appearance.

Key Takeaways

  • A model needs both a clean UV layout and a matched-resolution texture to look sharp.
  • Match texture resolution to the detail your photos actually captured; keep a high-res archival master.
  • Bake with mosaic-style blending to pick the sharpest source per region.
  • Blur and seams are usually capture problems — soft photos, exposure drift, or bad UVs.
  • Prefer baked textures over vertex colours for archival models so appearance is independent of mesh density.
  • Control colour at capture with a reference target and fixed white balance, then record the profile.
  • Export OBJ/PLY + sidecars for archives and glTF/USDZ for web/AR delivery, keeping files together.

Frequently Asked Questions

What is the difference between a texture and a UV map?

A texture is the 2D image of colour or detail, while the UV map defines how that image wraps onto the 3D surface by assigning each vertex a coordinate in the texture. You need both: a good UV layout makes a texture look sharp and seamless.

What texture resolution should I use for heritage objects?

For most artefacts 4096 or 8192 pixels per texture page balances detail against file size, with very large or important objects using multiple 8K pages. Match the texture resolution to the detail your photographs actually resolved rather than over-inflating it.

Why does my texture look blurry or have visible seams?

Blurriness usually means the texture resolution is too low for the mesh detail or the source photos were soft, while seams come from poor UV layout or inconsistent lighting between frames. Re-baking at higher resolution and improving the UV unwrap fixes most cases.

Should I bake textures or use vertex colours?

Use baked texture maps when you need sharp detail independent of mesh density, and vertex colours only for quick previews or very dense meshes where per-vertex colour is enough. Baked textures decouple appearance from geometry, which is better for archival models.

What file formats should I use for textured models?

Use OBJ or PLY with sidecar texture images for archival masters, and glTF or USDZ for web and AR delivery. Keep the mesh, material file, and texture images together because separating them breaks the appearance.

How do I keep colour accurate in my textures?

Shoot a colour reference target, set a fixed white balance across the whole image set, and process all frames identically before texturing. Embedding or recording the colour profile in your paradata lets others reproduce accurate colour later.