3D models

3D models: what to send us

The files, formats and checks we need for every product model, from beds and sofas to cabinets and shelving, before we render it or put it in a configurator. Clean UVs and 4K textures are not optional.

Updated 12 October 2026

We build configurators from your 3D models: every finish, size and option is rendered from the geometry you send. A model that is wrong at the start is wrong in every one of those images, so we check each delivery against this brief before any work starts.

The rules are the same for every kind of furniture. What changes is how a product is split into parts, and that is covered per type under Parts, by type of furniture.

Send one model first. We check it within two working days and reply with what to fix. Once the first one passes, the rest of the catalogue follows the same rules and goes through quickly.

The short version

  • One file per model, named after the catalogue name, never an export ID.
  • Real-world scale, in centimetres, with no scale left on the objects.
  • Every part that changes on its own (a front, a leg, a headboard, a shelf) as a separate object.
  • Clean, non-overlapping UVs on every part.
  • Textures at 4K (4096 × 4096 px), PBR, seamless where they repeat.
  • Every variant built from the same master, so parts that do not change sit in exactly the same place.
  • Up to 200,000 to 300,000 triangles per product.
  • A material list with names and codes as they appear in your shop.
  • Product photos and a dimension drawing for every model.

File format

Preferred.blend, or .fbx
From CAD.step / .stp, together with an .fbx export if you have one
Accepted.obj + .mtl, .glb / .gltf, .max
Not acceptedeDrawings, PDF, screenshots, one merged mesh for the whole product
  • Units: centimetres, scale 1.0. A 160 cm bed measures 160 in the file. Object scale is 1, 1, 1 on every object: a scale left on an object is the most common reason a model behaves strangely later.
  • Origin at floor level, centred on the product. Z is up, the front faces the camera (−Y).
  • From CAD: export at a fine tessellation. Rounded edges and handles saved coarsely come out faceted, and that cannot be fixed on our side. eDrawings files carry no UVs and no editable geometry.

The first model, and the rest

  • The first product comes complete: every option in one file. For a bed that is every headboard height, the mattress, bedding and pillows, and every type of leg. It shows us the whole range of options before we plan the rest.
  • Each next product is a separate file with all of its own options.
  • If you have a scene with the products in an interior, its lights, cameras and a few finished renders, send it too. It shows the look you expect, and we match it.

Geometry

  • Quads where possible, no n-gons on visible surfaces. N-gons break when a part is resized.
  • Closed, solid parts with real thickness. No single-sided planes for panels, doors or cushions.
  • Normals facing out, no duplicate vertices, no stray hidden objects.
  • Vertices merged. Exports often cut the mesh apart at every UV seam; on a render that shows as thin lines across the surface.
  • No hidden inner shells. A second surface inside a part lets light leak through gaps and doubles the shading.
  • Edges bevelled in the geometry. No razor-sharp corners on upholstery, worktops or panels; a bevel or a support loop, not a flat 90°.
  • Rounded corners are true arcs. Check the radius on the original: we have received models whose “round” corner was already an oval.
  • Parts that touch do not cut through each other in visible places (mattress into frame, door into carcass, shelf into upright).
  • The back and the underside are modelled and finished. A 360° view or an angled shot shows them, so no placeholders or open shells.
  • Up to 200,000 to 300,000 triangles per product, all parts together: enough for smooth curves at a close-up render, nothing more. If you use subdivision, send the simpler base mesh with the modifier left on, not applied.

Parts, by type of furniture

Split the model the way the product is configured. Anything that changes on its own is a separate object: another material, another size, shown or hidden. Anything that never changes can stay joined.

Where a part is split off a smooth surface (a headboard off a bed, a module off a sofa), the cut follows a real seam, such as piping or a panel join, and the shading stays continuous across it. A split in the middle of a curved surface leaves a visible line when the layers are put back together.

Beds and upholstered furniture

