How to Make a Single UV Map Work for Multiple Tile Textures with Real-World Dimensions

Hi everyone,

I’m working on a 3D kitchen configurator where clients can apply different tile textures to cabinets, backsplashes, and countertops. Each texture has real-world dimensions (e.g., 50×50 cm, 60×60 cm, 45×45 cm , ….).

The challenge is that many surfaces are not simple rectangles — some are L-shaped, curved, or multi-part meshes. I want to UV unwrap my model once in Blender so that I can apply any texture in Three.js with correct real-world tiling, without stretching, shrinking, or distorting the tiles. I need real repetition in the result, not more, not less.

Currently, I:

  1. Measure each mesh surface in meters.

  2. Measure the texture tile size in meters.

  3. Calculate how many tiles should repeat.

  4. Set texture.repeat.set(...) in Three.js.

However, the output is often incorrect — the tiles don’t match the intended scale. I’ve read that each texture normally needs a separate UV map, but I want to avoid re-UVing for every texture.

My questions:

  • What’s the recommended workflow in Blender to create a UV map that works for any tile texture with real-world dimensions, even on L-shaped or curved surfaces?

  • How should I handle merged or multi-part meshes to ensure correct tiling?

  • Are there any Three.js best practices for dynamically applying tile textures without distortion?

Thanks in advance for any guidance!

This sounds like a box unwrap" might work.

2 Likes

Can you share a L shape 3D simple model that you follow this box unwrap on it ?

Need more information and example what you need. If we speak about perfomance this can help you three.js examples

1 Like

You may build a “strategic baking” process, with zones of your textures dynamically edited in real time, using shader or canvas editing.

Bake all your models, leaving “reserved squares” in the textures, unwrap your pattern-related mesh here. Must be an “easy to retrieve” UV/pixels coordinate, then finish the job dynamically (tsl / glsl / canvas) That’s what I would aim for.

something, something, partial texture editing: :wink:

my answer is very abstract, but that’s all I can suggest with these unclear specifications

1 Like