Escher Relativity

,

Escher’s “Relativity” etching dates back to 1953, and has fascinated me for many years. Unlike many of his pictures, the image represents a scene that is completely valid structurally - it is not an ‘impossible shape’, although the perspective is quite contorted.

Looking on the internet finds several different attempts to model this in three dimensions. Since the image can be seen from three different points of view, the steps have equal height and depth, so that the whole thing can be seen as a three-dimensional grid of cubes. It is convenient to make the model with a unit-cell equal to one step.

Here is Escher’s original print for comparison:

There are some tricky aspects of the model that have to be worked out from the graphic. The bottom two-thirds of the picture can be worked out by counting steps up and down, and so can the top third, but the two sections are not connected. There is a band a third of the way down that has to be scaled in some way, and some models on the internet don’t appear to have allowed enough space for this.

The wall with the open door appears to be co-planar with the wall below (with the stairs to the basement), but actually it is not. In other terms, the stair with the man with a bottle on a tray is narrower than the stairs below it, by two cell-widths.

The ‘bridge of sighs’ has its railings coming out from the sides. This is needed, because the bridge is only three cells wide, but also because some of the banisters continue through to form the railings on the balcony beyond. Escher must have chuckled to himself as he added this detail.

Anyway, here is my model for inspection, and I would appreciate any comments. I have not attempted to create the people, nor the plants and tables, but I did do all the railings, which are key to the design. If anyone has a good parameterised posable human model that would allow for creating people going up and down stairs and hanging onto railings, I would like to see it.

Escher5.2.3dm (16.6 MB)

Escher5.2int.gh (68.3 KB)

I actually did all the object creation in a series of spreadsheets, and imported them using a Lunchbox component, but to avoid the need for this plugin the above definition has internalized all the data. I used the Human plugin for display positioning purposes, but I think the definition should work just fine even if you don’t have it.

The .STL file appears to be too big to upload. For 3D printing purposes, the only change I needed to make was to fatten up the railings, since the fragility of these is beyond my printer. There are sliders for this, and also to scale it up to 4mm per step, the limits of my printer.

Finally, for completeness, here is a picture from 1960 taken by my father in Cambridge at a conference on crystallography. Escher was an amazing man! He certainly liked railings!

Bob

Hi @bob.h.mackay

Thanks for posting your marvelous model of Escher’s work.
I’d like to add some figures to it when I have time. Since you’re asking the only slight difference is the balcony on the upper right but I think you altered that to make 3d printing possible?

Great job on the model by one of my favorite artists.
RM

Yes, i did not do a good job on that balcony. It is unusual, in that I believe that the uprights are more closely spaced than the normal grid spacing. There should be 7 uprights, but the window is probably only 3 cells across.

There are other errors! Also in your screenshot, on the left, is a stair with a banister that is supposed to have two further rails below the handrail. In Escher’s print, at the bottom-centre, the man is coming up a flight of four stairs, while the banister count on his left clearly indicates at least a further four steps down.

There is also a secret staircase in the top corridor, and I added a wall and door to anchor the other end of the ‘bridge-of-sighs’. Some of the newel posts were supposed to be capped with a pyramid, not a sphere. I invented a new post behind the bridge-of-sighs. Some of the doors could be better defined. At some point, enough is enough!

Indeed, I was worried about the needs of 3d printing. This print took well over 24 hours to complete, and I then took a further hour or two removing supports. The area of your balcony, and behind it, is particularly cluttered with supports and I had a hard time removing everything - there were a couple of broken balustres! I counted that as a complete success, however, since I had never expected the printer to do even as well as it did.

In some ways, it is the model in grasshopper that I was interested in, since you can view it from all directions. The print is just a bonus.

If you are actually interested in making changes, once I had the basic model in place, I found the cursor mechanism I made (at the top of the definition) to be very useful in positioning things. My working definition has all the data in separate .csv files. If you would find that easier, I can publish that too, along with the data files, although these are all equivalent to the internalized ‘text’ components. You would then need to install Lunchbox, for its Read CSV component, or write your own csv parsing.

Best wishes,

Bob

Hi @bob.h.mackay

Wow it looks cool with the supports too. Looks Like trees growing into an abandoned building.