ObjectWhy it is separate
HeadboardChanges with height and fabric
Base / frameChanges with width and fabric
Legs, feetSwapped for other legs, often in other materials
Mattress, topper, beddingShown or hidden
Drawers, storage, buttons, pipingOptional, or a different material

Sofas and modular seating

ObjectWhy it is separate
Each module (corner, 1-seat, 2-seat, chaise, end)Combined in any order
Seat cushions, back cushionsOften a different fabric or fill
ArmrestsLeft, right, none, or another shape
Legs, plinthSwapped by option

Every module has its origin at the same connection point (for example the back left corner at floor level) so modules line up without hand adjustment.

Cabinets, sideboards and wardrobes

ObjectWhy it is separate
Carcass (body)Changes with width, height and finish
Fronts: each door and drawer frontChange finish independently; doors may open
Handles, knobsSwapped by option, never stretched with the front
Worktop, top panelOften another material
Plinth, legs, frameSwapped by option
Internal shelves, rails, dividersShown when a door is open
  • Doors: origin on the hinge axis, so a door can be shown open.
  • Drawers: the box modelled behind the front, origin so it slides straight out.
  • Edge banding modelled, or at least mapped, where it is visible.

Shelving and racking

ObjectWhy it is separate
Uprights, side panelsChange with height
ShelvesChange with width and depth, repeat per level
Brackets, connectors, back panels, bracesOptional or another material
Drawers, boxes, doors in a bayOptional inserts

Send one of each repeating element, not a fully assembled rack, with its origin at the point where it connects. We assemble the configurations from those, which keeps every bay identical.

Names

Name objects in English after what they are (headboard, carcass, front_door_left, shelf, legs), and the file after the catalogue model (bed-01.blend, cabinet-120.blend). Each option is its own object named model, part, value: bed-01_headboard_100, bed-01_headboard_120, cabinet-120_legs_metal. A folder of files called 3f2a9c1e-….glb has to be matched to products by hand, one by one, before work can start.

Name the material slots after the surface they cover (fabric, wood_front, metal_handle), so it is clear what is swapped for what. The finishes themselves are named as in your shop: see Materials and finishes.

Sizes, heights and other variants

  • Every size sold (width, height, depth, headboard height) is a separate file, or a separate collection in one .blend. Name it with the dimension: bed-01_160x200_h120, cabinet-120_w120_h80.
  • Do not make sizes by scaling the model. Scaling stretches rounded corners into ovals, thickens panels and stretches handles and fabric with them. Move the geometry: panel thickness, radii and hardware stay the same at every size.
  • All variants come from one master. A part that does not change between variants (the legs, the base, the carcass) sits at exactly the same position in every file. We render products in layers and combine them; a part that moved by a millimetre shows as a jump when the option changes.
  • Legs and feet keep their origin at the point that touches the floor, so they can be swapped.

UV mapping

This is where most deliveries fail, and it cannot be fixed by rendering.

  • Every visible part is unwrapped. No automatic “smart” projections on upholstery or veneer.
  • No overlaps, no stretching. A checker texture shows square tiles everywhere on the surface.
  • One UV map that works for every material. Any fabric or finish from the list goes on the same UVs without changes.
  • One texel density for the whole product. A 10 cm square of fabric or wood is the same size in the UVs on every part, so the weave or the grain matches across them.
  • Real-world scale. State in the delivery how many centimetres one UV unit (0 to 1) covers, e.g. 100 cm. We use it to put every material at its true size.
  • Direction consistent with the real product. Fabric warp runs the same way on every panel (normally vertical on a headboard). Wood grain runs along a shelf, and the way it is cut on a door or drawer front.
  • Seams where the real seams are: piping, stitching, panel joins, edges, the underside.
  • Islands straight where the surface is straight, so stripes, weaves and grain do not wobble.
  • Materials read UV coordinates. No “Generated”, “Object” or procedural mapping: it slides over the surface when the product turns and does not survive export.

