// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. // To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a // letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. // Persistence Of Vision raytracer sample file. // "No More Chrome Spheres Please!" // Copyright 2001 Rune S. Johansen // // The "chrome sphere over checkered plane" is an overused raytracing cliche. // The last thing we need is another of those images... // // ...but who cares! ;) // // NOTE: // First render the file SIGN.POV and then render this file. // // -w320 -h240 // -w800 -h600 +a0.3 #version 3.6; global_settings {assumed_gamma 2.2 max_trace_level 5} #declare ChromeFinish = finish {brilliance 2.5 phong 1 reflection {0.5}} #declare Sphere = union { #declare Back = bicubic_patch { type 1 flatness 0 u_steps 5 v_steps 5 <1,0.000, 0.000>, <1,0.553, 0.000>, <0.553,1.000, 0.000>, <0,1.000, 0.000>, <1,0.006,-0.003>, <1,0.553,-0.300>, <0.553,1.000,-0.553>, <0,1.000,-0.553>, <1,0.003,-0.006>, <1,0.300,-0.553>, <0.553,0.553,-1.000>, <0,0.553,-1.000>, <1,0.000, 0.000>, <1,0.000,-0.553>, <0.553,0.000,-1.000>, <0,0.000,-1.000> } #declare Upper = bicubic_patch { type 1 flatness 0 u_steps 5 v_steps 5 <1.000,0.000,0>,<1.000,0.000,0.553>,<1.039,0.1,0.6>,<0.779,0.1,0.45>, <1.000,0.553,0>,<1.000,0.553,0.553>,<1.039,0.1,0.6>,<0.779,0.1,0.45>, <0.553,1.000,0>,<0.553,1.000,0.850>,<0.450,0.1,1.2>,<0.450,0.1,0.90>, <0.000,1.000,0>,<0.000,1.000,0.850>,<0.000,0.1,1.2>,<0.000,0.1,0.90> } #declare Lower = bicubic_patch { type 1 flatness 0 u_steps 5 v_steps 5 <1.000, 0.000,0>,<1.000, 0.000,0.553>,<1.039, 0.1,0.6>,<0.779, 0.1,0.45>, <1.000,-0.553,0>,<1.000,-0.553,0.553>,<1.039,-0.6,0.6>,<0.779,-0.6,0.45>, <0.553,-1.000,0>,<0.553,-1.000,0.850>,<0.450,-0.4,1.2>,<0.450,-0.4,0.90>, <0.000,-1.000,0>,<0.000,-1.000,0.850>,<0.000,-0.4,1.2>,<0.000,-0.4,0.90> } // Chrome "sphere" union { object {Back scale <-1,-1,1>} object {Back scale < 1,-1,1>} object {Back scale <-1, 1,1>} object {Back scale < 1, 1,1>} object {Upper scale <-1,1,1>} object {Upper scale < 1,1,1>} object {Lower scale <-1,1,1>} object {Lower scale < 1,1,1>} pigment {color rgb 0.7} finish {ChromeFinish} } // Black "disc" to block view of inside of chrome sphere sphere { 0, 1 scale <0.999,0.999,0.1> pigment {color 0} } // Teeth union { torus {0.7, 0.05 scale <1,3,1> translate <0,+0.10,0.2>} torus {0.7, 0.05 scale <1,3,1> translate <0,-0.50,0.2>} pigment {color rgb 2} finish {ChromeFinish} } // Tungue blob { threshold 1 #declare X = 0; #declare Y = 40; #while (X<=Y) #declare V = X/Y; #declare W = 2*sin(acos(V))+0.001; cylinder { -x*W, x*W, 0.7, 0.5 scale 0.2+0.1*V translate y rotate (-45+95*V)*x translate <0,-1.3,0.8> } #declare X = X+1; #end pigment {color <1,0,0>} finish {ChromeFinish} } } #declare Sign = union { superellipsoid { 0.15 texture { pigment {image_map {"sign"} scale 2 translate -1} finish {ambient 0.1 diffuse 0.8 phong 1} } texture { // dirt layer pigment { bozo scale 0.3 turbulence 1 color_map {[0.5,rgbt <0.7,0.6,0.5,1.0>][1.0,rgbt <0.7,0.6,0.5,0.8>]} } } scale <0.7,0.7,0.02> translate <0,1.8,-0.12> } cylinder { 0, 2.6*y, 0.1 pigment {color rgb 0.8} normal {bumps 0.1 scale 0.01} finish {brilliance 2 phong 1 reflection {0.2}} } } #declare Plane = plane { y, 0 texture { pigment { checker pigment { gradient x triangle_wave turbulence 1 color_map {[0, color rgb 0.0][1, color rgb 0.2]} } pigment { gradient z triangle_wave turbulence 1 color_map {[0, color rgb 1.0][1, color rgb 0.8]} } } finish {ambient 0.1 diffuse 0.7 phong 1 reflection {0.2}} } texture { pigment { boxed translate <1,0,1> scale 0.5 warp {repeat x} warp {repeat z} color_map {[0, color transmit 0][0.03, color transmit 1]} } } } camera { location <6,0.9,-3> right x*image_width/image_height angle 70 look_at <0,2.4,-0.7> } light_source {<2,3,-1>*1000, color <0.8,0.9,1.0>} light_source {<3,1,+1>*1000, color <0.2,0.2,0.2>} light_source {<1,1,-3>*1000, color <0.4,0.4,0.3>} sky_sphere { pigment { gradient y translate -0.5*y scale 4 turbulence 0.05 octaves 7 lambda 5.0 omega 0.6 color_map { [0.50, color <0.6,0.3,0.8>] [0.75, color <0.1,0.2,0.5>] } } } fog { fog_type 2 color <0.6,0.3,0.8> distance 50 fog_offset 0 fog_alt 2 } object {Sphere rotate 45*y translate <-1,2,-2>} object {Sign translate 2*z} object {Plane}