// Persistence of Vision Ray Tracer Scene Description File // File: sphere1.pov // Vers: 3.6 // Desc: Reflective Sphere over Checkered Plane, Take I // Date: 23 Dec 2006 // Auth: Peter Hokanson // Suggested aspect ratio: 2:1 // +W1024 +H512 #version 3.6; #include "colors.inc" #include "rand.inc" #include "shapes.inc" #include "math.inc" // Adjust this according to how you have it installed #include "../../LightsysIV/CIE.inc" #declare QRadiosity = on; global_settings { assumed_gamma 1.0 max_trace_level 5 #if (QRadiosity) // Standard Radiosity block radiosity { pretrace_start 0.08 pretrace_end 0.04 count 35 nearest_count 5 error_bound 1.8 recursion_limit 3 low_error_factor .5 gray_threshold 0.0 minimum_reuse 0.015 brightness 1 adc_bailout 0.01/2 //normal on // take surface normals into account [off] //media on // take media into account [off] // I used the save-and-load trick for my render. //save_file "sphere1.rad" // save radiosity data //load_file "sphere1.rad" // load saved radiosity data //always_sample off // turn sampling in final trace off [on] //max_sample 1.0 // maximum brightness of samples } #end } // ---------------------------------------- camera { right x*image_width/image_height location <-3,3,-4> look_at <0,0.0,0> sky <0.4,1,0> // Fun with tilted cameras // Even these pretty insane settings aren't enough to totally remove all the artifacts. //focal_point <.354,0.55,-1.26> //aperture 0.4 //blur_samples 50 //variance 1/512 //confidence 0.95 } // I stole these settings shamelessly from one of JVP's examples. // Many thanks for Lightsys! I really love the Blackbody() macro :) #declare Al=18; // sun altitude #declare Az=205; // sun rotation #declare North=-z; #declare DomeSize=1e5; #declare Current_Turbidity = 5.0; #declare Intensity_Mult = 0.7; #include "../../LightsysIV/CIE_Skylight.inc" light_source { <0,0,0> color SunColor //color Blackbody(4200) translate SolarPosition fade_power 2 // Insane settings follow, feel free to reduce to drop the render time area_light <5000,0,0>,<0,5000,0>, 20,20 adaptive 1 jitter circular } // This is probably completely unnecessary, it shouldn't be visible, but I left it in in the render sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] [0.7 rgb <0.0,0.1,0.8>] } } } // ---------------------------------------- #declare FTile = finish{ reflection{0.1,1.0 fresnel on} specular 0.8 roughness 0.02 metallic 0.75 conserve_energy } // Blurred reflection. Really slows things down with AA. #declare NTile = normal{ bumps 0.1 scale 0.00005 } // The plane is only to fill in at great (blurred) distance plane { y, 0 texture{ pigment{ checker color SteelBlue * 0.5 color Wheat } finish{FTile} normal{NTile} } interior{ior 1.5} scale 2 } // This plane contains media... plane{ y,10 texture{ pigment{rgbt 1} } hollow interior{ media{ // I like the effect this gives (the huge glow), but it takes forever :( scattering{4,0.01} } } } // This generates the tiles in the foreground, and takes a while to parse. // Don't be afraid to comment it out to reduce render times (but the plane // is lower in the Z axis than the boxes). union{ #declare X=-3; #while (X<10) #declare Z = -3; #while (Z<20) object{ Round_Box_Union(<0,-1,0>,<1,0.05,1>,0.05) #if (even(X+Z)) pigment{color SteelBlue * 0.5} #else pigment{color Wheat} #end finish{FTile} normal{NTile} interior{ior 1.5} translate scale 2 } #declare Z = Z + 1; #end #declare X = X + 1; #end } #declare MSphere=material { texture { pigment {rgb OrangeRed+Red*0.2} finish { brilliance 10 reflection { 0.1, 1.0 fresnel on } conserve_energy } } interior{ior 1.5} } #declare MChrome=material { texture{ pigment{rgb 0.2} finish{ reflection{0.1,0.9} } } } // This is THE chrome sphere. sphere { <.354,0.5+0.05,-1.26>, 0.5 material { MChrome } } // These are imposters :) union{ // First some custom-placed ones... sphere{<-2.76,0.55, 5.26>, 0.5} sphere{< 3.23,0.55, 3.56>, 0.5} sphere{<-2.56,0.55,-2.26>, 0.5} sphere{< 1.56,0.55,15.26>, 0.5} sphere{< 2.56,0.55,-3.66>, 0.5} // Then I got lazy for the ones in the background #declare R = seed(679);//512 #declare I = 0; #while (I<10) sphere{, 0.5} #declare I = I + 1; #end // and even lazier... #declare I = 0; #while (I<50) sphere{, 0.5} #declare I = I + 1; #end material{MSphere} } // Enjoy!