home *** CD-ROM | disk | FTP | other *** search
/ Chestnut's Multimedia Mania / MM_MANIA.ISO / graphics / povscn20 / piece1.pov < prev    next >
Text File  |  1993-09-27  |  12KB  |  499 lines

  1. // Persistence Of Vision raytracer version 2.0 sample file.
  2.  
  3. // piece I: 
  4. //          by Truman Brown 11/91
  5. //          Close-up of a museum piece in the Woild Museum
  6.  
  7. // The lighting is intentionally dim when the image is rendered.
  8. // You can enhance the image using PicLab's gamma, brightness, and
  9. // contrast command when you post-process the image.
  10.  
  11. #include "colors.inc"
  12. #include "textures.inc"
  13. #include "shapes.inc"
  14.  
  15. camera {
  16.    location  <-36.0, 29.0, -70.0>
  17.    direction <  0.0,  0.0,  2.0  >
  18.    up        <  0.2,  0.8,  0.0  >
  19.    right     <  4/3,  0.0,  0.0  >
  20.    look_at   <  0.0, -8.0,  0.0  >
  21. }
  22.  
  23. // ----------------------------------------------------------------------------
  24. // lights
  25. // ----------------------------------------------------------------------------
  26. #declare Light1c =  color red 0.1 green 0.1 blue 0.1
  27. #declare Light2c =  color red 0.2 green 0.2 blue 0.2
  28. #declare Light3c =  color red 0.3 green 0.3 blue 0.3
  29. #declare Light4c =  color red 0.4 green 0.4 blue 0.4
  30. #declare Light5c =  color red 0.5 green 0.5 blue 0.5
  31.  
  32. #declare light1 = light_source { <0.0, 0.0, 0.0>  color Light1c }
  33. #declare light2 = light_source { <0.0, 0.0, 0.0>  color Light2c }
  34. #declare light3 = light_source { <0.0, 0.0, 0.0>  color Light3c }
  35. #declare light4 = light_source { <0.0, 0.0, 0.0>  color Light4c }
  36. #declare light5 = light_source { <0.0, 0.0, 0.0>  color Light5c }
  37.  
  38. union {
  39.    object { light1 translate <  35,  30, -16> }
  40.    object { light3 translate < -25,  40,  20> }
  41.    object { light2 translate < -48,  30, -20> }
  42.    object { light5 translate <  20, -10, -22> }
  43.    pigment { White }
  44. }
  45.  
  46. // ----------------------------------------------------------------------------
  47. // textures
  48. // ----------------------------------------------------------------------------
  49. #declare rod_texture1 =
  50. texture {
  51.    pigment { Firebrick }
  52.    finish {
  53.       specular 0.9
  54.       roughness 0.001
  55.       ambient 0.0
  56.       diffuse 0.5
  57.       reflection 0.25
  58.    }
  59. }
  60.  
  61. #declare loop_texture =
  62. texture {
  63.    pigment { Black }
  64.    finish {
  65.       ambient 0.01
  66.       diffuse 0.45
  67.       specular 1.00
  68.       roughness 0.001
  69.       reflection 0.4
  70.    }
  71. }
  72.  
  73. #declare innertube_texture =
  74. texture {
  75.    pigment { SteelBlue }
  76.    finish {
  77.       ambient 0.05
  78.       diffuse 0.1
  79.       specular 1.00
  80.       roughness 0.001
  81.       reflection 0.90
  82.    }
  83. }
  84.  
  85. #declare balls_texture =
  86. texture {
  87.    pigment { White }
  88.    finish {
  89.       ambient 0.01
  90.       diffuse 0.3
  91.       specular 1.00
  92.       roughness 0.001
  93.       reflection 0.85
  94.    }
  95. }
  96.  
  97. #declare tile1_texture =
  98. texture {
  99.    pigment {
  100.       wood
  101.       turbulence 0.5
  102.       color_map {
  103.          [0.0 0.7  color red 0.93 green 0.710 blue 0.532
  104.          color red 0.98 green 0.810 blue 0.600]
  105.          [0.7 1.01 color red 0.60 green 0.333 blue 0.266
  106.          color red 0.70 green 0.600 blue 0.23]
  107.       }
  108.       rotate 90*y
  109.       scale 5
  110.    }
  111.    finish {
  112.       crand 0.05
  113.       specular 1.0
  114.       roughness 0.001
  115.       ambient 0.05
  116.       diffuse 0.35
  117.       reflection 0.15
  118.    }
  119. }
  120.  
  121. #declare tile2_texture =
  122. texture {
  123.    pigment {
  124.       wood
  125.       turbulence 0.6
  126.       color_map {
  127.          [0.0 0.8  color red 0.42857 green 0.23810 blue 0.04762
  128.          color red 0.42857 green 0.23810 blue 0.04762]
  129.          [0.8 1.01 color red 0.4     green 0.333   blue 0.066
  130.          color red 0.2     green 0.033   blue 0.033]
  131.       }
  132.       scale 7
  133.    }
  134.    finish {
  135.       crand 0.05
  136.       specular 1.0
  137.       roughness 0.001
  138.       ambient 0.01
  139.       diffuse 0.75
  140.       reflection 0.15
  141.    }
  142. }
  143.  
  144. #declare frame_texture =
  145. texture {
  146.    Bronze_Texture
  147.    finish {
  148.       specular 1.0
  149.       roughness 0.001
  150.       ambient 0.11
  151.       diffuse 0.8
  152.       reflection 0.85
  153.    }
  154. }
  155.  
  156. // ----------------------------------------------------------------------------
  157. // torus primatives
  158. // ----------------------------------------------------------------------------
  159. #declare torus1 =
  160. quartic { <
  161.    1.0, 0.0,   0.0,  0.0,   2.0,      /* major radius: 5.0 */
  162.    0.0, 0.0,   2.0,  0.0, -50.5,      /* minor radius: 0.5 */
  163.    0.0, 0.0,   0.0,  0.0,   0.0,      /* outer radius: 5.5 */
  164.    0.0, 0.0,   0.0,  0.0,   0.0,      /* inner radius: 4.5 */
  165.    1.0, 0.0,   0.0,  2.0,   0.0,
  166.    49.5, 0.0,   0.0,  0.0,   0.0,
  167.    1.0, 0.0, -50.50, 0.0, 612.5625 >
  168. }
  169.  
  170. #declare torus2=
  171. quartic { <
  172.    1.0, 0.0,  0.0,  0.0,  2.0,        /* major radius: 0.8 */
  173.    0.0, 0.0,  2.0,  0.0, -1.36,       /* minor radius: 0.2 */
  174.    0.0, 0.0,  0.0,  0.0,  0.0,        /* outer radius: 1.0 */
  175.    0.0, 0.0,  0.0,  0.0,  0.0,        /* inner radius: 0.6 */
  176.    1.0, 0.0,  0.0,  2.0,  0.0,
  177.    1.2, 0.0,  0.0,  0.0,  0.0,
  178.    1.0, 0.0, -1.36, 0.0,  0.36 >
  179. }
  180.  
  181. #declare torus3 =
  182. quartic { <
  183.    1.0, 0.0,    0.0, 0.0,     2.0,     /* major radius: 12.0 */
  184.    0.0, 0.0,    2.0, 0.0,  -296.0,     /* minor radius:  2.0 */
  185.    0.0, 0.0,    0.0, 0.0,     0.0,     /* outer radius: 14.0 */
  186.    0.0, 0.0,    0.0, 0.0,     0.0,     /* inner radius: 10.0 */
  187.    1.0, 0.0,    0.0, 2.0,     0.0,
  188.    280.0, 0.0,    0.0, 0.0,     0.0,
  189.    1.0, 0.0, -296.0, 0.0, 19600.0 >
  190. }
  191.  
  192. #declare torus4 =
  193. quartic { <
  194.    1.0, 0.0,   0.0, 0.0,    2.0,       /* major radius: 7.0 */
  195.    0.0, 0.0,   2.0, 0.0,  -98.5,       /* minor radius: 0.5 */
  196.    0.0, 0.0,   0.0, 0.0,    0.0,       /* outer radius: 7.5 */
  197.    0.0, 0.0,   0.0, 0.0,    0.0,       /* inner radius: 6.5 */
  198.    1.0, 0.0,   0.0, 2.0,    0.0,
  199.    97.5, 0.0,   0.0, 0.0,    0.0,
  200.    1.0, 0.0, -98.5, 0.0, 2376.5625 >
  201. }
  202.  
  203. // ----------------------------------------------------------------------------
  204. // piece definitions
  205. // ----------------------------------------------------------------------------
  206. #declare halfring =
  207. object {
  208.    torus1
  209.    rotate 90*x
  210.    clipped_by {
  211.       plane { -y, 0 }
  212.    }
  213.    texture { rod_texture1 }
  214.    bounded_by {
  215.       sphere { <0, 0, 0>, 5.51  }
  216.    }
  217.    translate -12*x
  218. }
  219.  
  220. #declare halfring_array =
  221. union {
  222.    object { halfring rotate  -10*y  }
  223.    object { halfring rotate  -40*y  }
  224.    object { halfring rotate -100*y  }
  225.    object { halfring rotate -130*y  }
  226.    object { halfring rotate -190*y  }
  227.    object { halfring rotate -220*y  }
  228.    object { halfring rotate -280*y  }
  229.    object { halfring rotate -310*y  }
  230.  
  231.    bounded_by {
  232.       sphere { <0, 0, 0>, 17.51 }
  233.    }
  234. }
  235.  
  236. #declare quarterring =
  237. object {
  238.    torus1
  239.    rotate 90*x
  240.    clipped_by {
  241.       plane { y, 0  }
  242.       plane { x, 0  }
  243.    }
  244.    texture {
  245.       rod_texture1
  246.    }
  247.    bounded_by {
  248.       sphere { <-2.75, -2.75, 0>, 3.9  }
  249.    }
  250.    translate <-12, 0, 0>
  251. }
  252.  
  253. #declare quarterring_array =
  254. union {
  255.    object { quarterring rotate  -10*y  }
  256.    object { quarterring rotate  -40*y  }
  257.    object { quarterring rotate -100*y  }
  258.    object { quarterring rotate -130*y  }
  259.    object { quarterring rotate -190*y  }
  260.    object { quarterring rotate -220*y  }
  261.    object { quarterring rotate -280*y  }
  262.    object { quarterring rotate -310*y  }
  263.    bounded_by {
  264.       sphere { <0, 0, 0>, 17.51  }
  265.    }
  266. }
  267.  
  268. #declare ringball =
  269. sphere {
  270.    <0, -5.0, 0>, 1.0
  271.    texture {
  272.       rod_texture1
  273.    }
  274.    translate <-12, 0, 0>
  275. }
  276.  
  277. #declare ringball_array =
  278. union {
  279.    object { ringball rotate  -10*y  }
  280.    object { ringball rotate  -40*y  }
  281.    object { ringball rotate -100*y  }
  282.    object { ringball rotate -130*y  }
  283.    object { ringball rotate -190*y  }
  284.    object { ringball rotate -220*y  }
  285.    object { ringball rotate -280*y  }
  286.    object { ringball rotate -310*y  }
  287.    bounded_by {
  288.       sphere { <0, 0, 0>, 13.5  }
  289.    }
  290. }
  291.  
  292. #declare pole =
  293. object {
  294.    Disk_Y
  295.    rotate 180*x
  296.    scale <0.5, 20, 0.5>
  297.    translate <5, 0, 0>
  298.  
  299.    texture {
  300.       rod_texture1
  301.    }
  302.    translate <-12, 0, 0>
  303. }
  304.  
  305. #declare pole_array =
  306. union {
  307.    object { pole rotate  -10*y  }
  308.    object { pole rotate  -40*y  }
  309.    object { pole rotate -100*y  }
  310.    object { pole rotate -130*y  }
  311.    object { pole rotate -190*y  }
  312.    object { pole rotate -220*y  }
  313.    object { pole rotate -280*y  }
  314.    object { pole rotate -310*y  }
  315.    bounded_by {
  316.       sphere { <0, -10, 0>, 13.5  }
  317.    }
  318. }
  319.  
  320. #declare blueloop =
  321. object {
  322.    torus2
  323.    rotate 90*z
  324.    texture {
  325.       loop_texture
  326.    }
  327.    bounded_by {
  328.       sphere { <0, 0, 0>, 1.1 }
  329.    }
  330. }
  331.  
  332. #declare blueloop_set =
  333. union {
  334.    object { blueloop translate 5*y rotate 0*z  }
  335.    object { blueloop translate 5*y rotate +90*z  }
  336.    object { blueloop translate 5*y rotate -90*z  }
  337.    bounded_by {
  338.       sphere { <0, 0, 0>, 6.51  }
  339.    }
  340.    translate -12*x
  341. }
  342.  
  343. #declare blueloop_array =
  344. union {
  345.    object { blueloop_set rotate  -10*y  }
  346.    object { blueloop_set rotate  -40*y  }
  347.    object { blueloop_set rotate -100*y  }
  348.    object { blueloop_set rotate -130*y  }
  349.    object { blueloop_set rotate -190*y  }
  350.    object { blueloop_set rotate -220*y  }
  351.    object { blueloop_set rotate -280*y  }
  352.    object { blueloop_set rotate -310*y  }
  353.    bounded_by {
  354.       sphere { <0, 0, 0>, 18.51 }
  355.    }
  356. }
  357.  
  358. #declare basering =
  359. object {
  360.    torus4
  361.    texture {
  362.       rod_texture1
  363.    }
  364.    bounded_by {
  365.       sphere { <0, 0, 0>, 7.6 }
  366.    }
  367.    translate <0, -20.5, 0>
  368. }
  369.  
  370. #declare innertube =
  371. object {
  372.    torus3
  373.    texture {
  374.       innertube_texture
  375.    }
  376.    bounded_by {
  377.       sphere { <0, 0, 0>, 14.1 }
  378.    }
  379. }
  380.  
  381. #declare structurebase =
  382. union {
  383.    object { halfring_array     }
  384.    object { quarterring_array  }
  385.    object { ringball_array     }
  386.    object { blueloop_array     }
  387.    object { pole_array         }
  388.    object { basering   }
  389.    object { innertube  }
  390.    bounded_by {
  391.       sphere { <0, 0, 0>, 22  }
  392.    }
  393. }
  394.  
  395. #declare balls =
  396. sphere {
  397.    <0, 0, 0>, 4.0
  398.    texture {
  399.       balls_texture
  400.    }
  401. }
  402.  
  403. #declare block1 =
  404. intersection {
  405.    object {
  406.       Cube
  407.       scale <10, 1, 10>
  408.    }
  409.    object {
  410.       Cylinder_Y
  411.       scale <6, 1, 6>
  412.       inverse
  413.    }
  414.  
  415.    texture {
  416.       tile1_texture
  417.    }
  418.    bounded_by {
  419.       sphere { <0, 0, 0>, 15 }
  420.    }
  421. }
  422.  
  423. #declare block2 =
  424. intersection {
  425.    object {
  426.       Cube
  427.       scale <10, 1, 10>
  428.    }
  429.    object {
  430.       Cylinder_Y
  431.       scale <6, 1 ,6>
  432.       inverse
  433.    }
  434.  
  435.    texture {
  436.       tile2_texture
  437.    }
  438.    bounded_by {
  439.       sphere { <0, 0, 0>, 15 }
  440.    }
  441. }
  442.  
  443. #declare frame =
  444. object {
  445.    Cube
  446.    scale <21, 1.5, 21>
  447.  
  448.    clipped_by {
  449.       object {
  450.          Cube
  451.          scale <20, 2, 20>
  452.          inverse
  453.       }
  454.    }
  455.    texture { frame_texture  }
  456. }
  457.  
  458. #declare bigtile =
  459. union {
  460.    object { block1 translate < 10, -1,  10>  }
  461.    object { block1 translate <-10, -1, -10>  }
  462.    object { block2 translate <-10, -1,  10>  }
  463.    object { block2 translate < 10, -1, -10>  }
  464.    object { frame  }
  465.  
  466.    bounded_by { box { <-21.1, -2.6, -21.1>, <21.1, 0.6, 21.1> } }
  467. }
  468.  
  469. #declare floor =
  470. object { bigtile }
  471.  
  472. // color debugger
  473. // object { Cylinder_Y scale <3, 1, 3> texture { rod_texture1 } }
  474. // object { Cylinder_X scale <1, 3, 3> texture { rod_texture1 } }
  475.  
  476. //-----------------------------------------------------------------------------
  477. // Put it all together and render it
  478. //-----------------------------------------------------------------------------
  479. object { structurebase  }
  480.  
  481. union {
  482.    object { balls translate <0,  0, 0> }
  483.    object { balls translate <0, -8, 0> }
  484.    object { balls translate <0, -16, 0> }
  485.  
  486.    bounded_by {
  487.       object {
  488.          Cylinder_Y
  489.          scale <4.1, 1, 4.1>
  490.       }
  491.    }
  492. }
  493.  
  494. object {
  495.    floor
  496.    rotate 45*y
  497.    translate -20*y
  498. }
  499.