// Persistence of Vision Ray Tracer Scene Description File // File: strings.pov // Vers: 3.6 // Desc: Basic Scene Example // Date: 18-Apr-06 // Auth: Sean Day // #version 3.6; #include "colors.inc" #include "shapes.inc" #declare generalRand = seed(3432); // Macro to return a random number #macro gr(num) rand(generalRand)*num #end #declare shape1 = difference { union { cylinder { <0, 0, 0> <0, 20, 0> 5 } sphere { <0, 0, 0> 5 scale <1, 0.2, 1> translate <0, 20, 0> } } torus { 5.1, 1 scale <1, 7.5, 1> translate <0, 11, 0> } } #declare C_RING = 1; #declare p1 = union { difference { union { object { shape1 } // add torus's for ring effect to top #declare h=0.3; #if (C_RING = 1) #while(h < 4.5) #declare tS = 0.2+gr(0.1); #declare tH = <0, 0, 0>; #declare tP = trace(shape1, <0, 30, h>, <0, -1, 0>, tH); torus { h, tS scale <1,0.7-(h/30), 1> translate <0, tP.y-(tS*0.55), 0> } #declare h=h+0.3+gr(0.3); #end #end } // add torus's for ring effect to side #declare h=3; #if (C_RING = 1) #while(h < 19) #declare tS = 0.075+gr(0.1); #declare tH = <0, 0, 0>; #declare tP = trace(shape1, <0, h, -10>, <0, 0, 1>, tH); torus { -tP.z+(tS*(0.6+gr(0.4))), tS scale <1,2.2+gr(0.85), 1> translate <0, h, 0> } #declare h=h+0.13+gr(0.175); #end #end // add torus's for ring effect to top #declare h=0.65; #if (C_RING = 1) #while(h < 5) #declare tS = 0.2+gr(0.1); #declare tH = <0, 0, 0>; #declare tP = trace(shape1, <0, 30, h>, <0, -1, 0>, tH); torus { h, tS scale <1,0.2, 1> translate <0, tP.y+(tS*0.3), 0> } #declare h=h+0.3+gr(0.3); #end #end cylinder { <0, 11.5, -6> <0, 11.5, 6> 2 } sphere { <0, 0, 0> 2.25 scale <1, 1.5, 1> translate <0, 11.5, -5> } bounded_by { object { shape1 scale 1.1 } } } // base union { difference { intersection { sphere { 0, 20 translate <0, -17, 0> } cylinder { <0, -5, 0> <0, 2, 0> 10 } } cylinder { <0, -3, 0> <0, 3, 0> 5.75 } } torus { 5.75, 0.5 translate <0, 1.5, 0> } cylinder { <0, -5, 0> <0, -0.113, 0> 10.25 } torus { 9.75, 0.5 translate <0, -0.113, 0> } } texture { pigment { color rgb 1.0 } } } #include "colors.inc" #include "shapes.inc" #declare silverTexBase = texture { pigment { rgb <0.5, 0.51, 0.525> } finish { ambient 0 specular 1 diffuse 1.0 roughness 0.025 brilliance 8 reflection { 0.1, 0.025 metallic fresnel on } conserve_energy } } #declare silverTexL1 = texture { pigment { wrinkles triangle_wave turbulence 0.3 omega 0.7 colour_map { [ 0.0 rgbt <0.45, 0.41, 0.39, 1> ] [ 0.4 rgbt <0.45, 0.41, 0.39, 0> ] [ 0.7 rgbt <0.4, 0.35, 0.3, 0> ] [ 1.0 rgbt <0.4, 0.35, 0.3, 1> ] } scale 0.25 } finish { ambient 0 diffuse 1.0 specular 1 roughness 0.025 brilliance 7 reflection { 0.051, 0.0125 metallic fresnel on } conserve_energy } } #declare silverTexL2 = texture { pigment { wrinkles turbulence 0.3 omega 0.75 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.8 rgbt <1, 1, 1, 1> ] [ 0.8 rgbt <0.125, 0.05, 0, 1> ] [ 0.95 rgbt <0.125, 0.05, 0, 0.1> ] [ 1.0 rgbt <0.125, 0.05, 0, 0> ] } scale 1.5 } finish { ambient 0 diffuse 1.0 specular 1 roughness 0.025 brilliance 6 reflection { 0.05, 0.0125 metallic fresnel on } conserve_energy } } object { p1 scale 0.1 texture { silverTexBase } texture { silverTexL1 } texture { silverTexL2 } } // perspective (default) camera #declare c_loc = < -3.5, 4.0, -3.0>; camera { location c_loc look_at <0, 0.0, 0> } light_source { <0, 10, 0> color rgb <1,1,1>*0.5 } light_source { <-10, 0, 0> color rgb <1,1,1>*0.5 } light_source { <0, 0, -10> color rgb <1,1,1>*0.5 } // Create an infinite sphere around scene and allow any pigment on it sky_sphere { pigment { color rgb 1.0 } }