Textures

  • 4K: 4096 × 4096 px for every material. 2K only for parts that never fill the frame (screws, glides, hinges), and say so.
  • PBR set per material: base colour, normal (OpenGL), roughness; metallic and ambient occlusion where they apply.
  • Formats: PNG or TIFF, 8 or 16 bit. Base colour in sRGB, the other maps linear. No JPG for normal maps.
  • Fabrics, wood, laminates and anything that repeats: seamless tiles, with the physical size of one tile in centimetres.
  • No lighting, shadows or reflections baked into the base colour.
  • Procedural materials baked to these textures; we cannot carry them over as they are.
  • File names say what they are: wood-oak-natural_basecolor.png, wood-oak-natural_normal.png.

Materials and finishes

Every finish you sell (each fabric colour, veneer, laminate, metal) is one material, named exactly as in your shop, with its shop code. Send them in one of two ways:

A. One material file. A single .glb (or .gltf with a textures/ folder) holding every material, each assigned to its own small object (a cube or a plane), with base colour, roughness and normal or bump maps.

B. A spreadsheet and a texture folder. One row per material; a column holds either a value or a path to a texture:

nameshop_codebase_colorroughnessnormal_mapbump_map
Fabric-A_03100103#738C940.8
Fabric-B_05100205/textures/Fabric-B_05_basecolor.png/textures/Fabric-B_05_roughness.png/textures/Fabric-B_05_normal.png

Either way, also send a flat, evenly lit photo or scan of each real sample (fabric swatch, veneer, laminate, metal), so the render matches what your customer orders.

References to send with the model

  • Product photos: front, side, back, three-quarter view, and close-ups of stitching, edges, handles, hinges and legs.
  • Dimension drawing with the overall sizes and every variant.
  • Option list: which parts change with which option, and which combinations are not sold.

How to deliver

One folder per model, the same structure every time:

bed-01/
  bed-01_160x200_h120.blend
  textures/
  references/
  notes.txt        units, UV scale (cm per UV unit), anything unusual

Send it through a shared link (Box, Google Drive, WeTransfer). We confirm what arrived and reply with the check result for the first model before you prepare the rest.

What we send back, and why

The material looks stretched or too large on one part

That part has a different texel density, or its UVs were scaled to fill the square. Unwrap it at the same scale as the rest of the product.

The pattern or grain runs the wrong way on one panel

The UV direction differs from the other panels. Rotate that UV island so the warp or grain runs the way it does on the real product.

A size looks wrong at the corners or the handles

The size was made by scaling. Rebuild it by moving the geometry, keeping radii, panel thickness and hardware unchanged.

A part jumps when an option changes

That part is not in the same position in every variant file. Build all variants from one master and leave unchanged parts where they are.

Thin lines across a surface on the render

The mesh was cut apart at the UV seams on export, or there are duplicate vertices. Merge them and export again.

The model arrived as one mesh

We cannot change the legs, the fronts or the material of one part on a single mesh. Split it into the objects listed for its type under Parts, by type of furniture.

On this page
  1. The short version
  2. File format
  3. The first model, and the rest
  4. Geometry
  5. Parts, by type of furniture
  6. Beds and upholstered furniture
  7. Sofas and modular seating
  8. Cabinets, sideboards and wardrobes
  9. Shelving and racking
  10. Names
  11. Sizes, heights and other variants
  12. UV mapping
  13. Textures
  14. Materials and finishes
  15. References to send with the model
  16. How to deliver
  17. What we send back, and why
  18. The material looks stretched or too large on one part
  19. The pattern or grain runs the wrong way on one panel
  20. A size looks wrong at the corners or the handles
  21. A part jumps when an option changes
  22. Thin lines across a surface on the render
  23. The model arrived as one mesh

If they can't see it, they won't buy it. Let's show them.

Leave your details and we arrange a free consultation with the people who have spent years helping brands sell customised products. You bring the catalogue and the questions. We bring what has worked, what has not, and what it would take for you.

1Mvariants from one source
Same dayprice changes live in the shop
No-codeconfigurators the client runs
No demo booking, no sales sequence. We reply by email and take it from there.