Alas, I wish I had thought of this. I made a replica of the cube on the cover of GEB here:<p><a href="https://cubehero.com/physibles/iamwil/shadowblock" rel="nofollow">https://cubehero.com/physibles/iamwil/shadowblock</a><p>It's actually not too hard to do with OpenSCAD or any other modeling tool that allows you to do intersections. So I've tried other three letter acronyms: <a href="https://cubehero.com/physibles/iamwil/shadowblock/print" rel="nofollow">https://cubehero.com/physibles/iamwil/shadowblock/print</a><p>For the QR Code Shadowblock in the OP, I wonder how he dealt with supporting all the structures within, but not all combinations of pixels on each face will work. Maybe he just played with it and rotated the QR codes to find a combination that will work.<p>I have thought about a QR Code Quine, where the QU Code contains an OpenSCAD file that is a model of the QR Code. However, I wasn't sure exactly how to tackle that, since the QR Code decoder is non-trivial.
Just in case anyone doesn't get it, it's a reference to the cover for Hofstadter's "Godel, Escher, Bach:"<p><a href="http://en.wikipedia.org/wiki/File:GEBcover.jpg" rel="nofollow">http://en.wikipedia.org/wiki/File:GEBcover.jpg</a>
The only part of this that would be difficult is ensuring that there is no single dark pixel which is surrounded by all white pixels. As the dark pixel represents material and the white pixel is empty space, you'll need to use thin supporting structures within the QR margin of error otherwise there wouldn't be anything to hold the material in place. Do a Google Image search for "letter stencil" for what I mean by thin supporting structures.<p>That small caveat aside, it's super easy to construct: start with a solid block of material, take QR code 1, and from one face carve out the white pixels all the way through, keeping any thin connector pieces as required. Rotate to another face, do the same for QR code 2, rotate again, and do the last face for QR code 3. The remaining structure is what you 3D print.
This reminds me of a thing I keep not having the time to design and 3D print, so I'm going to say it here so someone else can make it for me.<p>Platonic solid Matryoshka "dolls".<p>Essentially, I would like to have a sphere (admittedly not a Platonic solid) which splits in half to reveal an icosahedron which splits in half to reveal a dodecahedron and so on through octahedron, cube and tetrahedron. Making them fit nicely one inside the other.
<p><pre><code> Note that QR codes cannot be read in mirror image, so only
3 of the 6 possible cube orientations cast a readable
shadow.
</code></pre>
Well, now I can't stop thinking about QR code rotations. How big is the subset of QR codes that are valid in more than one orientation? (some combination of rotated, flipped, or mirrored). Treating the marks for position/alignment/etc as a separate layer and flip/rotate/mirror the rest of the code.<p>What about the different sizes of code? Can it only be done with, say Version 4 and not Version 3 codes?
Can someone help explain how exactly this works? It casts a shadow that is a valid QR code? How does it cast a shadow? On what does it cast a shadow?<p>It looks awesome and someone clearly worked incredibly hard on it. I just want to understand it better.
It looks like this is currently built for an infinitely distant light source. The sun might work, but you'd need mirrors to get the 3-shadow effect.<p>Fortunately, it should be relatively easy to tweak the shape for light sources at various distances. (though the easy way won't yield a cube.)
<p><pre><code> Note that QR codes cannot be read in mirror image
</code></pre>
It should be simple to make a QR reader that also reads the image flipped horizontally and/or vertically. That way reflections of QR codes could be read too. Maybe some readers already do this. The use case ould be quite small though.