// Warm lighthouse vignette inspired by the reference image (corrected) #version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.10, 0.30, 0.34> } // teal night // ------------------------------------------------------------ // Camera // ------------------------------------------------------------ camera { location <0, 6.0, -18> look_at <0, 4.2, 0> angle 40 } // ------------------------------------------------------------ // Lights (warm, soft shadows) // ------------------------------------------------------------ light_source { <18, 18, -20> color rgb <1.00, 0.88, 0.72>*1.0 area_light <4,0,0>, <0,0,4>, 6, 6 adaptive 1 jitter } light_source { <-10, 10, -10> color rgb <1.00, 0.80, 0.62>*0.45 area_light <3,0,0>, <0,0,3>, 5, 5 adaptive 1 jitter } // A subtle cool fill to keep teal atmosphere light_source { <0, 12, -6> color rgb <0.60, 0.85, 1.00>*0.15 } // ------------------------------------------------------------ // Simple materials (no textures, fast) // ------------------------------------------------------------ #declare Pigment_Cliff = pigment { color rgb <0.02, 0.03, 0.05> } #declare Pigment_White = pigment { color rgb <0.92, 0.92, 0.90> } #declare Pigment_Dark = pigment { color rgb <0.06, 0.08, 0.10> } #declare Finish_Matte = finish { diffuse 0.9 ambient 0.0 specular 0.05 roughness 0.1 } #declare Finish_Soft = finish { diffuse 0.85 ambient 0.0 specular 0.10 roughness 0.08 } // ------------------------------------------------------------ // Ground haze plane (subtle) // ------------------------------------------------------------ plane { y, 0 pigment { color rgbt <0.07, 0.20, 0.22, 0.85> } finish { ambient 0 diffuse 0 } } // ------------------------------------------------------------ // Cliff / platform (stylized silhouette) // ------------------------------------------------------------ #declare Cliff = union { // Top platform box { <-6, 0.0, -2>, <6, 0.6, 2> } // Main cliff mass (simple stepped shapes) box { <-5.5, -2.5, -1.8>, <5.0, 0.0, 1.8> } box { <-4.5, -5.2, -1.5>, <3.8, -2.5, 1.5> } box { <-3.5, -7.2, -1.2>, <2.8, -5.2, 1.2> } // A slight overhang on the right (like the reference) box { <2.0, -2.2, -1.6>, <6.2, -0.2, 1.6> } box { <3.0, -4.4, -1.2>, <6.0, -2.2, 1.2> } pigment { Pigment_Cliff } finish { Finish_Matte } translate <0, 1.0, 0> } object { Cliff } // ------------------------------------------------------------ // Lighthouse (precisely stacked parts) // ------------------------------------------------------------ #declare BaseY = 1.6; // platform top is y=0.6 then translated +1.0 => 1.6 #declare TowerH = 7.2; #declare TowerR0 = 1.10; #declare TowerR1 = 0.75; #declare LightY = BaseY + TowerH; // top of tower union { // Tower body (tapered) cone { <0, BaseY, 0>, TowerR0 <0, BaseY + TowerH, 0>, TowerR1 } // Door (simple dark inset panel) box { <-0.22, BaseY+0.55, -1.001>, <0.22, BaseY+1.35, -0.65> pigment { Pigment_Dark } finish { Finish_Matte } } // Lantern room base ring cylinder { <0, LightY-0.25, 0>, <0, LightY+0.10, 0>, 0.98 } // Lantern glass frame (dark ring) difference { cylinder { <0, LightY+0.10, 0>, <0, LightY+0.85, 0>, 0.85 } cylinder { <0, LightY+0.12, 0>, <0, LightY+0.83, 0>, 0.78 } pigment { Pigment_Dark } finish { Finish_Soft } } // Inner light core (simple "glow" via ambient) cylinder { <0, LightY+0.18, 0>, <0, LightY+0.78, 0>, 0.70 pigment { color rgb <1.00, 0.96, 0.82>*1.4 } finish { diffuse 0.2 ambient 1.0 specular 0 } no_shadow } // Roof cap cone { <0, LightY+0.85, 0>, 0.95, <0, LightY+1.35, 0>, 0.10 } pigment { Pigment_White } finish { Finish_Soft } } // ------------------------------------------------------------ // Lighthouse light beam (warm wedge) // ------------------------------------------------------------ #declare BeamLen = 20; #declare BeamW1 = 7.0; #declare BeamH1 = 4.2; mesh { triangle { <0,0,0>, , } triangle { <0,0,0>, , } triangle { <0,0,0>, , } triangle { <0,0,0>, , } // close far end triangle { , , } triangle { , , } pigment { color rgbt <1.00, 0.95, 0.85, 0.78> } finish { diffuse 0.15 ambient 0.6 specular 0 roughness 0.2 } no_shadow // Position at lantern height, aim to the right translate <0, LightY+0.45, 0> rotate <0, -8, 0> } // ------------------------------------------------------------ // Minimal silhouette figures (warm story vibe) // ------------------------------------------------------------ #macro Person(Pos, Scale, Col) union { cylinder { <0,0,0>, <0,1.2,0>, 0.22 } // torso sphere { <0,1.45,0>, 0.28 } // head cylinder { <-0.10,0,0>, <-0.10,-0.65,0>, 0.10 } // leg cylinder { < 0.10,0,0>, < 0.10,-0.65,0>, 0.10 } // leg pigment { color rgb Col } finish { Finish_Matte } scale Scale translate Pos } #end Person(<-1.2, BaseY+0.05, -0.4>, 0.85, <0.05,0.07,0.10>) Person(< 1.6, BaseY+0.05, -0.2>, 1.10, <0.04,0.06,0.09>) Person(<-2.2, BaseY+0.05, -0.1>, 0.65, <0.05,0.07,0.10>) // ------------------------------------------------------------ // Zodiac ring hint (arc of dots behind lighthouse) // ------------------------------------------------------------ #declare RingR = 5.2; #declare RingY = LightY+0.6; #declare RingZ = 0.6; #declare DotN = 40; #declare i = 0; #while (i < DotN) #declare a = radians(200 + (140*i/(DotN-1))); // arc behind tower sphere { 0.08 pigment { color rgbt <0.95, 0.98, 1.00, 0.35> } finish { diffuse 0.2 ambient 0.5 specular 0 } no_shadow } #declare i = i + 1; #end // ------------------------------------------------------------ // Floating bokeh particles (soft, warm) // ------------------------------------------------------------ #declare PCount = 55; #declare j = 0; #while (j < PCount) #declare px = -7 + 14*rand(seed(1234+j)); #declare py = 2 + 11*rand(seed(4321+j)); #declare pz = -6 + 18*rand(seed(2468+j)); #declare pr = 0.05 + 0.22*rand(seed(1357+j)); sphere { , pr pigment { color rgbt <1.00, 0.94, 0.85, 0.75> } finish { diffuse 0.1 ambient 0.8 specular 0 } no_shadow } #declare j = j + 1; #end