Too funny, I figured you had your reasons for the balcony. Great work and wondering where you’re going to take it from here. Are you going to detail paint it? It’s great the way it is, just wondering. Must be cool to look into the real model I wonder what children would think?

I don’t have a 3d printer I’m more interested in animating figures into your model, hopefully when I have some time.

RM

I’m probably not going to do anything further with it - I just wanted to get my mind round the geometry of the thing.

That said, I did have an idea about animation. If you actually had a posable figure, and were able to make up, say, 10 poses to represent a complete cycle of climbing two stairs (frames 0 to 9), then if you were to take the coordinates of the top and bottom of the stairs and interpolate (number of steps * 5) into that sequence, then (x,y,z) would give you the position of the figure and ((z *10) mod 20) / 2 would give you a frame number. e.g. if the figure is at z=15.6, frame number 8 should be displayed.

More fancy, you can detect whether you are on the flat by whether z is an integer and x is not. Then you need a different set of frames for flat walking.

i.e the position and pose of the figure is completely determined by (x,y,z) and a vector from the start to the end of the path.

I’ve never tried it myself though… as you can probably tell….and I don’t have a posable figure!

Hi @bob.h.mackay

Thanks for the hints, though I wouldn’t do this in Rhino but would use blender. I have many rigged skeletons.

However I’m getting errors on your railings they won’t come into blender using @nathanletwory blender plugin. I’m going to try manual export using obj format.

Do you mind if I mention the bug to Nathan in a separate thread using your file?

Edit:
Never mind I got his exporter working I had to scale the file to feet in Rhino first and then the railings came in perfectly. Maybe something to do with opening a mm scale file into an inch file in Blender.
RM

@bob.h.mackay
Fantastic!
I “worked” on the same many many years ago, but gave up, it was too cumbersome.
Good you were not that lazy :wink:
And also good to have a tangible object.

@Joshua_Kennedy :
Astonishing how well boolean union in V9 works on this model!
Especially with the merge face option.
But it makes 5 non-manifold edges.
Which can be healed by explode + join.
It would be good to tune this up.

Very nice!

Have you seen this recent article?

I have not installed Rhino 9 yet, but in 8 the Solid Union fails completely. Luckily it is not required to get the model displayed or printed, since the slicer seems to handle it for itself. Good to know that 9 is better - the boolean operations have always given me trouble. I did try using Shrink-Wrap, which worked perfectly, but its output is a mesh… with many faces!

That is a fascinating paper, although I await an actual implementation that I could play with.

You might be interested in Lionel and Roger Penrose’s original paper, describing the impossible triangle, which I have on my web site at Bob Mackay - Penrose Pattern (click on Next to get past the initial Penrose pattern printout).

That said, the Esher Relativity print is NOT an impossible object. There is a very nice analysis of the picture by Scott McDaniel at #25: Relativity by M. C. Escher which includes an analysis of the lighting effects, which are applied to all three views at once.

This one is not either:

3 Balken krumm 4.3dm (135.0 KB)
Modeled and milled in aluminum 27 years ago… printing was not available back then.
Now I’m calm, I have hijacked your thread enough.

When I clicked on your model I was expecting the normal broken-open triangle made into Penrose’s shape by looking from the right place, but this monster is a thing of beauty! Wonderful stuff! I wonder what my printer will do to it?

It’s excellent !!

What a wonderful project of yours!

Thank you for sharing.

Very nice Escher projects guys :slightly_smiling_face:

How did the illusion work as real object?
Maybe you could add a perspective transformation to the geometry to get off the parallel projection?

3 Balken Perspective jM.3dm (347.0 KB)

It works nicely, but as you suggest, it looks best at arms length, where the perspective effects are reduced. A very unexpected object!

Very very nice!

What jumped at me is the lack absence of the rounded stairs:

Indeed. And the left-hand side of the arch behind it is also supposed to be rounded. Sigh!

Let us not devolve into rants about filleting in Rhino :grinning_face_with_smiling_eyes:

Just an amazing 3D work of art, thanks very much for posting it! I think I will use this as a display board for my ninja-rat army at my next wargames tournament in 2026. (assuming I can get it printed large enough).

This is the best thing I’ve seen on this forum for ages! Amazing work and thank you for sharing.

The 3d Printer communities an Thingiverse, Printables and MakerWorld will go crazy for a model file of this.