home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #7
/
amigamamagazinepolishissue1998.iso
/
varia
/
povray3
/
povray3_fpu
/
pov3demo
/
showoff
/
whiltile.pov
< prev
Wrap
Text File
|
1997-12-12
|
5KB
|
178 lines
// Persistence Of Vision raytracer version 3.0 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
#version 3.0
global_settings { assumed_gamma 1.0 }
#include "colors.inc"
#include "woods.inc"
// ------------------------------------------------------------------
// set viewer's position in the scene
camera {
location <0.0, 22.0, -24.0> // position of camera <X Y Z>
direction 4.0*z // which way are we looking <X Y Z>
up y // which way is +up <X Y Z>
right 4/3*x // which way is +right <X Y Z> and aspect ratio
look_at <0.0, 0.0, -1.0> // point center of view at this point <X Y Z>
}
// ------------------------------------------------------------------
// 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 { ior 1.8 refraction 1 roughness 0.001 }
}
// 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 }
#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}