“Superduperperspective”, by Patrick Hughes, Birmingham Art Gallery (left), The geometry (right).
In this notebook we build a 3D art work using this idea of reverse prospective. The art derived is shown. We employ a set of photographs that I took in San Miguel de Allende of three front doors and a set of street scenes. The result is shown below and theconstruction method is described below. The program was inspired by “Superduperperspective”, by Patrick Hughes, Birmingham Art Galler.
normal 3D perceptive​
Build the hexahedon, i . e ., a polyhedron having six plane faces, for the base plates for the 3D art construction and the 3 frustums needed.
Flat base plate for the four doors:
In[]:=
pl01=Hexahedron[{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{0,0},{1,0},{1,1},{0,1}}];
In[]:=
Graphics3D[{pl01},ViewPoint{Pi,Pi/2,2}]
Out[]=
Graphics3DTexture
,pl01
In[]:=
hl=Table[Hexahedron[TranslationTransform[{12i,0,0}]/@{{0,0,0},{9,0,0},{9,9,0},{0,9,0},{3,3,6},{6,3,6},{6,6,6},{3,6,6}}],{i,1,3}]
Out[]=
{Hexahedron[{{12,0,0},{21,0,0},{21,9,0},{12,9,0},{15,3,6},{18,3,6},{18,6,6},{15,6,6}}],Hexahedron[{{24,0,0},{33,0,0},{33,9,0},{24,9,0},{27,3,6},{30,3,6},{30,6,6},{27,6,6}}],Hexahedron[{{36,0,0},{45,0,0},{45,9,0},{36,9,0},{39,3,6},{42,3,6},{42,6,6},{39,6,6}}]}
In[]:=
Graphics3D[{EdgeForm[Directive[Thin,Gray]],FaceForm[Opacity[0.99]],hl},BoxedFalse]
Out[]=
In[]:=
hl01=Hexahedron[TranslationTransform[{12,0,0}]/@{{0,0,0},{9,0,0},{9,9,0},{0,9,0},{3,3,6},{6,3,6},{6,6,6},{3,6,6}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{.33,.33},{.66,.33},{.66,.66},{.33,.66}}];
In[]:=
hl02=Hexahedron[TranslationTransform[{12*2,0,0}]/@{{0,0,0},{9,0,0},{9,9,0},{0,9,0},{3,3,6},{6,3,6},{6,6,6},{3,6,6}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{.33,.33},{.66,.33},{.66,.66},{.33,.66}}];
In[]:=
hl03=Hexahedron[TranslationTransform[{12*3,0,0}]/@{{0,0,0},{9,0,0},{9,9,0},{0,9,0},{3,3,6},{6,3,6},{6,6,6},{3,6,6}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{.33,.33},{.66,.33},{.66,.66},{.33,.66}}];
In[]:=
Graphics3D[{EdgeForm[Directive[Thin,Gray]],FaceForm[Opacity[0.99]],{hl01,hl02,hl03}},BoxedFalse];
Pys=Graphics3DTexture
,hl01,Texture
,hl02,Texture
,hl03,BoxedFalse;
In[]:=
pl300=Hexahedron[TranslationTransform[{0+9,0,0}]/@{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{0,0},{1,0},{1,1},{0,1}}];
In[]:=
pl301=Hexahedron[TranslationTransform[{12+9,0,0}]/@{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{0,0},{1,0},{1,1},{0,1}}];
In[]:=
pl302=Hexahedron[TranslationTransform[{12*2+9,0,0}]/@{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{0,0},{1,0},{1,1},{0,1}}];
In[]:=
pl303=Hexahedron[TranslationTransform[{12*3+9,0,0}]/@{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}},VertexTextureCoordinates{{0,0},{1,0},{1,1},{0,1},{0,0},{1,0},{1,1},{0,1}}];
Flts=Graphics3DTexture
,pl300,Texture
,pl301,Texture
,pl302,Texture
,pl303;
Botohs=(*Manipulate[*)graphics3d=Graphics3DTexture
,hl01,Texture
,hl02,Texture
,hl03,Texture
,pl300,Texture
,pl301,Texture
,pl302,Texture
,pl303,BoxedTrue,ViewVertical{0,0,1},ViewPoint{0,0,Infinity}
Out[]=
The above 3D reverse prospective and be moved with a left click of a mouse.
In[]:=
pl3=Table[Hexahedron[TranslationTransform[{12i+9,0,0}]/@{{0,0,0},{3,0,0},{3,9,0},{0,9,0},{0,0,0.1},{3,0,0.1},{3,9,0.1},{0,9,0.1}}],{i,0,3}];
In[]:=
Graphics3D[{EdgeForm[Directive[Thin,Gray]],FaceForm[Opacity[0.99]],{hl,pl3}},BoxedFalse];
https://mathematica.stackexchange.com/questions/3759/autorotating-3d-plots
In[]:=
autoRotate[graphics3d,30];
In[]:=
rotateMeHarder1[g_,vertical_,viewpoint0_,center_List:{0,0,0},nframes_Integer:15,opts:OptionsPattern[]]:=Module[{grlist},grlist=Table[Show[g,ViewVertical->vertical,ViewVector->{RotationMatrix[2Pi/nframesi,vertical].(viewpoint0-center)+center,center},SphericalRegion->True,opts],{i,0,nframes-1}]]

References

https://www.patrickhughes.co.uk/​
​https://www.patrickhughes.co.uk/artwork-will-blow-your-mind.html​
​https://www.youtube.com/watch?v=qBfNJ3-xYwg​
​https://www.youtube.com/watch?v=HM76hK3N8Gg
​https://www.youtube.com/watch?v=cDGlprrEPv4​
​https://www.youtube.com/watch?v=VLYPW_tVjjM
​https://www.youtube.com/watch?v=HM76hK3N8Gg

CITE THIS NOTEBOOK

3D art construction process for reverse prospective​
by Gilmer Allen Gary​
Wolfram Community, STAFF PICKS, July 8, 2025
​https://community.wolfram.com/groups/-/m/t/3494801