A QR code is transformed into a navigable 3D miniature city. Dark
modules become buildings, light modules become streets — under one
binding constraint.
Seen from directly above, the city is still a scannable QR code.Switch to Bird's eye and point a phone at the screen. It should
decode the text you typed.
The fertile constraint
A dark module must stay predominantly dark from above; a light module
predominantly light. Everything else is free. That single rule is what
makes the generation disciplined rather than arbitrary — and it is
directly falsifiable, which is rare for a TSCG instance.
Consequences
• Orthographic projection is mandatory — under perspective, off-centre buildings lean outward and their roofs stop covering their footprint
• Roof caps span the full grid pitch — bodies are inset by 0.002 to avoid z-fighting; the caps close the gap
• Chimney caps match the roof exactly — from above the cap is all you see of a chimney
• Signs, doors and windows are vertical — invisible from above, therefore unconstrained
Determinism
The same text always produces the same city. The seed is the city's
identity card. Successive SHA-256 application walks an ordered sequence
of distinct interpretations of one unchanged QR plan.
Stylesheets
A stylesheet is not a colour theme. Its rules block drives
geometry — heights, arch budget, fenestration density — so
switching one re-interprets the same seed into a different city.
Layout is a style channel.
V is exceptionally high because the model carries its own empirical
test: point a scanner at the Bird's-eye view and it either decodes or
it does not. F is lowest — flow exists (the scanner's reading path, the
explorer's traversal) but is not the system's centre of gravity.
M2 GenericConcepts Mobilized
14 concepts across 6 families.
Honest gap
Reed-Solomon error correction has no clean M2 representative
— m2:Redundancy does not exist in M2 v16.x. Either error
correction is a specialisation of m2:Code, or structural
redundancy is a genuine gap. Flagged, not resolved.
Interactive Controls
Auto walk
• Routes from the bottom-right corner to the top-left, turning at every wall
• The street network inside a QR is not connected — dozens of isolated pockets. What makes a route possible is the quiet zone, the margin the QR spec requires, which rings the whole code
• Ring cells cost more to traverse, so the walk crosses the city instead of skirting it
• Any movement key hands control back to you
Views
• Isometric1 — orthographic, oblique. Drag to orbit, scroll to zoom
• Bird's eye2 — snaps straight down. Tilt freely from there; the selector switches to Isometric on its own, and back when you return to top-down
• Walk3 — street level, eye height locked
• Fly4 — free altitude
Free movement (Walk / Fly)
• Click the canvas to capture the mouse, Esc to release
• WASD or arrows to move
• Shift to run
• Space / C for altitude (Fly only)
Zoom
• The wheel zooms in every view
• Isometric and Bird's eye scale the orthographic frustum — an orthographic camera ignores distance, so moving it would do nothing
• Walk and Fly narrow the field of view: the observer stays put
Generation
• Build city — encode the text and regenerate
• Grid — QR versions only: 21, 25, 29, 33, 37, 41, 45, 49. There is no 32 or 48
• InvertI — swap polarity. Built fabric becomes a labyrinth; QR decodability is deliberately lost
• Next seedN — SHA-256 of the current seed: same plan, new city
Verifying the claim
• Type a distinctive string, press Build
• Switch to Bird's eye
• Scan the screen with any phone — it should decode your text