[object Object]

← back to Designer Wallcoverings

Fix room-setting pattern scale: drive tiling by real repeat, not fixed-3

d4a51d6f045827eb41d53429b09d506b6fdca718 · 2026-06-23 13:18:26 -0700 · Steve

Steve: rooms must reflect each pattern's repeat or the scale is wrong. Was
hardcoded 3 tiles across regardless of repeat, so a 60in large-scale repeat and
a 10in small repeat rendered at identical visual scale. Now anchored to the
approved Ebano look (19.7in repeat == 3 tiles): tiles_across = 3*(19.7/repeat_in),
clamped 1..8. Large repeat -> fewer/bigger motifs, small repeat -> more/denser.
Anchor bakes in the coordonne-swatch repeats-per-image factor so it never
multiplies to mush. Regeneration of existing 557 rooms required to apply.

Files touched

Diff

commit d4a51d6f045827eb41d53429b09d506b6fdca718
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 23 13:18:26 2026 -0700

    Fix room-setting pattern scale: drive tiling by real repeat, not fixed-3
    
    Steve: rooms must reflect each pattern's repeat or the scale is wrong. Was
    hardcoded 3 tiles across regardless of repeat, so a 60in large-scale repeat and
    a 10in small repeat rendered at identical visual scale. Now anchored to the
    approved Ebano look (19.7in repeat == 3 tiles): tiles_across = 3*(19.7/repeat_in),
    clamped 1..8. Large repeat -> fewer/bigger motifs, small repeat -> more/denser.
    Anchor bakes in the coordonne-swatch repeats-per-image factor so it never
    multiplies to mush. Regeneration of existing 557 rooms required to apply.
---
 shopify/scripts/build-room-composite.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/shopify/scripts/build-room-composite.py b/shopify/scripts/build-room-composite.py
index 113c94e4..f8be6116 100644
--- a/shopify/scripts/build-room-composite.py
+++ b/shopify/scripts/build-room-composite.py
@@ -22,14 +22,18 @@ BW_L, BW_R = 256, 768
 BW_T, BW_B = 160, 720
 MOLD = 14  # white molding frame thickness around the pattern
 
-# pattern tiled on the wall. NOTE: Tres Tintas swatches are "repeated-patterns"
-# previews that already contain several motif repeats, so we tile only ~3 across
-# (the proven-good look from the approved pilot) — NOT the physical repeat count,
-# which would multiply an already-repeated image into mush.
+# pattern tiled on the wall, scaled by the REAL pattern repeat so the wall reads
+# at true physical scale (a large 60" repeat shows ~1 big motif; a small 10"
+# repeat shows ~6). Anchored to the approved Ebano look: 19.7" repeat == 3 tiles
+# across. tiles_across = 3 * (19.7 / repeat_in). This bakes in the "swatch already
+# contains a few repeats" factor via the anchor, so we never multiply to mush.
+# Clamped to a sane band so odd/missing repeats can't blow up the scale.
+ANCHOR_REPEAT_IN, ANCHOR_TILES = 19.7, 3.0
 pat = Image.open(PATTERN).convert("RGB")
 inner_l, inner_t = BW_L + MOLD, BW_T + MOLD
 inner_w, inner_h = (BW_R - BW_L) - 2 * MOLD, (BW_B - BW_T) - 2 * MOLD
-repeats_across = 3.0
+repeats_across = ANCHOR_TILES * (ANCHOR_REPEAT_IN / max(REPEAT_IN, 4.0))
+repeats_across = max(1.0, min(8.0, repeats_across))   # clamp 1..8 across
 tile_px = max(24, int(inner_w / repeats_across))
 pat_t = pat.resize((tile_px, tile_px))
 wall = Image.new("RGB", (inner_w, inner_h))

← a2ad8809 collection hero pipeline: heuristic-shortlist + Gemini visio  ·  back to Designer Wallcoverings  ·  Graft native-grid infinite scroll onto LIVE theme (newwall-i ffd94410 →