//****************************************************************************************** //* Sakktábla //* Készítette: Gaf //* Web: www.raytracer.hu //* 2008.05.18 //****************************************************************************************** #default { texture { pigment { color rgb 1 } finish { diffuse 1 ambient 0 montecarlo { mc_diffuse { 1 3 1 } mc_use_cosine_distrib } } } } #include "colors.inc" #include "shapes.inc" #declare CameraFrom = <6.75, 5.25, -9>; // Kamera honnan néz #declare CameraAt = <2, .2, -3>; // Kamera hová néz #declare CameraAngle = 49; // Kamera látószöge #declare LightFrom = <-17, 10.4, 10.4>; // Fényforrás helye global_settings { max_trace_level 10 montecarlo { mc_rand_seed mc_pixel_refresh_ratio 0.50 // mc_colour_clip 1.0 mc_max_diffuse_bounce 5 mc_russian_roulette_prob 0.50 mc_russian_roulette_threshold 0.1 mc_dof { mc_focal_distance 14 mc_lens_radius 0.025 } } } camera { location CameraFrom look_at CameraAt angle CameraAngle right 4/3*x } sphere { 0,1 texture { pigment { color rgb 1 } finish { diffuse 0 ambient 1 } } hollow on scale 10000 } sphere { LightFrom, 5 montecarlo { mc_portal { 3 1 3 1 } } color rgb <1, 1, 1> finish { diffuse 0 ambient 30 } } #local DarkPlayerTexture = texture { pigment { rgbf <1,0.8392,0,0.98> } finish { specular .5 roughness .009 diffuse 0 reflection { .2 *.28,1 *.28 fresnel on } conserve_energy } }; #declare DarkPlayerInterior = interior { ior 1.51714 }; #local LightPlayerTexture = texture { pigment { rgbf <1,1,1,0.98> } finish { specular .5 roughness .009 diffuse 0 reflection { .2 *.28,1 *.28 fresnel on } conserve_energy } }; #declare LightPlayerInterior = interior { ior 1.51714 }; // *** FIGURÁK *** // Testek modellezése #declare Figura_Paraszt = lathe { bezier_spline 20, <0, 9>, <3, 9>, <2.5, 5>, <1, 5>, <1, 5>, <1, 2>, <2, 0>, <3, 0>, <3, 0>, <3.5, 0>, <3.5, -0.5>, <3, -0.5>, <3, -0.5>, <3, -1>, <3.5, -2>, <3, -2>, <3, -2>, <1, -2>, <1, -2>, <0, -2> translate <0,2,0> }; #declare Figura_Futo = lathe { bezier_spline 24, <0, 12>, <3, 12>, <0.7, 11>, <0.7, 9>, <0.7, 9>, <3, 9>, <2.5, 5>, <1, 5>, <1, 5>, <1, 2>, <2, 0>, <3, 0>, <3, 0>, <3.5, 0>, <3.5, -0.5>, <3, -0.5>, <3, -0.5>, <3, -1>, <3.5, -2>, <3, -2>, <3, -2>, <1, -2>, <1, -2>, <0, -2> translate <0,2,0> }; #declare Figura_Bastya = lathe { bezier_spline 28, <0, 9>, <2, 9>, <0, 9>, <2.5, 9>, <2.5, 9>, <3, 5.5>, <2.75, 7>, <3, 5.5>, <3, 5.5>, <1.25, 5>, <3, 5.6>, <1.25, 5>, <1.25, 5>, <1.25, 2>, <2, 0>, <3, 0>, <3, 0>, <3.5, 0>, <3.5, -0.5>, <3, -0.5>, <3, -0.5>, <3, -1>, <3.5, -2>, <3, -2>, <3, -2>, <1, -2>, <1, -2>, <0, -2> translate <0,2,0> }; #declare Figura_Queen = lathe { bezier_spline 28, <0, 14>, <2, 14>, <2.5, 12>, <0.5, 12>, <0.5, 12>, <5, 12>, <1.25,10>, <1.25, 6>, <1.25, 6>, <1.5, 6>, <3.5, 4>, <1.25, 4>, <1.25, 4>, <1.25, 2>, <2, 0>, <3, 0>, <3, 0>, <3.5, 0>, <3.5, -0.5>, <3, -0.5>, <3, -0.5>, <3, -1>, <3.5, -2>, <3, -2>, <3, -2>, <1, -2>, <1, -2>, <0, -2> translate <0,2,0> }; #declare Figura_King = merge { object { lathe { bezier_spline 28, <0.5, 12>, <0.6, 12>, <0, 12>, <0.5, 12>, <0.5, 12>, <5, 12>, <1.25,10>, <1.25, 6>, <1.25, 6>, <1.5, 6>, <3.5, 4>, <1.25, 4>, <1.25, 4>, <1.25, 2>, <2, 0>, <3, 0>, <3, 0>, <3.5, 0>, <3.5, -0.5>, <3, -0.5>, <3, -0.5>, <3, -1>, <3.5, -2>, <3, -2>, <3, -2>, <1, -2>, <1, -2>, <0, -2> translate <0,2,0> } } cylinder { <0,12,0>, <0,16.5,0>, 0.5} cylinder { <-1,15.5,0>, <1,15.5,0>, 0.5}}; #declare Figura_Horse = difference { object { merge { object { lathe { bezier_spline 12, <3, -2>, <1, -2>, <1, -2>, <0, -2>, <3, -2>, <4, -2>, <4, -1>, <3, -1>, <3, -1>, <2, -1>, <1.5, 1>, <1.5, 3> translate <0,2,0> } } sphere { <0, 6,0>, 3 } sphere { <0, 11,0>, 3 } cylinder { <0, 6,0>, <0, 11,0>, 3 }} } cylinder { <21, 14,-4>, <21, 14, 4>, 20 } // Jobb oldal leválasztása cylinder { <-21, 14,-4>, <-21, 14, 4>, 20 } // Bal oldal leválasztása cylinder { <-4, 15,-3.7>, <4, 15, -3.7>, 3.4 } // orrnyereg kifaragása cylinder { <-4, 14,-1>, <4, 14, -1>, 1 } // Fülek faragása cylinder { <-4, 15.5, 4>, <4, 15.5, 4>, 4 } // Tarkó kifaragása cylinder { <-4, 10,-0.6>, <4, 10, -0.6>, .5 } // Az álla... box { <-4, 10.5, 2>, <4, 9.5, -2> rotate <-15,0,0> translate <0, -0.2, 0> } // Mellkas 1 box { <-4, 10.5, 2>, <4, 9.5, -2> rotate <-45,0,0> translate <0, 1.5, 5> } // Mellkas 2 cylinder { <-4, 9,-3>, <4, 9, -3>, 1 } // Bugfix a mellkason cylinder { <0, 14,-4>, <0, 14, 4>, .5 }}; // Fülek szétválasztása // Komplett testek definiálása (modell + anyag) #declare Sotet_Paraszt = object { Figura_Paraszt texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Sotet_Futo = object { Figura_Futo texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Sotet_Bastya = object { Figura_Bastya texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Sotet_Queen = object { Figura_Queen texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Sotet_King = object { Figura_King texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Sotet_Horse = object { Figura_Horse texture { DarkPlayerTexture } interior { DarkPlayerInterior } scale .1 }; #declare Vilagos_Paraszt = object { Figura_Paraszt texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; #declare Vilagos_Futo = object { Figura_Futo texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; #declare Vilagos_Bastya = object { Figura_Bastya texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; #declare Vilagos_Queen = object { Figura_Queen texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; #declare Vilagos_King = object { Figura_King texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; #declare Vilagos_Horse = object { Figura_Horse texture { LightPlayerTexture } interior { LightPlayerInterior } scale .1 }; // *** SZÍNPAD *** // Sötét bábúk object { Sotet_Paraszt translate <3.5, 0, 1.5> } object { Sotet_Paraszt translate <2.5, 0, 2.5> } object { Sotet_Paraszt translate <1.5, 0, 2.5> } object { Sotet_Paraszt translate <0.5, 0, 1.5> } // E6 object { Sotet_Paraszt translate <-0.5, 0, 0.5> } // D5 object { Sotet_Paraszt translate <2.5, -0.3, -5.5> } // Kiütve object { Sotet_Paraszt translate <-2.5, 0, 2.5> } object { Sotet_Paraszt translate <-3.5, 0, 2.5> } object { Sotet_Horse rotate <0,-30,0> translate <-1.5, 0, 1.5> } // C6 object { Sotet_Horse rotate <0,-15,0> translate <2.5, 0, 1.5> } // G6 object { Sotet_Bastya translate <-3.5, 0, 3.5> } object { Sotet_Bastya translate <3.5, 0, 3.5> } object { Sotet_Futo translate <-0.5, 0, 2.5> } // D7 object { Sotet_Futo translate <1, -0.3, -5.7> } // Kiütve object { Sotet_Queen translate <-3.5, 0, 0.5> } // A5 object { Sotet_King translate <0.5, 0, 3.5> } // Világos bábúk object { Vilagos_Paraszt translate <3.5, 0, -1.5> } // H4 object { Vilagos_Paraszt translate <2.5, 0, -1.5> } // G4 object { Vilagos_Paraszt translate <1.5, 0, -2.5> } object { Vilagos_Paraszt translate <0.5, 0, 0.5> } // E5 object { Vilagos_Paraszt translate <3.6, -0.3, -5.52> } // Kiütve object { Vilagos_Paraszt translate <-1.5, 0, -1.5> } // C3 object { Vilagos_Paraszt translate <-2.5, 0, -2.5> } object { Vilagos_Paraszt translate <-3.5, 0, -2.5> } object { Vilagos_Horse rotate <0,110,0> translate <5.6, -0.3, -3.5> } // Kiütve object { Vilagos_Horse rotate <0,195,0> translate <1.5, 0, -1.5> } // F3 object { Vilagos_Bastya translate <-3.5, 0, -3.5> } object { Vilagos_Bastya translate <3.5, 0, -3.5> } object { Vilagos_Futo translate <-0.5, 0, -1.5> } // D3 object { Vilagos_Futo translate <0.5, 0, -1.5> } // E3 object { Vilagos_Queen translate <-0.5, 0, -3.5> } object { Vilagos_King translate <0.5, 0, -3.5> } #include "woods.inc" #declare darkwood = texture { T_Wood8 pigment { turbulence 0.1 } finish { ambient .0 diffuse 1 reflection 0.025 montecarlo { mc_reflect { 1 3 1 250 } } } scale 2 } #declare lightwood = texture { pigment { color rgb <160*255/160,145*255/160,110*255/160>/255 } finish { ambient .0 diffuse 0.8 reflection 0.010 montecarlo { mc_reflect { 1 3 1 100 } } } normal{granite 0.4 scale 0.3} } #macro board_sq(p) object { Round_Box_Union(<-1.01,-0.01,-1.01>, < 0.01,-.25,0.01>, .01) scale 0.975 translate p } #end #macro boardwhite() #local i=0;#local j=0; #while (i<8) #local j=0; #while (j<8) #if (mod(i+j,2)) board_sq(<-3+j,0,-3+i>) #end #local j=j+1; #end #local i=i+1; #end #end #macro boardblack() #local i=0;#local j=0; #while (i<8) #local j=0; #while (j<8) #if (!mod(i+j,2)) board_sq(<-3+j,0,-3+i>) #end #local j=j+1; #end #local i=i+1; #end #end union { boardwhite() texture { lightwood } } union { boardblack() texture { darkwood } } object { Wire_Box_Union(<-4.02, -0.02, -4.02>, < 4.02, -1, 4.02>, .01) texture { darkwood } translate <0,0,0>} difference { box { <-4.5, -0.02, -4.5>, < 4.5, -1, 4.5> } box { <-4.01, 1, -4.01>, < 4.01, -2, 4.01> } texture { darkwood }} object { Wire_Box_Union(<-4.6, -0.05, -4.6>, < 4.6, -1, 4.6>, .1) texture { darkwood } translate <0,0,0>} box { <-4.8, -0.1, -4.8>, < 4.8, -2, 4.8> texture { darkwood } } object { Wire_Box_Union(<-4.9, -0.1, -4.9>, < 4.9, -0.3, 4.9>, .1) texture { darkwood } translate <0,0,0>} cylinder { <0, -.3, 0>, <0, -2, 0>, 20 texture { T_Wood8 pigment { turbulence 0.2 } scale 2 rotate 42*y } texture { pigment { color rgb<1,1,1> filter 0.7 } finish { ambient .0 diffuse .0 reflection .0 } } }