#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 12 } background { color rgb <0.56, 0.73, 0.95> } #default { finish { diffuse 0.9 } } // ------------------------------------------------------------ // Camera (3/4 view) + lights (dusk / atmospheric) // ------------------------------------------------------------ camera { location <-11.5, 5.2, -13.8> look_at < 0.0, 2.2, 0.0> angle 40 } light_source { <120, 110, -90> color rgb <1.00, 0.97, 0.90>*1.05 } light_source { <-30, 18, -18> color rgb <0.40, 0.52, 0.70>*0.55 } light_source { <0, 30, 5> color rgb <0.60, 0.70, 0.90>*0.18 } // ------------------------------------------------------------ // Textures // ------------------------------------------------------------ #declare T_Grass = texture{ pigment{ bozo color_map{ [0.00 color rgb <0.10,0.24,0.10>] [0.45 color rgb <0.17,0.39,0.16>] [1.00 color rgb <0.07,0.18,0.08>] } scale 0.65 } normal { bumps 0.70 scale 0.12 } finish { diffuse 0.95 specular 0.05 roughness 0.12 } } #declare T_Path = texture{ pigment{ granite color_map{ [0.00 color rgb <0.34,0.34,0.36>] [0.65 color rgb <0.58,0.58,0.61>] [1.00 color rgb <0.26,0.26,0.28>] } scale 0.40 } normal { bumps 0.55 scale 0.07 } finish { diffuse 0.90 specular 0.10 roughness 0.08 } } #declare T_Brick2 = texture{ pigment{ brick color rgb <0.58, 0.22, 0.16>, color rgb <0.76, 0.30, 0.22> brick_size <0.34, 0.10, 0.18> mortar 0.12 translate <0,0,0> scale 1 } normal { bumps 0.55 scale 0.025 } finish { diffuse 0.92 specular 0.10 roughness 0.06 } } #declare T_Mortar = texture{ pigment { color rgb <0.72,0.70,0.67> } finish { diffuse 0.92 specular 0.04 roughness 0.12 } } #declare T_Wood = texture{ pigment{ wood color_map{ [0.00 color rgb <0.18,0.10,0.06>] [0.35 color rgb <0.42,0.24,0.13>] [1.00 color rgb <0.14,0.08,0.05>] } turbulence 0.18 scale <0.22, 1, 0.22> rotate <0,90,0> } normal { bumps 0.45 scale 0.03 } finish { diffuse 0.88 specular 0.22 roughness 0.045 } } #declare T_Stone = texture{ pigment{ granite color_map{ [0.00 color rgb <0.44,0.44,0.46>] [0.6 color rgb <0.64,0.64,0.66>] [1.00 color rgb <0.38,0.38,0.40>] } scale 0.65 } normal { bumps 0.55 scale 0.065 } finish { diffuse 0.90 specular 0.12 roughness 0.085 } } #declare T_DarkMetal = texture{ pigment{ color rgb <0.10,0.10,0.11> } finish { diffuse 0.35 specular 0.60 roughness 0.03 reflection 0.10 } } #declare T_InteriorWall = texture{ pigment{ color rgb <0.78,0.73,0.64> } finish { diffuse 0.85 } } #declare T_InteriorFloor = texture{ pigment{ wood color_map{ [0.00 color rgb <0.20,0.11,0.07>] [0.30 color rgb <0.45,0.25,0.14>] [1.00 color rgb <0.16,0.09,0.05>] } scale <0.18,1,0.18> rotate <0,90,0> turbulence 0.12 } finish { diffuse 0.85 specular 0.15 roughness 0.06 } } // Clearer glass: you can see through now. #declare T_GlassClear = texture{ pigment{ color rgbf <0.97, 0.99, 1.00, 0.15> } // low filter -> mostly transparent normal { bumps 0.10 scale 0.010 } finish { diffuse 0.02 specular 0.85 roughness 0.015 reflection 0.10 } } // ------------------------------------------------------------ // Ground + atmosphere // ------------------------------------------------------------ plane { y, 0 texture { T_Grass } } fog { distance 70 color rgb <0.56, 0.73, 0.95> fog_type 2 fog_offset 0.25 fog_alt 2.8 turbulence 0.25 } // Path box { <-2.4, 0.002, -10.5>, <2.4, 0.03, -3.2> texture{ T_Path } } // ------------------------------------------------------------ // Building dimensions // ------------------------------------------------------------ #declare B_W = 10.0; #declare B_D = 6.2; #declare B_H = 4.6; #declare Wall_Min = <-B_W/2, 0, -B_D/2>; #declare Wall_Max = < B_W/2, B_H, B_D/2>; #declare FrontZ = -B_D/2; #declare WallThick = 0.28; // ------------------------------------------------------------ // Window parameters / cuts // ------------------------------------------------------------ #declare WinW = 1.45; #declare WinH = 1.35; #declare WinY = 2.05; #declare WinFrameDepth = 0.16; #declare RecessDepth = 0.24; #macro FrontWindowCut(XPos) box { , } #end #declare Win2W = 1.10; #declare Win2H = 0.90; #declare Win2Y = 3.55; #macro UpperWindowCut() box { <-Win2W/2, Win2Y-Win2H/2, FrontZ-0.50>, < Win2W/2, Win2Y+Win2H/2, FrontZ+0.26> } #end #declare SideX = B_W/2; #declare SideWinW = 1.15; #declare SideWinH = 1.25; #macro SideWindowCut(ZPos) box { , } #end // ------------------------------------------------------------ // Building shell (difference to cut openings) // ------------------------------------------------------------ difference{ union{ // Main brick volume box { Wall_Min, Wall_Max texture{T_Brick2} } // Base stone plinth box { <-B_W/2-0.06, 0, -B_D/2-0.06>, texture{T_Stone} } // Roof slab + small overhang box { <-B_W/2-0.30, B_H, -B_D/2-0.30>, texture{T_Stone} } // Front lintel strip box { <-B_W/2, 3.55, FrontZ-0.01>, texture{T_Stone} } // Corner trims box { <-B_W/2-0.02, 0.38, -B_D/2-0.02>, <-B_W/2+0.25, B_H, -B_D/2+0.25> texture{T_Mortar} } box { < B_W/2-0.25, 0.38, -B_D/2-0.02>, < B_W/2+0.02, B_H, -B_D/2+0.25> texture{T_Mortar} } box { <-B_W/2-0.02, 0.38, B_D/2-0.25>, <-B_W/2+0.25, B_H, B_D/2+0.02> texture{T_Mortar} } box { < B_W/2-0.25, 0.38, B_D/2-0.25>, < B_W/2+0.02, B_H, B_D/2+0.02> texture{T_Mortar} } } // Cut front windows FrontWindowCut(-3.3) FrontWindowCut( 3.3) UpperWindowCut() // Cut right side windows SideWindowCut(-0.8) SideWindowCut( 1.6) // Cut door opening box { <-1.1, 0.42, FrontZ-0.45>, <1.1, 3.55, FrontZ+0.26> } } // ------------------------------------------------------------ // Interior room (so you can see through windows) // ------------------------------------------------------------ #declare Inner_W = B_W - 2*WallThick; #declare Inner_D = B_D - 2*WallThick; #declare Inner_H = B_H - 0.35; #declare Inner_Min = <-Inner_W/2, 0.40, -Inner_D/2>; #declare Inner_Max = < Inner_W/2, Inner_H, Inner_D/2>; union{ // Back wall box { , texture{T_InteriorWall} } // Left wall box { , texture{T_InteriorWall} } // Right wall box { , texture{T_InteriorWall} } // Floor box { , texture{T_InteriorFloor} } } // Interior props (simple silhouettes visible through glass) #declare T_Silhouette = texture{ pigment{ color rgb <0.10,0.10,0.11> } finish{ diffuse 0.2 specular 0.05 } } union{ // Table box { <-1.2, 1.05, -0.3>, <1.2, 1.15, 0.7> texture{T_Silhouette} } cylinder { <-1.0, 0.40, -0.2>, <-1.0, 1.05, -0.2>, 0.06 texture{T_Silhouette} } cylinder { < 1.0, 0.40, -0.2>, < 1.0, 1.05, -0.2>, 0.06 texture{T_Silhouette} } cylinder { <-1.0, 0.40, 0.6>, <-1.0, 1.05, 0.6>, 0.06 texture{T_Silhouette} } cylinder { < 1.0, 0.40, 0.6>, < 1.0, 1.05, 0.6>, 0.06 texture{T_Silhouette} } // A cabinet near the back (adds depth) box { <-3.6, 0.40, 2.0>, <-2.0, 2.0, 2.55> texture{T_Silhouette} } // Upstairs silhouette (aligned to upper window) box { <-0.55, 2.75, 1.5>, <0.55, 3.65, 1.95> texture{T_Silhouette} } } // Warm interior lighting (area-ish using multiple points for speed) #declare WarmWindowCol = color rgb <1.00, 0.76, 0.42>; light_source { <-2.0, 2.2, 0.2> WarmWindowCol*1.4 fade_distance 8 fade_power 2 } light_source { < 2.0, 2.2, 0.2> WarmWindowCol*1.4 fade_distance 8 fade_power 2 } light_source { < 0.0, 3.3, 0.9> WarmWindowCol*0.9 fade_distance 8 fade_power 2 } // ------------------------------------------------------------ // Front door & steps // ------------------------------------------------------------ #declare DoorW = 2.2; #declare DoorH = 3.05; #declare DoorZ = FrontZ-0.001; union{ // Steps box { <-1.85, 0.00, FrontZ-1.35>, <1.85, 0.20, FrontZ> texture{T_Stone} } box { <-1.60, 0.20, FrontZ-1.08>, <1.60, 0.38, FrontZ> texture{T_Stone} } // Door surround box { <-DoorW/2-0.16, 0.38, DoorZ-0.02>, texture{T_Stone} } // Wooden frame inset box { <-DoorW/2-0.04, 0.42, DoorZ+0.02>, texture{T_Wood} } // Double doors box { <-DoorW/2+0.06, 0.44, DoorZ+0.06>, <0, 0.44+DoorH-0.06, DoorZ+0.14> texture{T_Wood} } box { <0, 0.44, DoorZ+0.06>, texture{T_Wood} } // Kick panels box { <-DoorW/2+0.18, 0.70, DoorZ+0.141>, <-0.10, 1.70, DoorZ+0.146> texture{T_DarkMetal} } box { < 0.10, 0.70, DoorZ+0.141>, < DoorW/2-0.18, 1.70, DoorZ+0.146> texture{T_DarkMetal} } // Handles sphere { <-0.35, 1.88, DoorZ+0.155>, 0.06 texture{T_DarkMetal} } sphere { < 0.35, 1.88, DoorZ+0.155>, 0.06 texture{T_DarkMetal} } } // ------------------------------------------------------------ // Window detailing (frames, muntins, clear glass; NO warm panel blocking view) // ------------------------------------------------------------ #macro MakeFrontWindow(XPos) union{ // Stone frame box { , texture{T_Stone} } // Inner recess (depth) box { , texture{T_DarkMetal} } // Clear glass box { , texture{T_GlassClear} interior { ior 1.50 } } // Muntins in front of glass box { , texture{T_Stone} } box { , texture{T_Stone} } } #end MakeFrontWindow(-3.3) MakeFrontWindow( 3.3) // Upper small window union{ box { <-Win2W/2-0.12, Win2Y-Win2H/2-0.12, FrontZ-0.001>, texture{T_Stone} } box { <-Win2W/2, Win2Y-Win2H/2, FrontZ+0.02>, texture{T_DarkMetal} } box { <-Win2W/2+0.02, Win2Y-Win2H/2+0.02, FrontZ+0.03>, texture{T_GlassClear} interior{ior 1.50} } box { <-0.03, Win2Y-Win2H/2, FrontZ+0.041>, <0.03, Win2Y+Win2H/2, FrontZ+0.070> texture{T_Stone} } box { <-Win2W/2, Win2Y-0.03, FrontZ+0.041>, texture{T_Stone} } } // Right side windows #declare SideZ1 = -0.8; #declare SideZ2 = 1.6; #macro MakeSideWindow(ZPos) union{ // Stone frame box { , texture{T_Stone} } // recess box { , texture{T_DarkMetal} } // clear glass box { , texture{T_GlassClear} interior { ior 1.50 } } // simple vertical muntin box { , texture{T_Stone} } } #end MakeSideWindow(SideZ1) MakeSideWindow(SideZ2)