#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.92, 0.95, 1.0> } camera { location <14, 10, -18> look_at <0, 4, 0> angle 38 } light_source { <40, 60, -40> color rgb <1, 1, 1> } light_source { <-20, 25, -10> color rgb <0.35, 0.4, 0.45> } #declare BrickTex = texture{ pigment{ // Base brick color with mortar lines mixed in via a function pattern function { min( abs(sin(x*3.14159*2.8)), abs(sin(z*3.14159*2.8)) ) } color_map{ [0.00 color rgb <0.88, 0.86, 0.83>] // mortar [0.06 color rgb <0.88, 0.86, 0.83>] [0.11 color rgb <0.62, 0.24, 0.18>] // brick [1.00 color rgb <0.62, 0.24, 0.18>] } } finish { diffuse 0.75 specular 0.08 roughness 0.05 } normal { // subtle bump for brick texture bumps 0.3 scale 0.25 } } #declare StoneTex = texture{ pigment{ color rgb <0.70, 0.72, 0.74> } finish { diffuse 0.8 specular 0.1 roughness 0.06 } normal { bumps 0.25 scale 0.3 } } #declare GlassTex = texture{ pigment{ color rgbt <0.55, 0.75, 0.95, 0.75> } finish { diffuse 0.05 specular 0.6 roughness 0.02 reflection 0.08 } } plane { y, 0 texture{ pigment{ checker color rgb <0.80, 0.83, 0.86> color rgb <0.74, 0.77, 0.80> scale 2 } finish { diffuse 0.9 specular 0.05 roughness 0.08 } } } #declare WindowCut = box { <-0.7, 1.2, -0.3>, <0.7, 2.4, 0.3> } #declare DoorCut = box { <-0.9, 0.0, -0.35>, <0.9, 2.6, 0.35> } #declare MainBuilding = difference{ // Main block box { <-4.5, 0, -3.0>, <4.5, 8.5, 3.0> } // Recessed entry box { <-1.4, 0.0, -3.05>, <1.4, 3.0, -1.9> } // Windows (front face) #local r=0; #while (r < 3) #local c=0; #while (c < 5) object{ WindowCut translate <(-3.2 + c*1.6), (3.2 + r*1.8), -3.05> } #local c=c+1; #end #local r=r+1; #end // Windows (right face) #local r2=0; #while (r2 < 3) #local c2=0; #while (c2 < 4) object{ WindowCut rotate <0, 90, 0> translate <4.55, (3.2 + r2*1.8), (-2.1 + c2*1.4)> } #local c2=c2+1; #end #local r2=r2+1; #end // Door opening in recessed entry object{ DoorCut translate <0, 0, -3.06> } } #declare SideWing = difference{ box { <-8.0, 0, -2.4>, <-4.6, 6.5, 2.4> } // Windows on front of wing #local rr=0; #while (rr < 3) #local cc=0; #while (cc < 2) object{ WindowCut scale <0.95, 0.95, 1> translate <(-7.2 + cc*1.7), (2.6 + rr*1.5), -2.45> } #local cc=cc+1; #end #local rr=rr+1; #end } #declare Tower = difference{ box { <2.7, 0, -2.2>, <6.5, 11.5, 2.2> } // Tall narrow windows #local k=0; #while (k < 5) object{ box { <-0.45, 1.0, -0.35>, <0.45, 3.2, 0.35> } translate <4.6, (1.8 + k*1.85), -2.25> } #local k=k+1; #end // Simple crenel notch at top #local n=0; #while (n < 6) box { <2.95 + n*0.55, 10.9, -2.25>, <3.25 + n*0.55, 11.7, -1.5> } #local n=n+1; #end } union{ object{ MainBuilding texture{ BrickTex } } object{ SideWing texture{ BrickTex } } object{ Tower texture{ BrickTex } } // Stone base trim box { <-8.05, 0, -3.05>, <6.55, 0.5, 3.05> texture{ StoneTex } } // Entry steps box { <-1.8, 0.0, -3.6>, <1.8, 0.25, -3.05> texture{ StoneTex } } box { <-1.5, 0.25, -3.45>, <1.5, 0.50, -3.05> texture{ StoneTex } } // Simple roof caps box { <-4.7, 8.5, -3.2>, <4.7, 8.9, 3.2> texture{ StoneTex } } box { <-8.2, 6.5, -2.6>, <-4.4, 6.85, 2.6> texture{ StoneTex } } box { <2.55, 11.5, -2.4>, <6.65, 11.9, 2.4> texture{ StoneTex } } } union{ // Window glass panes (front main) #local r3=0; #while (r3 < 3) #local c3=0; #while (c3 < 5) box{ <-0.62, 1.25, -3.02>, <0.62, 2.35, -2.98> translate <(-3.2 + c3*1.6), (3.2 + r3*1.8), 0> texture{ GlassTex } } #local c3=c3+1; #end #local r3=r3+1; #end // Windows right face (glass) #local r4=0; #while (r4 < 3) #local c4=0; #while (c4 < 4) box{ <-0.62, 1.25, -3.02>, <0.62, 2.35, -2.98> rotate <0, 90, 0> translate <4.52, (3.2 + r4*1.8), (-2.1 + c4*1.4)> texture{ GlassTex } } #local c4=c4+1; #end #local r4=r4+1; #end // Wing front windows (glass) #local r5=0; #while (r5 < 3) #local c5=0; #while (c5 < 2) box{ <-0.60, 1.25, -2.42>, <0.60, 2.28, -2.38> translate <(-7.2 + c5*1.7), (2.6 + r5*1.5), 0> texture{ GlassTex } } #local c5=c5+1; #end #local r5=r5+1; #end }