home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / graphics / ftpovscn / 4 / tank.pov < prev   
Text File  |  1994-08-02  |  9KB  |  295 lines

  1. // POV-Ray 2.0 scene file by Dan Farmer  1994.
  2. // 
  3. // This image uses two imagemaps that are not included here due to their
  4. // size.  One can be created easily enough, the other can either be 
  5. // downloaded CompuServe (see comments below) or you could change this 
  6. // file to use a procedural texture like granite.
  7. //
  8. #include "colors.inc"
  9. #include "shapes.inc"
  10. #include "textures.inc"
  11.  
  12. #declare Aluminum  = texture {
  13.    pigment { color rgb   <0.55, 0.5, 0.45> }
  14.    finish {
  15.         specular 0.85
  16.         roughness 0.01
  17.         ambient 0.1
  18.         diffuse 0.65
  19.         reflection 0.45
  20.         metallic
  21.         brilliance 1.5
  22.     }
  23. }
  24.  
  25. camera {
  26. //   omnimax
  27.    location <-0.2, 0.6, -1.75>
  28.    direction z*0.65
  29.    right x* 4/3
  30.    look_at <0, 0.2, 0>
  31. }
  32.  
  33. // Atmospheric Stuff
  34. background { color SkyBlue }
  35.  
  36. // A greenish fog for that underwater look
  37. #declare Fog_Color =  color red 0.25 green 0.5 blue 0.5
  38. fog { color Fog_Color  distance 8}
  39.  
  40. // Light source same color as fog
  41. light_source { <-15,30,-25> color Fog_Color }
  42.  
  43.  
  44. // Drive wheels
  45. #declare Wheel =
  46. difference {
  47.     object { Disk_Z scale 0.23 }
  48.     object { Disk_Z scale 0.20 translate -z*0.30 }
  49.     pigment { 
  50.         radial
  51.         color_map {
  52.             [0.00 0.10 color DarkOliveGreen color DarkOliveGreen]
  53.             [0.10 0.40 color DarkOliveGreen color Gray10 ]
  54.             [0.40 0.60 color Gray10 color Gray10 ]
  55.             [0.60 0.90 color Gray10 color DarkOliveGreen ]
  56.             [0.90 1.00 color DarkOliveGreen color DarkOliveGreen ]
  57.         }
  58.         frequency 120
  59.         rotate x*90
  60.     }
  61.     finish { Shiny metallic }  
  62. }
  63.  
  64. // A rectangular lug for the treads.  Use trans/rot to position around
  65. // Consists of a box at 9 o'clock that is rotated both up and down 
  66. // around 180 degrees.  0.02 units high, 0.04 units thick, 0.5 units 
  67. // wide.
  68. #declare Lug1 = 
  69. union {
  70.     box { <-0.28, -0.02, -0.25> <-0.25, 0.02, 0.25> }
  71.     union {
  72.         cone { <-0.30, 0, -0.22>, 0 <-0.28, 0, -0.22>, 0.015 }
  73.         cone { <-0.30, 0, -0.11>, 0 <-0.28, 0, -0.11>, 0.015 }
  74.         cone { <-0.30, 0,  0.00>, 0 <-0.28, 0,  0.00>, 0.015 }
  75.         cone { <-0.30, 0,  0.11>, 0 <-0.28, 0,  0.11>, 0.015 }
  76.         cone { <-0.30, 0,  0.22>, 0 <-0.28, 0,  0.22>, 0.015 }
  77.         texture { Aluminum }
  78.     }
  79. }
  80. #declare Half_Wheel = 
  81. // Round part of tread
  82. union {
  83.     difference {
  84.         object { Disk_Z scale <0.25, 0.25, 0.25> }   
  85.         object { Disk_Z scale <0.23, 0.23, 0.251> }  
  86.         clipped_by { 
  87.             box { <-0.30, -0.30, -0.251> <0, 0.30, 0.251> }  // clip right half
  88.         }
  89.     }
  90.     object { Lug1 rotate -z * 80.0}
  91.     object { Lug1 rotate -z * 60.0}
  92.     object { Lug1 rotate -z * 40.0}
  93.     object { Lug1 rotate -z * 20.0}
  94.     object { Lug1 rotate  z * 00.0}
  95.     object { Lug1 rotate  z * 20.0}
  96.     object { Lug1 rotate  z * 40.0}
  97.     object { Lug1 rotate  z * 60.0}
  98.     object { Lug1 rotate  z * 80.0}
  99. }
  100.  
  101. // This lug is used for the flat portions of the tread.  Same 
  102. // dimensions as the previous ones, but these face upward
  103. // and are merely translated across the length of the tread.
  104. #declare Lug2 = 
  105. union {
  106.     box { <-0.02, 0.0, -0.25> <0.02, 0.05, 0.25> }
  107.     union {
  108.         cone { <0.0, 0.05, -0.22 >, .0150 <0, 0.07, -0.22>, 0 }
  109.         cone { <0.0, 0.05, -0.11 >, .0150 <0, 0.07, -0.11>, 0 }
  110.         cone { <0.0, 0.05,  0.00 >, .0150 <0, 0.07,  0.00>, 0 }
  111.         cone { <0.0, 0.05,  0.11 >, .0150 <0, 0.07,  0.11>, 0 }
  112.         cone { <0.0, 0.05,  0.22 >, .0150 <0, 0.07,  0.22>, 0 }
  113.         texture { Aluminum }
  114.     }
  115. }
  116.  
  117. #declare Tread_Flat = 
  118. union {    
  119.     box { <-0.9,  0.00, -0.25> <0.9, 0.02, 0.25> }
  120.     object { Lug2 translate -x*0.8 }
  121.     object { Lug2 translate -x*0.6 }
  122.     object { Lug2 translate -x*0.4 }
  123.     object { Lug2 translate -x*0.2 }
  124.     object { Lug2 translate  x*0.0 }
  125.     object { Lug2 translate  x*0.2 }
  126.     object { Lug2 translate  x*0.4 }
  127.     object { Lug2 translate  x*0.6 }
  128.     object { Lug2 translate  x*0.8 }
  129. }
  130.  
  131. #declare Tread =
  132. union {
  133.     object { Half_Wheel              translate -x*0.9 }
  134.     object { Half_Wheel rotate y*180 translate  x*0.9 }
  135.     object { Tread_Flat              translate  y*0.23 }
  136.     object { Tread_Flat rotate x*180 translate -y*0.23 }
  137.  
  138.     pigment { Gray35 }
  139.     normal { wrinkles 1.15 scale 0.015 }
  140.  
  141.     scale 1.002   // avoid coincident surfaces w/wheels
  142. }
  143.  
  144. #declare Axel =
  145. union {
  146.     object { Disk_Z scale <0.035, 0.035, 0.975> }
  147.     sphere { <0, 0, 0>, 0.075 }
  148.     pigment { Gray70 }
  149.     finish { Shiny metallic }  
  150. }
  151.  
  152. #declare Hub =
  153. union {
  154.     object { Disk_Z scale <0.05, 0.05, 0.20> }
  155.     object { Disk_Z scale <0.10, 0.10, 0.15> }
  156.     pigment { DarkGreen }
  157.     finish { Shiny metallic }  
  158. }
  159.  
  160. #declare Wheel_Assembly =
  161. union {
  162.     object { Hub  translate -x*0.9 }
  163.     object { Wheel translate -x*0.9 }
  164.     object { Hub                   }
  165.     object { Wheel                  }
  166.     object { Wheel translate  x*0.9 }
  167.     object { Hub  translate  x*0.9 }
  168. }
  169.  
  170. #declare Single_Tread_Unit = 
  171. union {
  172.     object { Wheel_Assembly }
  173.     object { Tread }
  174. }
  175.  
  176. #declare Full_Tread_Unit = 
  177. union {
  178.     object { Single_Tread_Unit translate -z*0.75 }
  179.     object { Axel  translate -x*0.9 }
  180.     object { Axel                   }
  181.     object { Axel  translate  x*0.9 }
  182.     object { Single_Tread_Unit translate  z*0.75 }
  183. }
  184.  
  185. // Overbright spotlight color is used for both the actual
  186. // spotlight, and for the cone color.
  187. #declare Spotlight_Color = color red 1.5 green 1.5 blue 1.25
  188.  
  189. // This is an spotlight "covered" with a faded gradient cone that
  190. // depicts the beam as it passes through the fog.  The overbright
  191. // color will tend to wash out some colors, but with a very realistic
  192. // effect.
  193. #declare Spotlight_Cone =
  194. light_source { <0,0,0> color Spotlight_Color
  195.     spotlight
  196.     point_at <1, -0.1, 0> 
  197.     radius  30
  198.     falloff 45
  199.  
  200.     looks_like {
  201.         union {
  202.             union {  // The stalk-like unit that the light sits on
  203.                 sphere { <0,0,0>, 0.025 scale <1.5, 0.75, 1>}  
  204.                 cylinder { <0.0, 0, 0>, <-0.1, -0.5, 0>, 0.01 }
  205.                 texture { Aluminum } 
  206.             }
  207.             // The spotlight cone 
  208.             cone { <0,0,0>, 0.01 <3, 0, 0> 0.5
  209.                 pigment { 
  210.                     gradient x
  211.                     color_map {
  212.                     [0.00 color Spotlight_Color  filter 0.80 ]
  213.                     [0.25 color Spotlight_Color  filter 0.95 ]
  214.                     [0.50 color White            filter 1.00 ]
  215.                     }
  216.                 scale 3
  217.                 }
  218.                 finish { Luminous }
  219.             }
  220.         }
  221.         no_shadow
  222.     }
  223. }
  224.  
  225. #declare Body =
  226. intersection {
  227.     sphere { <0, 0, 0> 1 } 
  228.     cylinder { <-1, 0, 0> <1, 0, 0>, 0.40 inverse }
  229.  
  230.     scale <1.2, 0.25, 0.5>  
  231.     translate y*0.15
  232.     texture { 
  233.         Aluminum 
  234. /*
  235.         normal {
  236.             // panels.gif is simply a random assortment of rectangles
  237.             // and blotches done with a paint program.  Easy to 
  238.             // duplicate. 640x480 resolution.   
  239.             bump_map { gif "panels.gif" 
  240.                 bump_size -8
  241.                 interpolate 4 
  242.                 map_type Cylinder_Map
  243.             }
  244.             rotate z*90
  245.         }
  246. */
  247.  
  248.     }
  249. }
  250.  
  251. #declare Ocean =
  252. // The water surface
  253. plane { y, 3
  254.     pigment { red 0.65 green 0.85 blue 1.0 filter 0.95 }
  255.     finish { refraction 1.0 ior 1.1 reflection 0.7 }
  256.     normal { 
  257.         bumps 0.5
  258.         scale 0.1
  259.     }
  260.     translate <5, 0, -10>
  261. }
  262. #declare Ocean_Floor =
  263. plane { y, -0.3
  264.     finish { ambient 0.05 diffuse 0.5 }
  265. /*
  266.     pigment { 
  267.         // lava1b.gif is a tiled map of gravel found on CompuServe's
  268.         // GRAPHDEV forum.
  269.         image_map { gif "d:\images\maps\lava1b.gif" } 
  270.         rotate x*90
  271.         rotate y*33
  272.         scale 0.3
  273.     } 
  274. */
  275. }
  276.  
  277. #declare Environment = union {
  278.     object { Ocean }
  279.     object { Ocean_Floor rotate y*50}
  280. }
  281.  
  282. #declare Tank =
  283. union {
  284.     object { Full_Tread_Unit  }
  285.     object { Spotlight_Cone rotate -z*05 rotate  y*65 translate <0.75, 0.5, -0.30>}
  286.     object { Spotlight_Cone rotate -z*20 rotate -y*65 translate <0.75, 0.5,  0.30>}
  287.     object { Body }
  288. }
  289. union {
  290.     object { Environment }
  291.     object { Tank rotate y*50 }
  292.     object { Tank rotate y*90 translate <-2, 0, 6>}
  293.     object { Tank rotate y*130 translate <2, 0, 9>}
  294. }
  295.