// Simple Noah's Ark - corrected, fast iteration, simple shading #version 3.7; global_settings { assumed_gamma 1.0 } background { color rgb <0.93, 0.96, 1.0> } // -------------------- Camera -------------------- camera { location <0, 6.4, -18> look_at <0, 3.2, 0> angle 35 } // -------------------- Lights (warm + soft shadows) -------------------- light_source { <20, 22, -25> color rgb <1.0, 0.88, 0.72>*1.15 area_light <6,0,0>, <0,0,6>, 5, 5 adaptive 1 jitter } light_source { <-18, 16, -12> color rgb <1.0, 0.90, 0.80>*0.55 area_light <4,0,0>, <0,0,4>, 4, 4 adaptive 1 jitter } // -------------------- Simple materials -------------------- #declare WoodCol = rgb <0.72, 0.48, 0.26>; #declare TrimCol = rgb <0.82, 0.66, 0.42>; #declare DarkCol = rgb <0.22, 0.17, 0.12>; #declare GlassCol = rgb <0.65, 0.82, 0.95>; #declare FinWood = finish { diffuse 0.85 specular 0.15 roughness 0.06 }; #declare FinTrim = finish { diffuse 0.85 specular 0.12 roughness 0.07 }; #declare FinDark = finish { diffuse 0.90 specular 0.05 roughness 0.10 }; #declare FinGlass = finish { diffuse 0.25 specular 0.35 roughness 0.03 }; // -------------------- Ground plane (subtle) -------------------- plane { y, 0 pigment { color rgb <0.98, 0.98, 0.99> } finish { diffuse 0.9 specular 0.05 roughness 0.12 } } // -------------------- Ark dimensions -------------------- #declare Hull_L = 12.0; #declare Hull_W = 4.2; #declare Hull_H = 3.2; #declare Cabin_L = 7.2; #declare Cabin_W = 3.3; #declare Cabin_H = 2.1; #declare Roof_Over = 0.65; #declare Roof_H = 1.2; // Convenient base height #declare BaseY = 0.8; // -------------------- Ark model -------------------- union { // ---- Hull (simple rounded boat) ---- difference { union { // Main rounded volume (ellipsoid) sphere { <0, BaseY + Hull_H*0.62, 0>, 1 scale } // Slightly boxier mid-body to read more like the reference box { <-Hull_L*0.46, BaseY + Hull_H*0.55, -Hull_W*0.50>, < Hull_L*0.46, BaseY + Hull_H*1.05, Hull_W*0.50> } } // Flatten bottom (keel cut) box { <-50, -50, -50>, <50, BaseY + 0.62, 50> } pigment { color WoodCol } finish { FinWood } } // ---- Deck line trim band ---- box { <-Hull_L*0.46, BaseY + Hull_H*0.72, -Hull_W*0.52>, < Hull_L*0.46, BaseY + Hull_H*0.80, Hull_W*0.52> pigment { color TrimCol } finish { FinTrim } } // ---- Cabin block ---- box { <-Cabin_L/2, BaseY + Hull_H*0.98, -Cabin_W/2>, < Cabin_L/2, BaseY + Hull_H*0.98 + Cabin_H, Cabin_W/2> pigment { color WoodCol*0.92 } finish { FinWood } } // ---- Window (on +Z face) ---- // Recess box { <-2.0, BaseY + Hull_H*0.98 + 0.65, Cabin_W/2-0.02>, < 2.0, BaseY + Hull_H*0.98 + 1.55, Cabin_W/2+0.20> pigment { color DarkCol } finish { FinDark } } // Frame difference { box { <-2.25, BaseY + Hull_H*0.98 + 0.55, Cabin_W/2-0.01>, < 2.25, BaseY + Hull_H*0.98 + 1.65, Cabin_W/2+0.10> } box { <-2.00, BaseY + Hull_H*0.98 + 0.70, Cabin_W/2-0.02>, < 2.00, BaseY + Hull_H*0.98 + 1.50, Cabin_W/2+0.12> } pigment { color TrimCol } finish { FinTrim } } // Glass box { <-1.95, BaseY + Hull_H*0.98 + 0.72, Cabin_W/2+0.02>, < 1.95, BaseY + Hull_H*0.98 + 1.48, Cabin_W/2+0.06> pigment { color GlassCol } finish { FinGlass } } // ---- Roof (single clean CSG to avoid prior parser error) ---- difference { // Roof slab box { <-Cabin_L/2-Roof_Over, BaseY + Hull_H*0.98 + Cabin_H, -Cabin_W/2-Roof_Over>, < Cabin_L/2+Roof_Over, BaseY + Hull_H*0.98 + Cabin_H + Roof_H, Cabin_W/2+Roof_Over> } // Cut to create a simple pitched roof plane { <0, 0.85, 1>, (BaseY + Hull_H*0.98 + Cabin_H) + 0.42 } plane { <0, 0.85, -1>, (BaseY + Hull_H*0.98 + Cabin_H) + 0.42 } pigment { color TrimCol } finish { FinTrim } } // ---- Portholes (rings) on visible side (+Z) ---- #declare PZ = Hull_W*0.55 + 0.10; #declare PH = BaseY + Hull_H*0.62; #declare i = 0; #while (i < 4) #declare px = -4.2 + i*2.8; union { difference { cylinder { , , 0.45 } cylinder { , , 0.28 } pigment { color TrimCol } finish { FinTrim } } cylinder { , , 0.24 pigment { color DarkCol } finish { FinDark } } } #declare i = i + 1; #end } // end ark union // -------------------- Back wall (clean studio) -------------------- plane { z, 20 pigment { color rgb <0.95, 0.96, 0.98> } finish { diffuse 0.9 } }