Utilisation : Les liens ne sont pas apparents. Pour obtenir des informations sur un mot clé, cliquez-le dans le script !
// Persistence Of Vision raytracer version 3.5 sample file. // File: WhilTile.POV 10/01/95 // Auth: Eduard Schwan with modifications by Dan Farmer // Desc: A tile floor, using the 'while' loop and 'if' statements // to create a unique pattern automatically. // Enable this next line to use a simpler test shape for debugging // #declare DO_SIMPLE_SHAPE = 1; global_settings {assumed_gamma 1.0 max_trace_level 5} #include "colors.inc" #include "woods.inc" // ---------------------------------- // set viewer's position in the scene camera { location <0.0, 22.0,-24.0> // position of cameradirection 4.0*z // which way are we looking up y // which way is +up right 4/3*x // which way is +right and aspect ratio look_at <0.0, 0.0,-1.0> // point center of view at this point} // ----------------------------------- // create a regular point light source light_source {<10, 10,-10> color rgb 1 translate <-20, 40,-20>} #declare TileShape = #ifdef (DO_SIMPLE_SHAPE) // simpler shape for debugging sphere {0, 1 scale <0.5, 0.1, 0.5> translate 0.1*y} #else // real tile shape intersection { box {-1, 1} // square tile cylinder {-2*x, 2*x, 0.9} // rounded edges along X axis cylinder {-2*z, 2*z, 0.9} // rounded edges along Z axis sphere {0, 2.0 translate 2.6*y inverse} // concave top surface // sphere {0, 1.1} // rounded corners // bounded_by {box {-1, 1}} scale <0.5, 0.2, 0.5> // flatten the tile down on Y axis // translate 0.2*y // move it up so its bottom is on origin } #end default { texture {pigment {rgb 1} finish {ambient 0.2 reflection 0.2 specular 0.7}} } // light tinted glass #declare CrystalTex = texture { pigment {rgbf <1.00, 0.70, 0.70, 0.95>} finish {roughness 0.001} } #declare CrystalInt = interior {ior 1.8} // Black slate marble with white strata #declare SlateTex = texture { pigment { marble turbulence 0.8 rotate 60*y color_map { [0.10 rgb 0.01] [0.12 rgb 0.70] [0.15 rgb 0.01] [0.20 rgb 0.01] [0.30 rgb <0.9, 0.7, 0.6>] [0.50 rgb 0.01] } scale 0.4 } finish {reflection 0.2} } // green crackle #declare CrackleTex = texture { pigment {color rgb <0.1, 0.5, 0.1>} normal {crackle 0.5 turbulence 0.2 scale 0.3} } // brown/blue pinwheel radial pattern #declare PinwheelTex = texture { pigment { radial frequency 8 color_map { [0.00 blue 0.4] [0.50 blue 0.4] [0.60 rgb <0.5, 0.6, 0.9>] } } } #declare MSetTex = texture { pigment { mandel 100 color_map { [0.0 color MidnightBlue] [0.2 color Yellow] [0.6 color Scarlet] [0.8 color Magenta] [1.0 color Gray10] } scale .25 rotate x*90 translate x*0.225 // rotate y*45 } } // --------------------------------------------------- // declare the set of tiles as a union built by a loop #declare Max = 16; // # of tiles across and down #declare XMax = Max/2; #declare ZMax = Max/2; #declare ZCount = -ZMax; #declare Tile_Set = union { #while (ZCount <= ZMax) #declare XCount = -XMax; #while (XCount <= XMax) object { TileShape #if (XCount=0 & ZCount=0) // Center tile texture {MSetTex} #else #if (abs(XCount) = abs(ZCount)) // An "X" pattern of tiles, diagonal through origin texture {CrystalTex} interior {CrystalInt} #else #if (abs(XCount)*abs(ZCount) < XMax) // A "fat plus" pattern, centered on origin texture { SlateTex rotate (XCount+ZCount)*10*y translate <-XCount, 0,-ZCount> // alter texture per tile } #else #if (abs(mod(XCount,3)) = abs(mod(ZCount,2))) // An alternating sprinkle of remaining tiles texture { CrackleTex translate <-XCount, 0,-ZCount> // alter texture per tile } #else texture {PinwheelTex} #end #end #end #end translate <XCount, 0, ZCount> } #declare XCount = XCount+1; #end // Inner X loop #declare ZCount = ZCount+1; #end // Outer Z loop } // -------------------- // make the tile object object {Tile_Set rotate y*30}
Et voici ce que nous obtenons :
