← back to Quadrille Showroom
furniture: art-direction fixes — concrete-grey Brutalist, warm-wood Transitional, visible walnut Traditional
0a7d7ab263d3ce9014392108195a9e0626ceffa9 · 2026-07-02 09:53:18 -0700 · Steve
- Brutalist recolored to raw béton-brut concrete grey (dark bases that read ~#8a8a86 on
camera under the bright showroom light) + board-form groove lines; no longer white foam
- Contemporary table now crisp white lacquer + steel blade legs (was warm oak)
- Transitional table warm honey-oak + soft rounded barrel-back upholstered chair, so it
reads clearly distinct from Contemporary (material + silhouette)
- Traditional chair reworked: matte no-env walnut frame + tall curved upholstered back +
crown rail so the walnut tone and curved back read from the default camera
- Added mattMat() + buildBoardFormLines() helpers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Files touched
Diff
commit 0a7d7ab263d3ce9014392108195a9e0626ceffa9
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Jul 2 09:53:18 2026 -0700
furniture: art-direction fixes — concrete-grey Brutalist, warm-wood Transitional, visible walnut Traditional
- Brutalist recolored to raw béton-brut concrete grey (dark bases that read ~#8a8a86 on
camera under the bright showroom light) + board-form groove lines; no longer white foam
- Contemporary table now crisp white lacquer + steel blade legs (was warm oak)
- Transitional table warm honey-oak + soft rounded barrel-back upholstered chair, so it
reads clearly distinct from Contemporary (material + silhouette)
- Traditional chair reworked: matte no-env walnut frame + tall curved upholstered back +
crown rail so the walnut tone and curved back read from the default camera
- Added mattMat() + buildBoardFormLines() helpers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
public/js/showroom.js | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/public/js/showroom.js b/public/js/showroom.js
index 3cf49c4..e97ace6 100644
--- a/public/js/showroom.js
+++ b/public/js/showroom.js
@@ -1003,6 +1003,12 @@ function fmat(color, rough, metal) {
return new THREE.MeshStandardMaterial({ color, roughness: rough == null ? 0.6 : rough, metalness: metal || 0.0, envMapIntensity: 0.3 });
}
+// Matte material with NO environment pickup — for dark woods (walnut) that otherwise wash
+// out to blonde because the bright showroom env floods a normal 0.3-envMap standard material.
+function mattMat(color, rough) {
+ return new THREE.MeshStandardMaterial({ color, roughness: rough == null ? 0.9 : rough, metalness: 0.0, envMapIntensity: 0.0 });
+}
+
// Local contact shadow parented to the furniture group (LOCAL coords) so teardown
// disposes it with the set. The map is the SHARED contact texture (__shared) — never disposed.
function furnitureShadow(parent, lx, lz, w, d, opacity) {
@@ -1099,11 +1105,12 @@ const FURNITURE_STYLES = {
traditional: {
label: 'Traditional',
buildTable(g) {
- const walnut = fmat(0x3a2712, 0.45, 0.0);
+ // Matte, no-env walnut so it reads warm brown instead of washing to blonde.
+ const walnut = mattMat(0x2e1808, 0.92);
const top = new THREE.Mesh(new THREE.BoxGeometry(1.06, 0.06, 0.70), walnut);
top.position.set(0, 0.74, 0); top.castShadow = true; top.receiveShadow = true; g.add(top);
// a subtle apron under the top for weight
- const apron = new THREE.Mesh(new THREE.BoxGeometry(0.96, 0.07, 0.60), fmat(0x2f1f0e, 0.5, 0.0));
+ const apron = new THREE.Mesh(new THREE.BoxGeometry(0.96, 0.07, 0.60), mattMat(0x241304, 0.92));
apron.position.set(0, 0.685, 0); apron.castShadow = true; g.add(apron);
[[-0.44, -0.28], [0.44, -0.28], [-0.44, 0.28], [0.44, 0.28]].forEach(([lx, lz]) =>
buildTurnedLeg(g, lx, lz, walnut, 0.72));
@@ -1112,9 +1119,9 @@ const FURNITURE_STYLES = {
buildChair(g) {
// Warm WALNUT frame + a tall curved upholstered back that both read clearly from the
// default camera (was reading as just a plain cream seat).
- // Dark walnut base — the bright showroom lifts it to a rich mid-walnut on camera
- // (a lighter base washes out to blonde oak and loses the "warm walnut" read).
- const walnut = fmat(0x30200f, 0.45, 0.0), damask = fmat(0xd8c49b, 0.8, 0.0);
+ // Matte, no-env walnut so it reads warm brown instead of washing to blonde under the
+ // bright showroom env; cream damask cushion sits proud so the walnut frames it.
+ const walnut = mattMat(0x2e1808, 0.92), damask = fmat(0xd8c49b, 0.8, 0.0);
const c = new THREE.Group(); c.position.set(0, 0, 0.70);
// walnut seat rail (frame) with the damask cushion sitting proud on top → walnut shows
const rail = new THREE.Mesh(new THREE.BoxGeometry(0.52, 0.09, 0.50), walnut);
← 646f4b9 auto-save: 2026-07-02T09:46:55 (1 files) — public/js/showroo
·
back to Quadrille Showroom
·
furniture FIX 1: onload = clean empty room + table+chair onl 6bdf2b5 →