#ifndef (Debug) #declare Debug = no; #end //rc global_settings { assumed_gamma 1 } //rc #default {finish {ambient 0}} // Units are in feet. #declare inch=1/12; #declare inches=inch; camera { location <25,6,-10> look_at 0 // angle 10 } // The grounds difference { plane {y, 0} box {<-14,-16,-20>,<14,1,20>} pigment {color rgb 1} } #declare garden_light = union { cylinder {0, y*4*inches, 1/2*inches} torus {4*inches, inch/4 translate y*4*inches} #if (!Debug) //rc - remove if there's no area light torus {4*inches, inch/4 translate y*6*inches} #end torus {4*inches, inch/4 translate y*8*inches} cone {y*8.25*inches, 4*inches, y*9*inches, 2*inches} cylinder {y*4*inches, y*8*inches, inch/4 translate z*4*inches rotate y*045} cylinder {y*4*inches, y*8*inches, inch/4 translate z*4*inches rotate y*135} cylinder {y*4*inches, y*8*inches, inch/4 translate z*4*inches rotate y*225} cylinder {y*4*inches, y*8*inches, inch/4 translate z*4*inches rotate y*315} cylinder {-z*4*inches,z*4*inches, inch/4 translate y*4*inches rotate y*045} cylinder {-z*4*inches,z*4*inches, inch/4 translate y*4*inches rotate y*-45} light_source { y*6*inches color rgb <6,5,4>/6 #if (!Debug) //rc - omit area light for fast render area_light x*inch,y*inch,15,15 adaptive 1 circular orient #end fade_distance 4 fade_power 2 looks_like { sphere{ 0, inch pigment {color rgb <6,5,4>/5} finish {ambient 1} } } } texture { pigment {color rgb 0} finish {specular 1} } } #declare c = -22; #while (c <= 22) object {garden_light translate <-16,0,c>} object {garden_light translate < 16,0,c>} #declare c = c + 11; #end #declare c = -7; #while (c <= 7) object {garden_light translate } object {garden_light translate } #declare c = c + 7; #end // The pool itself difference { box {<-14,-16,-20>,<14,0,20>} box {<-9,-15,-15>, <9,1,15>} texture { pigment {color rgb 1} normal {bumps scale 1/(12*50)} } } #declare tile = intersection { box {<1/4-6,0,1/4-6>*inches,<6-1/4,1/4,6-1/4>*inches} union { #declare corner = <6-1/2,0,6-1/2>*inches; sphere {corner, inch/4} sphere {corner*<1,0,-1>, inch/4} sphere {corner*<-1,0,1>, inch/4} sphere {corner*<-1,0,-1>, inch/4} cylinder {corner, corner*<1,0,-1>, inch/4} cylinder {corner, corner*<-1,0,1>, inch/4} cylinder {corner*<-1,0,-1>, corner*<1,0,-1>, inch/4} cylinder {corner*<-1,0,-1>, corner*<-1,0,1>, inch/4} box {corner, corner*<-1,0,-1>+y} } } #declare t_Tile1 = texture { //moved outside tile by rc pigment { gradient z color_map { [0.0 color rgb 0] [0.2 color rgb y/4] [0.5 color rgb z/2] [1.0 color rgb z/3] } turbulence 2.5 } finish {specular 1} scale 1/2 } //rc - begin second checker color #declare t_Tile2 = texture { pigment { gradient z color_map { [0.0 color rgb z/4 + 0.5] [0.2 color rgb y/4 + 0.5] [0.5 color rgb 1 - x/2] [1.0 color rgb 1] } turbulence 2.5 } finish {specular 1} scale 1/2 } #declare Tiles = array[2] //checkered tile set { object { tile texture { t_Tile1 } }, object { tile texture { t_Tile2 } } } //end rc //rc - tile changed to Tiles[*] #declare c = -14.5; #while (c <= 14.5) #declare T = mod (floor (c + 15), 2); object {Tiles[T] rotate -z*90 translate <-9,-6*inches,c>} object {Tiles[1-T] rotate -z*90 translate <-9,-18*inches,c>} object {Tiles[T] rotate -z*90 translate <-9,-30*inches,c>} object {Tiles[1-T] translate <-9.5,0,c>} object {Tiles[T] translate <-10.5,0,c>} object {Tiles[1-T] translate <-11.5,0,c>} object {Tiles[1-T] rotate z*90 translate <9,-6*inches,c>} object {Tiles[T] rotate z*90 translate <9,-18*inches,c>} object {Tiles[1-T] rotate z*90 translate <9,-30*inches,c>} object {Tiles[T] translate <9.5,0,c>} object {Tiles[1-T] translate <10.5,0,c>} object {Tiles[T] translate <11.5,0,c>} #declare c = c + 1; #end #declare c = -8.5; #while (c <= 8.5) #declare T = mod (floor (c + 9), 2); object {Tiles[1-T] rotate -x*90 translate } object {Tiles[T] rotate -x*90 translate } object {Tiles[1-T] rotate -x*90 translate } object {Tiles[T] translate } object {Tiles[1-T] translate } object {Tiles[T] translate } object {Tiles[T] rotate x*90 translate } object {Tiles[1-T] rotate x*90 translate } object {Tiles[T] rotate x*90 translate } object {Tiles[1-T] translate } object {Tiles[T] translate } object {Tiles[1-T] translate } #declare c = c + 1; #end #declare c1 = 0; #while (c1 < 3) #declare c2 = 0; #while (c2 < 3) #declare T = mod (3*c1 + c2, 2); object {Tiles[T] translate <9.5+c1, 0, 15.5+c2>} object {Tiles[1-T] translate <9.5+c1, 0, 15.5+c2> scale < 1,1,-1>} object {Tiles[1-T] translate <9.5+c1, 0, 15.5+c2> scale <-1,1, 1>} object {Tiles[T] translate <9.5+c1, 0, 15.5+c2> scale <-1,1,-1>} #declare c2 = c2 + 1; #end #declare c1 = c1 + 1; #end #declare pool_light = union { difference { sphere {0, 1/2} sphere {0, 9/20} texture { pigment {color transmit 1} finish {specular 1} } interior { ior 1.5 } scale <1,1/4,1> } light_source { y/16 color rgb 1 fade_distance 1/2 fade_power 2 } } #declare c = -12.5; #while (c <= 12.5) object {pool_light rotate -z*90 translate <-9,-4,c>} object {pool_light rotate -z*90 translate <-9,-12,c>} object {pool_light rotate z*90 translate <9,-4,c>} object {pool_light rotate z*90 translate <9,-12,c>} #declare c = c + 8; #end #declare c = -8; #while (c <= 8) object {pool_light rotate x*-90 translate } object {pool_light rotate x*-90 translate } object {pool_light rotate x*90 translate } object {pool_light rotate x*90 translate } #declare c = c + 8; #end // water plane { y, -6*inches texture { pigment {color transmit 1} finish {specular 1/2 reflection 1/4} normal {ripples 1/16 scale 2.5} } interior {ior 4/3} } #declare ball= // beachball added by Thomas de Groot 5/25/2008: sphere { <0,0.25,0>, 1 texture { pigment { radial frequency 8 color_map { [0.00 color rgb <1.0,0.4,0.2> ] [0.33 color rgb <0.2,0.4,1.0> ] [0.66 color rgb <0.4,1.0,0.2> ] [1.00 color rgb <1.0,0.4,0.2> ] } } finish{ //specular 0.3 //rc - sphere *must* be reflective ;-) reflection { 0.6 metallic } specular 2 metallic 0.95 roughness 0.01 brilliance 7 diffuse 0.32 ambient 0.1 //rc - translucence hack } } //rc/jd - deleted //scale 1 //rotate <70, 10, 53> //translate <-3, -6*inches, -2.5> } // end of beachball #macro VRand_In_Box(Mn, Mx, RS) (< rand(RS), rand(RS), rand(RS)>*(Mx-Mn) + Mn) #end // the pool dimensions are 18x30ft, centered // beachball cloned by Jan Dvorak 26 May 2008 // subdivide the pool into equal cells and put a ball randomly in some of them #declare s=seed(3141592); #declare sp=6; #declare p=4/5; #declare c1=-9+sp/2; #while(c1<9) #declare c2=-15+sp/2; #while(c2<15) #if(rand(s) translate VRand_In_Box(<-1,0,-1>,<1,0,1>,s)*(sp/2-1) } #end #declare c2=c2+sp; #end #declare c1=c1+sp; #end //end of clone