home *** CD-ROM | disk | FTP | other *** search
/ Computerspiele Selbermachen / computerspieleselbermachen.iso / pov / drums.inc < prev    next >
Text File  |  1993-09-27  |  6KB  |  239 lines

  1. // Persistence Of Vision Raytracer version 2.0 sample file.
  2.  
  3. // Include file for DRUMS.POV by Dan Farmer
  4.  
  5. #declare Brass = colour red 0.88 green 0.84 blue 0.10
  6. #declare ChromeBlue = colour red 0.84 green 0.89 blue 1.00
  7.  
  8. #declare BrassFinish = finish {
  9.    reflection 0.15
  10.    brilliance 10.0
  11.    metallic
  12.    phong 0.75
  13.    phong_size 50
  14. }
  15.  
  16. #declare Chrome = finish { Mirror }
  17.  
  18. #declare VeryShiny = finish {
  19.    ambient 0.05  diffuse 0.75
  20.    phong 1.0
  21.    phong_size 100.0
  22.    brilliance 5
  23.    reflection 0.5
  24. }
  25.  
  26. // The old Disk_X definition
  27. #declare Disk_X = cylinder { <0, 0, 0>, <1, 0, 0>, 1 }
  28.  
  29. #declare X_Tube = difference {
  30.    cylinder { -x, x, 1.0 }
  31.    cylinder { -1.1*x, 1.1*x, 0.97 }
  32. }
  33.  
  34. #declare Cymbal = union {            /* Overall radius of 6 units */
  35.    sphere {                             /* Dome */
  36.       <0, 0, 0>, 1
  37.       scale <2.0, 0.75, 2.0>
  38.       translate 1*y
  39.    }
  40.    sphere {
  41.       <0, 0, 0>, 1 
  42.       scale <6.0, 1.0, 6.0>
  43.    }
  44.  
  45.    finish { BrassFinish }
  46.    pigment { Brass }
  47.  
  48.    clipped_by { plane { y, 0.25 inverse } }
  49.    bounded_by { sphere { <0, 0, 0>, 6.0 } }
  50. }
  51.  
  52. #declare Tensioner1 =  union {
  53.    object {
  54.       Disk_X
  55.       translate -0.5*x
  56.       scale <0.5, 0.04, 0.02>
  57.    }
  58.  
  59.    intersection {
  60.       sphere { <0, 0, 0>, 1 scale <0.25, 0.1, 0.06> }
  61.       plane { x, 0 }
  62.       bounded_by { sphere { <0, 0, 0>, 0.25 } }
  63.    }
  64.  
  65.    bounded_by { sphere { <0, 0, 0>, 0.6 } }
  66. }
  67.  
  68. #declare Tensioner = union {
  69.    object { Tensioner1 translate 0.5*x }
  70.    object { Tensioner1 rotate 180*z translate -0.5*x }
  71.  
  72.    translate 1.03*z        /* Position for rotation around drum cylinder */
  73.  
  74.    finish { Chrome }
  75.    pigment { ChromeBlue }
  76. }
  77.  
  78.  
  79. #declare Drum = union {
  80.    sphere {                                       /* Top (and rear) Drumhead */
  81.       <0, 0, 0>, 1
  82.       scale <0.001, 1.0, 1.0>
  83.       translate 0.75*x
  84.  
  85.       finish {
  86.          ambient 0.1
  87.          diffuse 0.7
  88.          specular 0.2
  89.          roughness 0.01
  90.       }
  91.       pigment { White }
  92.    }
  93.  
  94.    object {                                       /* Chrome edge band #1 */
  95.       X_Tube
  96.       scale <0.05, 1.025, 1.0>
  97.       translate -0.8*x
  98.  
  99.       texture {
  100.          finish { Chrome }
  101.          pigment { ChromeBlue }
  102.       }
  103.    }
  104.  
  105.    intersection {                         /* Drum body */
  106.       cylinder {
  107.          -1.1*x, 1.1*x, 1.0
  108.  
  109.          finish { VeryShiny }
  110.          pigment { White }
  111.       }
  112.  
  113.       cylinder {
  114.          -1.1*x, 1.1*x, 0.97         /* Inside of the drum cylinder */
  115.          inverse
  116.  
  117.          pigment { Tan }
  118.          finish {
  119.             ambient 0.05
  120.             diffuse 0.5
  121.          }
  122.       }
  123.  
  124.       box { <-1, -1, -1>, <1, 1, 1>
  125.           finish { Chrome }
  126.           pigment { ChromeBlue }
  127.       }
  128.  
  129.       bounded_by { box { <-1, -1, -1>, <1, 1, 1> } }
  130.  
  131.       scale <0.8, 1.0, 1.0>
  132.    }
  133.  
  134.    object {                                       /* Chrome edge band #2 */
  135.       X_Tube
  136.       scale <0.05, 1.025, 1.0>
  137.       translate 0.8*x
  138.       texture {
  139.          finish { Chrome }
  140.          pigment { ChromeBlue }
  141.       }
  142.    }
  143.  
  144.    /* Now a bunch of (10) tensioners */
  145.  
  146.    object { Tensioner rotate 000*x }
  147.    object { Tensioner rotate 036*x }
  148.    object { Tensioner rotate 072*x }
  149.    object { Tensioner rotate 108*x }
  150.    object { Tensioner rotate 144*x }
  151.    object { Tensioner rotate 180*x }
  152.    object { Tensioner rotate 216*x }
  153.    object { Tensioner rotate 252*x }
  154.    object { Tensioner rotate 288*x }
  155.    object { Tensioner rotate 324*x }
  156.  
  157.    bounded_by { cylinder { -1.25*x, 1.25*x, 1.25 } }
  158. }
  159.  
  160. #declare BassDrum = union {
  161.    object { Drum }
  162.  
  163.    sphere {             /* Front Drumhead for Bass */
  164.       <0, 0, 0>, 1
  165.       scale <0.001, 1.0, 1.0>
  166.       translate -0.75*x
  167.  
  168.       finish {
  169.          ambient 0.2
  170.          diffuse 0.7
  171.          specular 0.5
  172.          roughness 0.05
  173.       }
  174.       pigment { White filter 0.25 }
  175.    }
  176.  
  177.    scale <8.0, 10.0, 10.0>
  178. }
  179.  
  180. /********************** not used at this time
  181. #declare SnareDrum = object {
  182.     Drum
  183.     rotate 90.0*z
  184.     scale <5.0, 4.0, 5.0>
  185. }
  186. ***********************/
  187.  
  188. #declare TomTom = object {
  189.    Drum
  190.    rotate 90.0*z
  191.    scale <5.0, 5.0, 5.0>
  192. }
  193.  
  194. /* Combine a base and a pair of tomtoms into a half-set */
  195. /* Object is still centered at 0,0 at this point */
  196. #declare HalfSet = union {
  197.    object {              /* Right bass  */
  198.       BassDrum
  199.       rotate -90.0*y     /* Turn it on its end */
  200.    }
  201.  
  202.    object {
  203.       TomTom
  204.       rotate +30.0*x                   /* Lean it towards drummer */
  205.       translate 16.0*y                 /* Raise it up */
  206.       translate -7.0*x                 /* Move it left */
  207.    }
  208.  
  209.    object {
  210.       TomTom
  211.       rotate +30.0*x                   /* Lean it towards drummer */
  212.       translate 16.0*y                 /* Raise it up */
  213.       translate +7.0*x                 /* Move it right */
  214.    }
  215.  
  216.    union {         /* tomtom bracket */
  217.       object {
  218.          Disk_X                         /* Horizontal bar */
  219.          translate -0.5*x
  220.          scale <4, 0.25, 0.25>          /* Fits between tomtoms */
  221.          translate 16.0*y               /* Raise to top of vertical bar*/
  222.       }
  223.  
  224.       sphere { <0, 0, 0>, 1 translate <-4, 16, 0> scale <0.5, 1, 1> }
  225.       sphere { <0, 0, 0>, 1 translate < 4, 16, 0> scale <0.5, 1, 1> }
  226.  
  227.       object {                   /* Vertical bar */
  228.          Disk_Y
  229.          scale <0.30, 6.0, 0.30>
  230.          translate <0.0, 10.0, 0.0>
  231.       }
  232.  
  233.       sphere { <0, 0, 0>, 1 scale <1.25, 0.5, 1.25> translate 10*y }
  234.    }
  235.  
  236.    finish { Mirror }
  237.    pigment { White }
  238. }
  239.