Rubin vase ↔ faces
One unchanging image supports two figure-ground readings.
Janus Mosaics · Free Dual-Sided Images
This is the hook. Click the arrow to walk around the same 100 physical cubes: a perfect Space Invader on the front becomes a complete exact pattern on the back.
The labels are baked into the verified face renders. The button swaps between two different embedded images—no CSS back-face trick.
You saw two real faces of one physical object. Classic ambiguous images offer a useful comparison—but Janus Mosaics move the second image out of perception and onto the opposite stickers.
One unchanging image supports two figure-ground readings.
The same lines become two different animals when interpretation flips.
The reveal earned the explanation. Hold the Space Invader front constant and change only what we demand from the reverse side.
The front survives unchanged. But a separately designed heart conflicts with 20 local cube pairings, so the heart blueprint must be edited before the wall becomes exactly buildable.
You have already tried this construction at the top. Lock every front pixel, then compose the reverse from exact legal partners instead of forcing a second predetermined icon.
The solver does not invent random camouflage. It chooses exact reverse-side brush strokes from the legal freedom left by each fixed front block.
Each physical cube contributes one 3Ă—3 front brush and one 3Ă—3 back brush. Once the front is locked, every location still has a list of exact legal back partners.
Across the 70 two-color brush classes, 4,008 of 4,900 ordered front/back class pairs are exact under the most permissive opposite-ink relationship.
Checker, diagonal stripes, horizontal bands, vertical bands, and diamond rings all coexist with this exact Space Invader with zero target edits.
One sticker in every 3Ă—3 face is a fixed center. The front and back centers are welded opposite colors, so the back inherits a mirrored 1-in-9 lattice from the front.
Every cube contributes one forced center pair. The exact constructions above keep every center pixel in the background field, so the lattice is present mechanically but invisible as damage.
The independent-heart challenge is therefore not paying a basic center tax. Its 20 edits come from genuine local front/back incompatibilities.
“Exact” means complete 54-facelet cube states were constructed and independently validated—not merely that a browser thought the color counts looked possible.
| Construction | Target edits | Full states | Physical result | Status |
|---|---|---|---|---|
| Space Invader ↔ Heart | 0 front + 20 back | 100 / 100 | 0 / 1,800 deviations from final blueprint | EXACT AFTER BLUEPRINT NEGOTIATION |
| Space Invader ↔ Checker Field | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Diagonal Stripes | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Horizontal Bands | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Vertical Bands | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Diamond Rings | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
#janus-grids) — each cube verified against an exact feasibility oracle. Nothing here is a screen effect.