// Evening old-town cityscape with conical spot lights (ambient dusk) #version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } #include "colors.inc" // -------------------- Sky / evening background -------------------- background { color rgb <0.10, 0.12, 0.18> } // deep evening blue fog { distance 85 color rgb <0.10, 0.12, 0.18> fog_type 2 fog_alt 2.2 turbulence 0.15 } // -------------------- Camera -------------------- camera { location <18, 11.2, -22> look_at <0, 4.2, 0> angle 42 } // -------------------- Lights (conical, warm, soft-ish shadows) -------------------- // Low ambient sky fill (shadowless, cool) light_source { <0, 70, -30> color rgb <0.10, 0.14, 0.20> shadowless } // Soft “moon/sky” key (very dim, broad, cool) light_source { <55, 65, -40> color rgb <0.22, 0.26, 0.34>*0.7 area_light <10,0,0>, <0,0,10>, 4, 4 adaptive 1 jitter } // Warm conical street/spot lights (visible pools) #macro ConeLight(Pos, Target, Col, Radius, Fall, Tight) light_source { Pos color Col spotlight point_at Target radius Radius falloff Fall tightness Tight } #end // -------------------- Simple finishes (no textures) -------------------- #declare F_Matte = finish { diffuse 0.88 specular 0.05 roughness 0.10 ambient 0.02 }; #declare F_Roof = finish { diffuse 0.82 specular 0.08 roughness 0.07 ambient 0.02 }; #declare F_Street = finish { diffuse 0.92 specular 0.03 roughness 0.12 ambient 0.01 }; #declare F_Metal = finish { diffuse 0.55 specular 0.20 roughness 0.05 ambient 0.01 }; #declare WarmLamp = rgb <1.00, 0.80, 0.55>*1.2; // -------------------- Ground + street -------------------- plane { y, 0 pigment { color rgb <0.30, 0.32, 0.34> } // darker ground for evening finish { diffuse 0.95 specular 0.02 roughness 0.14 ambient 0.01 } } #declare StreetW = 2.8; box { <-20, 0.001, -StreetW>, <20, 0.02, StreetW> pigment { color rgb <0.12, 0.12, 0.14> } finish { F_Street } } // -------------------- Modular buildings -------------------- #macro House(W, D, H, RoofH, WallCol, RoofCol) union { box { <-W/2, 0, -D/2>, pigment { color WallCol } finish { F_Matte } } // pitched roof prism along Z prism { linear_sweep linear_spline -D/2, D/2, 3, <-W/2, H>, < 0, H+RoofH>, < W/2, H> pigment { color RoofCol } finish { F_Roof } } } #end #macro Tower(R, H, CapH, ColWall, ColCap) union { cylinder { <0,0,0>, <0,H,0>, R pigment { color ColWall } finish { F_Matte } } cone { <0,H,0>, R*1.05, <0,H+CapH,0>, 0 pigment { color ColCap } finish { F_Roof } } } #end // -------------------- Palette (slightly muted for dusk) -------------------- #declare RoofRed = rgb <0.40, 0.14, 0.13>; #declare RoofBrown = rgb <0.30, 0.18, 0.12>; #declare WallA = rgb <0.62, 0.60, 0.56>; #declare WallB = rgb <0.56, 0.58, 0.55>; #declare WallC = rgb <0.50, 0.50, 0.50>; #declare WallD = rgb <0.60, 0.54, 0.48>; // -------------------- Town block layout -------------------- // Row 1 (front) object { House(3.6, 2.8, 3.2, 1.4, WallA, RoofRed) translate <-8.4,0,-6.5> } object { House(3.0, 3.0, 3.8, 1.6, WallB, RoofBrown) translate <-4.2,0,-6.7> } object { House(4.0, 3.2, 3.5, 1.5, WallD, RoofRed) translate < 0.0,0,-6.6> } object { House(3.2, 2.9, 4.2, 1.7, WallC, RoofBrown) translate < 4.3,0,-6.7> } object { House(3.8, 3.1, 3.1, 1.3, WallA, RoofRed) translate < 8.5,0,-6.6> } // Row 2 object { House(3.4, 3.0, 4.0, 1.5, WallB, RoofRed) translate <-8.5,0,-2.5> rotate <0,8,0> } object { House(3.9, 3.3, 4.6, 1.8, WallA, RoofBrown) translate <-4.3,0,-2.4> rotate <0,-6,0> } object { House(4.2, 3.5, 4.3, 1.7, WallD, RoofRed) translate < 0.2,0,-2.3> rotate <0,4,0> } object { House(3.2, 3.0, 4.8, 1.9, WallC, RoofBrown) translate < 4.4,0,-2.5> rotate <0,-7,0> } object { House(3.6, 3.2, 4.1, 1.6, WallB, RoofRed) translate < 8.6,0,-2.4> rotate <0,6,0> } // Row 3 (back, denser) object { House(3.2, 3.1, 5.0, 2.0, WallC, RoofRed) translate <-8.6,0, 1.6> rotate <0,-8,0> } object { House(3.8, 3.6, 5.3, 2.1, WallA, RoofBrown) translate <-4.4,0, 1.5> rotate <0,5,0> } object { House(4.5, 3.8, 5.6, 2.2, WallD, RoofRed) translate < 0.1,0, 1.7> rotate <0,-4,0> } object { House(3.4, 3.2, 5.1, 2.0, WallB, RoofBrown) translate < 4.4,0, 1.6> rotate <0,7,0> } object { House(3.9, 3.7, 5.2, 2.1, WallA, RoofRed) translate < 8.7,0, 1.5> rotate <0,-6,0> } // Old-town towers object { Tower(0.65, 7.6, 2.2, rgb<0.56,0.55,0.54>, RoofRed) translate <-2.6,0,-4.5> } object { Tower(0.55, 6.4, 2.0, rgb<0.52,0.52,0.52>, RoofBrown) translate < 6.7,0,-1.0> } // -------------------- Simple lamp posts to motivate conical lights -------------------- #macro LampPost(P) union{ cylinder { P, P+<0,1.55,0>, 0.06 pigment{color rgb<0.10,0.10,0.12>} finish{F_Metal} } cylinder { P+<0,1.55,0>, P+<0,1.80,0>, 0.04 pigment{color rgb<0.10,0.10,0.12>} finish{F_Metal} } sphere { P+<0,1.86,0>, 0.10 pigment{color rgb<0.18,0.16,0.14>} finish{ diffuse 0.6 specular 0.15 roughness 0.06 ambient 0.10 } } } #end #declare L1 = <-10.5, 0, 0.0>; #declare L2 = <-4.5, 0, 0.0>; #declare L3 = < 1.5, 0, 0.0>; #declare L4 = < 7.5, 0, 0.0>; object { LampPost(L1) } object { LampPost(L2) } object { LampPost(L3) } object { LampPost(L4) } // Conical lights aimed downward with warm color ConeLight(L1+<0,1.9,0>, L1+<0,0.0,0>, WarmLamp, 18, 32, 18) ConeLight(L2+<0,1.9,0>, L2+<0,0.0,0>, WarmLamp, 18, 32, 18) ConeLight(L3+<0,1.9,0>, L3+<0,0.0,0>, WarmLamp, 18, 32, 18) ConeLight(L4+<0,1.9,0>, L4+<0,0.0,0>, WarmLamp, 18, 32, 18) // A couple of façade spotlights (conical) to bring out “old town” volumes ConeLight(<-14, 6.5, -12>, <-6.0, 2.8, -6.5>, rgb<1.0,0.82,0.60>*0.9, 16, 26, 20) ConeLight(< 14, 7.0, -12>, < 6.0, 3.0, -6.5>, rgb<1.0,0.82,0.60>*0.85, 16, 26, 20) // -------------------- Distant hill + castle silhouette -------------------- #declare HillCol = rgb <0.18, 0.22, 0.20>; difference { sphere { <0, -30, 28>, 40 } plane { y, 0 inverse } pigment { color HillCol } finish { diffuse 0.95 specular 0.01 roughness 0.18 ambient 0.01 } } // Castle (darker, evening silhouette) #declare CastleWall = rgb <0.28, 0.29, 0.31>; #declare CastleRoof = rgb <0.16, 0.16, 0.18>; union { box { <-2.4, 0, -1.8>, < 2.4, 4.8, 1.8> pigment { color CastleWall } finish { F_Matte } } box { <-5.0, 0, -1.2>, <-2.6, 3.2, 1.2> pigment { color CastleWall } finish { F_Matte } } box { < 2.6, 0, -1.2>, < 5.0, 3.2, 1.2> pigment { color CastleWall } finish { F_Matte } } object { Tower(0.7, 5.6, 2.0, CastleWall, CastleRoof) translate <-4.7,0,-1.1> } object { Tower(0.7, 5.6, 2.0, CastleWall, CastleRoof) translate <-4.7,0, 1.1> } object { Tower(0.7, 5.6, 2.0, CastleWall, CastleRoof) translate < 4.7,0,-1.1> } object { Tower(0.7, 5.6, 2.0, CastleWall, CastleRoof) translate < 4.7,0, 1.1> } prism { linear_sweep linear_spline -1.8, 1.8, 3, <-2.4, 4.8>, < 0.0, 6.3>, < 2.4, 4.8> pigment { color CastleRoof } finish { F_Roof } } scale <1.2,1.2,1.2> rotate <0, 12, 0> translate <0, 0.0, 22.5> } // Slight rim on the castle (very dim warm to separate from hill) ConeLight(<-6, 14, 10>, <0, 4.5, 22.5>, rgb<1.0,0.75,0.55>*0.25, 10, 18, 8)