// Persistence of Vision Raytracer Version 2.0 // This data includes 1 Wall, 1 large 2nd floor column, // & 2 smaller ionic colums. // b-snake.dat is the lower ctds twist that goes around the // door openings. // s-head3.dat is the head & top twist of creature // turn.dat is ctds data that creates the ionic turned capitals. // panther.dat is csg of panther figure. // Modified for use in stereo pair. Two of the GIF // images have been replaced with single colors, and a third column // was added to the bottom row. // // Three cameras are included, the original, and two for stereo. #include "colors.inc" #include "shapes.inc" #include "marble.inc" #include "b-snake.inc" #include "turn.inc" #include "panther.inc" #include "s-head3.inc" #declare pink = color red 1.0 green 0.5 blue 0.5 /* original camera */ camera { location <-50, 80, -220> direction <0, 0, 1.5> up <0, 1, 0> right <4/3, 0, 0> } /* camera for left eye, render at 768 x 480 or similar aspect ratio */ /* camera { location <-61, 80, -220> direction <0, 0, 1.4> up <0, 1, 0> right <1.6, 0, 0> } */ /* camera for right eye, render at 768 x 480 or similar aspect ratio */ /* camera { location <-39, 80, -220> direction <0, 0, 1.4> up <0, 1, 0> right <1.6, 0, 0> } */ /*-------------- WORLD WALLS ---------------------------------*/ sphere { <0, 0, 0>, 50000 texture { pigment { MidnightBlue } finish { ambient 1.0 diffuse 0.0 } } } /*---------------LIGHT #1------------------------------------*/ light_source { <700, 150, -500> color White } /*--------------LIGHT #2-------------------------------------*/ light_source { <-4000, 100, -1000> color White } /**********************************************************************/ /*-----------BASE OF COLUMN A / TOP FLOOR-------------------*/ #declare base_a = union { sphere { <0, 0, 0>, 1 scale <13, 5.5, 13> } sphere { <0, 0, 0>, 1 scale <11, 3, 11> translate 4*y } cylinder { <0,0,0>, y, 1 scale <10, 4, 10> translate 5*y } texture { marble1 scale <9, 6, 4> finish { ambient 0.5 diffuse 1 } } texture { marble4 scale <7, 12, 9> rotate <0, 0, -40> finish { diffuse 1.0 phong 0.6 phong_size 50 } } rotate 40*y bounded_by { cylinder { <0,0,0>, y, 1 scale <13.5, 16, 13.5> translate -4*y } } } /*-----------MOTIF TILE WORK--------------------*/ #declare motif1 = cylinder { <0,0,0>, y, 1 scale <9.5, 7, 9.5> texture { pigment { image_map { gif "congo4.gif" } scale <19, 7, 1> translate <-9.5, 0, -1> } finish { ambient 0.3 diffuse 0.9 phong 0.6 } } } /*----------- COLUMN A -------------------------------------------------*/ #declare column_a = cylinder { <0,0,0>, y, 1 scale <9.3, 50, 9.3> texture { marble1 finish { crand 0.01 ambient 0.2 diffuse 0.8 } scale <16, 4, 4> } texture { marble2 scale <10, 6, 5> rotate -30*z finish { diffuse 1.0 } } texture { marble4 finish { phong 0.6 phong_size 45 } scale <8, 15, 5> rotate <0, 0, 50> } rotate 10*y } /*-----------COMBINE COLUMN & BASE --------------------------------*/ #declare top_column = union { object { base_a } object { motif1 translate 9*y } object { column_a translate 12*y } bounded_by { cylinder { <0,0,0>, y, 1 scale <13.5, 50, 13.5> translate -3*y } } } /*--------------------TOP FLOOR---------------------------------------*/ #declare floor = object { Cube scale <100, 1, 50> texture { pigment { Salmon } finish { ambient 0.2 diffuse 0.5 phong 1.0 phong_size 10 } } } /*----------- ROUND CORNER ----------------------------*/ #declare sp1 = sphere { <0, 0, 0>, 2 } #declare round_cap = object { union { object { sp1 translate <-100, 0, -50> } object { sp1 translate <-100, 0, 50> } object { sp1 translate <100, 0, -50> } object { sp1 translate <100, 0, 50> } cylinder { <0,0,0>, x, 1 scale <200, 2, 2> translate <-100, 0, -50> } cylinder { <0,0,0>, z, 1 scale <2, 2, 100> translate <-100, 0, -50> } } texture { marble1 scale <50, 10, 40> finish { ambient 0.4 diffuse 0.9 } } texture { marble2 scale <40, 5, 20> rotate <0, 0, 40> } texture { marble4 scale <20, 20, 20> rotate <0, 0, -40> finish { phong 0.6 phong_size 20 } } bounded_by { object { Cube scale <103, 25, 53> translate <0, 0, 0> } } } /*--------------- ONE DENTILE ----------------------------------*/ #declare d1 = object { Cube scale <1, 1.5, 2> } #declare cornice = union { object { Cube scale <103, 0.5, 53> translate <0, 2.5, 0> } object { Cube scale <103, 1, 53> translate <0, -2, 0> } object { Cube scale <101, 2, 51> translate <0, 0, 0> } texture { marble1 scale <10, 6, 4> finish { ambient 0.4 diffuse 1.0 } } texture { marble2 scale <7, 6, 4> rotate <0, 0, 40> } texture { marble4 scale <3, 6, 5> rotate <0, 0, -40> finish { phong 0.6 phong_size 20 } } bounded_by { object { Cube scale <104, 3.5, 54> translate <0, 0, 0> } } } /*-------------------- ROW OF DENTILES ---------------*/ #declare dentile_a = union { object { d1 translate -50*x } object { d1 translate -45*x } object { d1 translate -40*x } object { d1 translate -35*x } object { d1 translate -30*x } object { d1 translate -25*x } object { d1 translate -20*x } object { d1 translate -15*x } object { d1 translate -10*x } object { d1 translate -5*x } object { d1 translate 0*x } object { d1 translate 50*x } object { d1 translate 45*x } object { d1 translate 40*x } object { d1 translate 35*x } object { d1 translate 30*x } object { d1 translate 25*x } object { d1 translate 20*x } object { d1 translate 15*x } object { d1 translate 10*x } object { d1 translate 5*x } texture { marble1 scale <10, 6, 4> finish { ambient 0.4 diffuse 0.9 } } texture { marble2 scale <7, 6, 4> rotate <0, 0, 40> } texture { marble4 scale <3, 6, 4> rotate <0, 0, -40> finish { phong 0.6 phong_size 20 } } bounded_by { object { Cube scale <60, 2, 2> translate <0, 0, 0> } } } /*-------------- COMBINE CORNICE, FLOOR, CAP & DENTILES -----------*/ #declare top_floor = union { object { floor translate <0, 9, 0> } object { round_cap translate <0, 7, 0> } object { cornice translate <0, 3, 0> } object { dentile_a translate <-50, 4, -52> } object { dentile_a translate < 50, 4, -52> } bounded_by { object { Cube scale <105, 8, 57> translate <0, 8, 0> } } } /*------------------MAKE AN IONIC CAPIAL---------------------------*/ #declare turn = object { s1 rotate -90*x } /*--------------- 1/2 SECTION OF CAP ------------------------------*/ #declare cap_a = union { sphere { <0, 0, 0>, 1 scale <7, 2, 7> translate <0, 1, 0> } cylinder { <0,0,0>, y, 1 scale <6, 5, 6> translate <0, 2, 0> } sphere { <0, 0, 0>, 1 scale <8, 3, 8> translate <0, 8, 0> } cylinder { <0,0,0>, y, 1 scale <8, 2, 8> translate <0, 8, 0> } texture { marble1 finish { ambient 0.4 diffuse 1.0 } scale <5, 13, 4> } texture { marble4 finish { diffuse 1.0 phong 0.6 phong_size 20 } scale <5, 7, 3> rotate <0, 0, 50> } bounded_by { cylinder { <0,0,0>, y, 1 scale <8.5, 11, 8.5> translate <0, -0.5, 0> } } } /*-------------- THE OTHER 1/2-----------------------------*/ #declare cap_b = union { cylinder { <0,0,0>, y, 1 scale <1.2, 8, 1.2> translate <1, 0, -4> } cylinder { <0,0,0>, y, 1 scale <1.2, 8, 1.2> translate <-1, 0, -4> } cylinder { <0,0,0>, y, 1 scale <1.2, 4, 1.2> translate <-2, 0, -4> } cylinder { <0,0,0>, y, 1 scale <1.2, 4, 1.2> translate <2, 0, -4> } object { Cube scale <10, 2, 8> translate <0, 10, 2> } object { Cube scale <7, 4, 4> translate <0, 4, 0> } cylinder { <0,0,0>, z, 1 scale <4.5, 4.5, 8> translate <-6, 4, -4> } cylinder { <0,0,0>, z, 1 scale <4.5, 4.5, 8> translate <6, 4, -4> } texture { marble1 finish { ambient 0.4 diffuse 1.0 } scale <5, 13, 4> } texture { marble4 finish { diffuse 1.0 phong 0.6 phong_size 20 } scale <5, 7, 3> rotate 50*z } bounded_by { object { Cube scale <10.5, 7, 10.5> translate <0, 7, 0> } } } /*-----------2 HALFS & 2 TURNS MAKE A WHOLE ------------------------*/ #declare capital = union { object { cap_a translate <0, 0, 0> } object { cap_b translate <0, 10, 0> } object { turn translate <-6, 14, -4> } object { turn rotate <0, 180, 0> translate <6, 14, -4> } bounded_by { object { Cube scale <11, 13, 11> translate <0, 13, 0> } } } /*--------------MAKE COLUMN-------------------*/ /*-----------MOTIF TILE WORK--------------------*/ #declare motif2 = cylinder { <0,0,0>, y, 1 scale <6.5, 8, 6.5> texture { pigment { image_map { gif "congo4.gif" } scale <13, 8, 1> translate <-6.5, 0, -1> } finish { ambient 0.3 diffuse 0.9 phong 1.0 } } } #declare column_b = cylinder { <0,0,0>, y, 1 scale <6, 54, 6> texture { marble1 finish { ambient 0.4 diffuse 0.8 crand 0.1 } scale <9, 30, 18> } texture { marble2 scale <10, 18, 5> rotate <0, 0, -30> finish { diffuse 1.0 } } texture { marble4 finish { diffuse 0.9 phong 0.8 phong_size 45 } scale <4, 15, 5> rotate 50*z } } /*-----------THE COMPLETE BOTTOM COLUMN---------------------------------*/ #declare bottom_column = union { object { capital translate <0, 58, 0> } object { motif2 translate <0, 50, 0> } object { column_b translate <0, 0, 0> } bounded_by { cylinder { <0,0,0>, y, 1 scale <12, 85, 12> translate <0, 0, 0> } } } /*---------------------START LOWER WALLS-----------------------------*/ /*----------- ABOVE DOOR SECTION OF WALL -----------------------------*/ #declare brick_wall = object { Cube scale <30, 6, 3> texture { marble1 finish { ambient 0.2 diffuse 0.9 } scale <20, 30, 4> } texture { marble2 scale <20, 9, 5> finish { diffuse 1.0 } rotate -30*z } texture { marble4 finish { phong 0.6 phong_size 25 } scale <18, 18, 3> rotate 50*z } } /*-------------- ARCH SECTION OF WALL --------------------------------*/ #declare top_wall = object { difference { object { Cube scale <30, 10, 3> translate <0, 0, 0.01> } object { Cylinder_Z scale <13, 13, 1> translate <0, -10, 0> } } texture { marble1 finish { ambient 0.2 diffuse 0.9 } scale <30, 20, 4> } texture { marble2 scale <26, 16, 5> finish { diffuse 1.0 } rotate -30*z } texture { marble4 finish { phong 0.6 phong_size 25 } scale <15, 27, 2> rotate 50*z } bounded_by { object { Cube scale <30, 10, 2> translate <0, 0, 0> } } } /*------------------ TRIM ---------------------------------------------*/ #declare molding_2 = union { difference { cylinder { <0,0,0>, z, 1 scale <16, 16, 12> translate <0, 0, -6> } object { Cylinder_Z scale <13, 13, 1> } } object { Cube scale <10, 2, 6> translate <-21, -2, 0> } object { Cube scale <10, 2, 6> translate <21, -2, 0> } object { Cube scale <31, 1, 6> translate <0, 17, 0> } texture { marble1 finish { ambient 0.5 diffuse 1.0 } scale <15, 3, 4> } texture { marble4 finish { phong 0.8 phong_size 15 ambient 0.6 } scale <15, 7, 6> rotate 50*z } bounded_by { object { Cube scale <31, 13, 4> translate 9*y } } } #declare motif3 = object { Cube scale <9.5, 5, 3.1> texture { pigment { image_map { gif "congo4.gif" } scale <19, 10, 1> translate <-9.5, -5, -1> } finish { ambient 0.3 diffuse 0.9 phong 1.0 } } } /*----------WALLS FLANKING DOOR WAY -----------------------------------*/ #declare low_wall = object { Cube scale <9, 22, 3> texture { marble1 finish { ambient 0.3 diffuse 0.9 } scale <15, 20, 7> } texture { marble2 scale <10, 25, 3> finish { diffuse 1.0 } rotate <0, 0, -30> } texture { marble4 finish { phong 0.8 phong_size 25 ambient 0.5 } scale <8, 16, 3> rotate 50*z } } /*----------COMPOSITE THE WALL------------------------------*/ #declare wall = union { object { low_wall translate <-21, 22, 0> } object { low_wall translate <21, 22, 0> } object { motif3 translate <-21, 42, 0> } object { motif3 translate <21, 42, 0> } object { molding_2 translate <0, 50, 0> } object { top_wall translate <0, 60, 0> } object { brick_wall translate <0, 74, 0> } bounded_by { object { Cube scale <32, 41, 4> translate <0, 41, 0> } } } /*--------CREATE INSIDE BACK WALL-----------------------*/ object { Cube scale <95, 55, 1> texture { marble1 finish { ambient 0.2 diffuse 0.9 } scale <40, 30, 5> } texture { marble2 scale <30, 60, 3> rotate -30*z } texture { marble4 finish { phong 0.8 phong_size 25 } scale <30, 20, 3> rotate 50*z } translate <0, 15, 10> } /*----------*** PUT UP THE WALLS ****--------------------*/ object { top_column rotate 10*y scale 1.9 translate <-30, 94, -25> } object { top_floor translate <-10, 80, 0> } object { bottom_column scale <1.3, 1, 1.3> translate <-100, 0, -40> } object { bottom_column scale <1.3, 1, 1.3> translate <-30, 0, -40> } object { bottom_column scale <1.3, 1, 1.3> translate <40, 0, -40> } object { wall translate <5, 0, -32> } object { wall translate <-65, 0, -32> } /*---------------------BACKDROP---------------------------------*/ object { Cube scale <2000, 1500, 1> texture { pigment { Maroon } // image_map { <1.0 -1.0 0> gif "sky1.gif" } // Optional sky map // scale <4000 3000 2> translate <-2000 -1500 -2> finish { ambient 0.2 diffuse 0.6 } } texture { pigment { gradient y color_map { [0.0 0.3 color Salmon color BlueViolet filter 0.3] [0.3 1.0 color BlueViolet filter 0.3 color Black filter 0.2] } scale <4000, 3000, 1> translate <0, -1500, 0> } finish { ambient 1.0 diffuse 0.0 } } scale <1, 1, 1> translate <0, 0, 2000> } /*------------------- CREATURE & MOTHER-IN-LAW -------------------------*/ object { panther rotate -20*y scale 1.2 translate <-70, 89.5, -10> } object { lizard scale <1, 0.9, 1> rotate -10*z translate <-33, 16, -20> } #declare snake = union { object { top } object { head scale <1.9, 1.6, 1.6> rotate <0, -90, -90> translate <23, 0, -13> } rotate <-90, -180, -90> } object { snake translate <-4, 87, -68> } // end-of-file