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 accepted | eDrawings, 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
| Object | Why it is separate |
|---|---|
| Headboard | Changes with height and fabric |
| Base / frame | Changes with width and fabric |
| Legs, feet | Swapped for other legs, often in other materials |
| Mattress, topper, bedding | Shown or hidden |
| Drawers, storage, buttons, piping | Optional, or a different material |
Sofas and modular seating
| Object | Why it is separate |
|---|---|
| Each module (corner, 1-seat, 2-seat, chaise, end) | Combined in any order |
| Seat cushions, back cushions | Often a different fabric or fill |
| Armrests | Left, right, none, or another shape |
| Legs, plinth | Swapped 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
| Object | Why it is separate |
|---|---|
| Carcass (body) | Changes with width, height and finish |
| Fronts: each door and drawer front | Change finish independently; doors may open |
| Handles, knobs | Swapped by option, never stretched with the front |
| Worktop, top panel | Often another material |
| Plinth, legs, frame | Swapped by option |
| Internal shelves, rails, dividers | Shown 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
| Object | Why it is separate |
|---|---|
| Uprights, side panels | Change with height |
| Shelves | Change with width and depth, repeat per level |
| Brackets, connectors, back panels, braces | Optional or another material |
| Drawers, boxes, doors in a bay | Optional 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:
| name | shop_code | base_color | roughness | normal_map | bump_map |
|---|---|---|---|---|---|
| Fabric-A_03 | 100103 | #738C94 | 0.8 | ||
| Fabric-B_05 | 100205 | /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.