/* Persistence of Vision Ray Tracer Scene Description File File: Sorcery.pov Vers: 3.5 Desc: An arcane Hall, obviously used for dark purposes. This picture does not represent views held by the artist, it is art and should be enjoyed as such. Date: Auth: Anthony D. Baye */ #include "kolors.inc" #include "textures.inc" #include "metals.inc" #include "stones.inc" #include "functions.inc" #include "Lights.inc" #include "arch.inc" #include "Wall.inc" #include "math.inc" #declare ft = 12 ; /* !---- Global Switches ----! */ #declare RAD = on ; #declare PHO = off ; #declare TEX = on ; /* !-------------------------! */ //#declare this_fr=concat("Arcane-",str(frame_number,2,0),".rad"); //#declare last_fr=concat("Arcane-",str(frame_number-1,2,0),".rad"); #default { pigment { White } finish { ambient 0.3 diffuse 0.6 } } global_settings { #if(RAD) radiosity { pretrace_start 0.02 pretrace_end 0.005 count 75 nearest_count 10 error_bound 0.2 recursion_limit 3 low_error_factor 0.2 gray_threshold 0.2 minimum_reuse 0.015 brightness 0.98 // load_file last_fr always_sample on media on adc_bailout 1/256 } #end #if (PHO) photons { // spacing 0.001 count 20000 autostop 0 jitter 0.4 media 100 } #end max_trace_level 6 file_gamma 1.8 } //light_source { <0.0, 17.0*ft, 0.0> color rgb 0.625 fade_distance 7.0*ft fade_power 2 media_interaction off } camera { perspective location <0.0, 5.5*ft, -15.0*ft> up y right (image_width/image_height)*x look_at <0.0, 5.5*ft, 0.0> } /* camera { location <0.0, 0.75*ft, 3.0*ft> right (image_width/image_height)*x look_at <0.0, 5.5, 4.375*ft> } */ /* ! ---------------------- Declarations ---------------------- ! */ #include "Arcane.inc" /* ! Beginning of Scene ! */ // The Floor #declare fgp = function { pigment { brick color Black, color Red brick_size <1.5*ft, 1.5*ft, 1.5*ft> mortar 0.03125 rotate 90.0*x } } union { difference { plane { y, 3.5*ft } cylinder { -0.125*ft*y, 3.515625*ft*y, 25.75*ft } cylinder { 3.375*ft*y, 3.515625*ft*y, 35.0*ft } } difference { intersection { union { isosurface { function { y - 1.5625 * fgp(x,y,z).red } max_gradient 4 threshold 0.0 contained_by { box { <-35.75*ft, 0.0, -35.0*ft> <35.0*ft, 0.125*ft, 35.0*ft> } } all_intersections translate 3.375*ft*y } box { <-35.0*ft, 3.375*ft, -35.0*ft> <35.0*ft, 3.484375*ft, 35.0*ft> pigment { White*0.96875 } finish { ambient 0.3 diffuse 0.6 } } } cylinder { 3.34375*ft*y, 3.5625*ft*y, 35.0*ft } } cylinder { 3.34375*ft*y, 3.5625*ft*y, 25.75*ft } } object { Round_Brick_Wall( 35.75*ft, 35.0*ft, 10.0*ft, 360, 2.0*ft, 1.0*ft, 0.125, 0.5, Black_Granite, Mortar, normal { granite 1 turbulence 0.8 scale 0.01 } ) translate 3.5*ft*y } Round_Brick_Wall( 25.75*ft, 25.0*ft, 3.5*ft, 360, 2.0*ft, 1.0*ft, 0.125, 0.5, Black_Granite, Mortar, normal {granite 1 turbulence 0.8 scale 0.01 } ) /* Stairs */ #declare Step = 0 ; #while(Step < 3.5) intersection { cylinder { <0.0, 3.0*ft, 0.0> <0.0, 3.5*ft, 0.0> (6.0+(Step*2.25))*ft translate 25.0*ft*z } cylinder { <0.0, 2.99999*ft, 0.0> <0.0, 3.50001*ft, 0.0> 25.0*ft } translate -Step*ft*y } #declare Step = Step + 0.5 ; #end #if(TEX) texture { T_Stone22 } finish { reflection { 0.05 fresnel on } specular 0.45 ambient 0.0 roughness 0.01 conserve_energy } #end photons { target reflection on refraction on } } // The Floor, An IsoSurface. object { difference { union { isosurface { function { y - 1.5625 * fgp(x,y,z).red } max_gradient 4 threshold 0.0 contained_by { box { <-30.0*ft, 0.0, -30.0*ft> <30.0*ft, 0.125*ft, 45.0*ft> } } all_intersections translate -0.125*ft*y } plane { y, -0.015625 pigment { White*0.96875 } finish { ambient 0.3 diffuse 0.6 } } } union { difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.015625*ft, 0.0> 9.0*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 8.875*ft } } difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.015625*ft, 0.0> 5.625*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 5.5*ft } } union { difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.125*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.0625*ft, 0.0> 4.0*ft } } #declare A = 0 ; #while(A < 360) intersection { union { difference { box { <0.0, -0.09375*ft, 0.0> <0.125*ft, 0.03125*ft, -8.0*ft> rotate -18.0*y translate 4.0625*ft*z } box { <0.0, -0.125*ft, 0.0> <-0.15625*ft, 0.0625*ft, 8.03125*ft> } box { <0.0, -0.125*ft, 0.0> <-0.15625*ft, 0.0625*ft, -8.03125*ft> rotate 36.0*y } } difference { box { <0.0, -0.09375*ft, 0.0> <-0.125*ft, 0.03125*ft, -8.0*ft> rotate 18.0*y translate 4.0625*ft*z } box { <0.0, -0.125*ft, 0.0> <0.15625*ft, 0.0625*ft, 8.03125*ft> } box { <0.0, -0.125*ft, 0.0> <0.15625*ft, 0.0625*ft, -8.03125*ft> rotate -36.0*y } } } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.0*ft } rotate A*y } #declare A = A + 72.0 ; #end } cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.03125, 0.0> 9.0 } } } #if(TEX) texture { T_Stone27 scale <4, 1, 4>/*ft*/ } finish { reflection { 0.05 fresnel on } specular 0.45 ambient 0.0 roughness 0.01 conserve_energy } #end photons { target reflection on refraction on } } #declare bR = (12/cosd(22.5)); #local cR = -22.5; #while(cR < 360) union { #local h = 0; #while(h < 12.0) prism { h, h+1.5, 9 #local p1 = -22.5; #while(p1 <= 360) (bR-h/3)* #local p1 = p1 + 45; #end } #local h = h + 1.5; #end difference { cylinder { <0.0, 12.0, 0.0> <0.0, 9.0*ft, 0.0> bR-4 } difference { union { #local p2 = 0.0; #while(p2 < 360) prism { 11.9, 12.1*ft, 8 (bR-4.75)* <(bR-4)*cosd(-22.50000001), (bR-4)*sind(-22.50000001)+0.75*sind(60)> <(bR-7), 0> <(bR-4)*cosd(22.50000001), (bR-4)*sind(22.50000001)-0.75*sind(60)> (bR-4.75)* (bR+3)* (bR+3)* (bR-4.75)* rotate (p2)*y } #local p2 = p2 + 45; #end } difference { cylinder { 11.85*y, 12.11*ft*y bR-5 } isosurface { function { f_helix1(x, y, z, 4, 3.0/ft, 0.375*ft, bR-2.0, 1.0, 1.0, 0) } max_gradient 1.017 threshold 0 accuracy 0.001 contained_by { box { <-2.0*ft, 0.0, -2.0*ft> <2.0*ft, 10.0*ft, 2.0*ft> } } max_trace 2 } } } } prism { 9.0*ft, 9.25*ft, 9 #local p1 = -22.5; #while(p1 <= 360) (bR-3)* #local p1 = p1 + 45; #end } #if(TEX) texture { T_Stone11 } #end translate 7.25*ft*z rotate cR*y } prism { 9.25*ft, 9.75*ft, 5 ((7.25*ft)+(bR-3))* ((7.25*ft)+(bR-3))* ((7.25*ft)-(bR-3))* ((7.25*ft)-(bR-3))* ((7.25*ft)+(bR-3))* #if(TEX) texture { Black_Granite } #end rotate (-22.5+cR)*y } #local cR = cR + 45.0; #end // The Circle #local pR = -18.0; #while(pR < 360) object { Spiral_Column(T_Stone28) finish { ambient 0.0 diffuse 0.43 reflection { 0.007, 0.01 fresnel on } } photons { pass_through reflection on refraction on } translate <0.0, 3.5*ft, 27.0*ft> rotate pR*y } #local pR = pR + 36.0; #end object { union { difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.0*ft, 0.0> 9.0*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 8.875*ft } difference { cylinder { <0.0, -0.03125*ft, 0.0> <0.0, 0.015625*ft, 0.0> 8.96875*ft } cylinder { <0.0, -0.046875*ft, 0.0> <0.0, 0.03125*ft, 0.0> 8.90625*ft } } } difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.0*ft, 0.0> 5.625*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 5.5*ft } difference { cylinder { <0.0, -0.03125*ft, 0.0> <0.0, 0.015625*ft, 0.0> 5.59375*ft } cylinder { <0.0, -0.046875*ft, 0.0> <0.0, 0.03125*ft, 0.0> 5.53125*ft } } } difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.0, 0.0> 9.0 } cylinder { <0.0, -0.046875*ft, 0.0> <0.0, 0.015625, 0.0> 8.25 } } difference { union { difference { cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.0, 0.0> 4.125*ft } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.0*ft } } #declare B = 0 ; #while(B < 360) intersection { union { difference { box { <0.0, -0.09375*ft, 0.0> <0.125*ft, 0.0, -8.0*ft> rotate -18.0*y translate 4.0625*ft*z } box { <0.0, -0.125*ft, 0.0> <-0.15625*ft, 0.03125*ft, 8.03125*ft> } box { <0.0, -0.125*ft, 0.0> <-0.15625*ft, 0.03125*ft, -8.03125*ft> rotate 36.0*y } } difference { box { <0.0, -0.09375*ft, 0.0> <-0.125*ft, 0.0, -8.0*ft> rotate 18.0*y translate 4.0625*ft*z } box { <0.0, -0.125*ft, 0.0> <0.15625*ft, 0.03125*ft, 8.03125*ft> } box { <0.0, -0.125*ft, 0.0> <0.15625*ft, 0.03125*ft, -8.03125*ft> rotate -36.0*y } } } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.0*ft } rotate B*y } #declare B = B + 72.0 ; #end } difference { cylinder { <0.0, -0.0625*ft, 0.0> <0.0, 0.015625*ft, 0.0> 4.09375*ft } cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.03125*ft } } #declare C = 0 ; #while(C < 360) intersection { union { box { <0.03125*ft, -0.0625*ft, 0.0> <0.09375*ft, 0.03125*ft, -8.15625*ft> rotate -18.0*y } box { <-0.03125*ft, -0.0625*ft, 0.0> <-0.09375*ft, 0.03125*ft, -8.15625*ft> rotate 18.0*y } translate 4.0625*ft*z rotate C*y } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.0625*ft, 0.0> 4.09375*ft } } #declare C = C + 72.0 ; #end } } texture { T_Silver_5E } photons { target reflection on refraction on } } // Blood - Fills the grooves of the Inner Circle. object { union { difference { cylinder { <0.0, -0.0625*ft, 0.0> <0.0, -0.0625, 0.0> 4.09375*ft } cylinder { <0.0, -0.09375*ft, 0.0> <0.0, 0.0, 0.0> 4.03125*ft } } difference { cylinder { <0.0, -0.03125*ft, 0.0> <0.0, -0.0625, 0.0> 5.59375*ft } cylinder { <0.0, -0.046875*ft, 0.0> <0.0, 0.0, 0.0> 5.53125*ft } } difference { cylinder { <0.0, -0.03125*ft, 0.0> <0.0, -0.0625, 0.0> 8.96875*ft } cylinder { <0.0, -0.046875*ft, 0.0> <0.0, 0.0, 0.0> 8.90625*ft } } cylinder { <0.0, -0.078125*ft, 0.0> <0.0, -0.0546875*ft, 0.0> 8.625 } #declare D = 0 ; #while(D < 360) intersection { union { box { <0.03125*ft, -0.0625*ft, 0.0> <0.09375*ft, -0.0625, -8.15625*ft> rotate -18.0*y } box { <-0.03125*ft, -0.0625*ft, 0.0> <-0.09375*ft, -0.0625, -8.15625*ft> rotate 18.0*y } translate 4.0625*ft*z rotate D*y } cylinder { <0.0, -0.125*ft, 0.0> <0.0, 0.03125*ft, 0.0> 4.09375*ft } } #declare D = D + 72.0 ; #end } pigment { color rgbf <0.45, 0.0, 0.0, 0.625> } finish { diffuse 0.3 ambient 0.0 specular 0.4 roughness 0.001 reflection { 0.3 fresnel on } } normal { bumps 1 scale 0.1 } interior { fade_distance 0.015625 fade_power 2 } photons { target reflection on refraction on } } #include "soulfire.inc" object { SoulFire } #declare CRot = 0 ; #while(CRot < 360 ) object { Witch_Candle(6.0, 2.0, on) translate 4.375*ft*z rotate CRot*y } #declare CRot = CRot + 72.0 ; #end #include "FireBowl.inc" #declare fProt = 36.0 ; #while(fProt < 360 ) FireBowl(transform { translate 22.25*ft*z rotate fProt*y }, on) #declare fProt = fProt + 36.0 ; #end