// ******************************************************* // Persistence Of Vision Ray Tracer Scene Description File // File name : glasswater.pov // Version : 3.6 // Description: water glass demo II // Date : Aug. 2004 // Author : Jaime Vives Piqueres // Scene scale: 1 pov unit = 1 cm // ******************************************************* // note the "portrait" aspect ratio: // >= +w240 +h320 +a0.1 #include "colors.inc" #include "textures.inc" #include "glass.inc" #include "functions.inc" // *** control center *** #declare use_phot=1; #declare use_area=1; global_settings{ max_trace_level 32*3 ambient_light 0.0 assumed_gamma 1.0 #if (use_phot) photons{ spacing .025 autostop 0 } #end } // *** simple lights *** #declare k=1.5; light_source{ 0,(White+Gold)*5000*k #if (use_area) area_light 9*x,9*z,4,4 jitter adaptive 1 circular #end fade_distance 1 fade_power 2 looks_like{ sphere{0,3 hollow pigment{rgbt 1} finish{diffuse 0 ambient 0} interior{media{emission 2}} } } translate <-50,240,-75> } light_source{ 0,(White+SummerSky)*10000*k #if (use_area) area_light 9*x,9*z,4,4 jitter adaptive 1 circular #end fade_distance 1 fade_power 2 looks_like{ box{-.5,.5 hollow scale <50,1,100> pigment{rgbt 1} finish{diffuse 0 ambient 0} interior{media{emission 2}} rotate 90*y } } translate <100,120,200> } // *** test room *** box{-.5,.5 hollow scale <500,250,500> pigment{ brick color Wheat color Firebrick scale 4 } translate 125*y } plane{y,0.1 hollow pigment{checker color White color Gray10 scale 50} } plane{y,249.9 hollow pigment{White} } // *** table *** #declare table= cylinder{-.01*y,.01*y,50 texture{ pigment{ gradient x color_map{ [0.0 Red] [0.5 Red] [0.5 White] [1.0 White] } scale 4 } finish{diffuse 1} } texture{ pigment{ gradient z color_map{ [0.0 Red transmit .25] [0.5 Red transmit .25] [0.5 White transmit .75] [1.0 White transmit .75] } scale 4 } finish{diffuse 1} } } object{table translate <0,80,0>} // *** GLASS OF WATER *** // glass material #declare m_glass= material{ texture{ T_Glass3 normal{bumps .1 scale 4} finish{reflection{.01,.9 fresnel} conserve_energy} } interior{I_Glass} } // water material #declare m_water= material{ texture{ pigment{rgbt 1} normal{waves .1} finish{reflection{.1,1 fresnel} conserve_energy} } interior { ior 1.333 } } // glass hole #declare glass_hole= merge{ cone{<0,.9,0>,2.5,<0,12.1,0>,2.8} intersection{ sphere{0,1 scale <2.5,.25,2.5>} plane{y,0} translate 1*y } hollow } // simple glass #declare glass1= merge{ difference{ cone{<0,0,0>,2.8,<0,12,0>,3} object{glass_hole} } intersection{ merge{ torus{2.3,.5} cylinder{<0,-.5,0>,<0,.5,0>,2.3} } plane{y,0.0001} } intersection{ torus{2.9,.1} plane{y,0 inverse} translate 12*y } hollow translate .5*y } // cutted glass #declare glass2= difference{ merge{ difference{ cone{<0,0,0>,2.5,<0,12,0>,3} object{glass_hole} } intersection{ merge{ torus{2.0,.5} cylinder{<0,-.5,0>,<0,.5,0>,2.0} } plane{y,0.0001} } intersection{ torus{2.9,.1} plane{y,0 inverse} translate 12*y } } sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55>} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate -45*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate 45*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate 90*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate -90*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate -135*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate 135*y} sphere{0,1 scale <3,2,.25> rotate -3*x translate <0,0,-2.55> rotate 180*y} hollow translate .5*y } // liquid volume (water in this case) #declare glass_content= difference{ intersection{ object{glass_hole} plane{y,9} } merge{ torus{2.3,.4} cylinder{<0,-.4,0>,<0,.4,0>,2.3} translate 9.2*y } hollow } // pajita #declare pajita= difference{ cylinder{0,14*y,.25} cylinder{-.01*y,14.01*y,.24} texture{ pigment{ radial color_map{ [0.0 White] [0.5 White] [0.5 DarkGreen] [1.0 DarkGreen] } frequency 4 } finish{Glossy diffuse 1} } } // join it all to make the glass of water union{ object{glass1 material{m_glass} } object{pajita rotate 10*x translate 1*y} object{glass_content material{m_water} scale .999999 } #if (use_phot) photons{ target refraction on reflection on collect off } #end translate <0,80.02,0> } // *** camera *** #declare cl=<0,105,-26>; #declare la=<0,86.5,0>; camera{ location cl up 3.2*y right 2.4*x direction 5*z look_at la rotate 90*y }