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

  1. // Persistence Of Vision raytracer version 2.0 sample file.
  2.  
  3. // By Tom Price
  4.  
  5. #include "shapes.inc"
  6. #include "colors.inc"
  7. #include "textures.inc"
  8.  
  9. camera {
  10.    location <0.0, 50.0, -150.0>
  11.    up <0.0, 1.0, 0.0>
  12.    right <4/3, 0.0, 0.0>
  13.    look_at <0.0, 0.0, 0.0>
  14. }
  15.  
  16.  
  17. light_source { <50.0, 150.0, -250.0> colour White }
  18.  
  19. light_source { <-50.0, 150.0, -250.0> colour White }
  20.  
  21.  
  22. /*The Sky*/
  23. sphere {
  24.    <0.0, -49000.0, -200.0>, 50000.0
  25.    inverse
  26.  
  27.    texture { 
  28.       pigment {
  29.          Bright_Blue_Sky
  30.          scale <5000.0, 1000.0, 5000.0>
  31.          quick_color SkyBlue
  32.       }
  33.       finish {
  34.          crand 0.05 
  35.          ambient 0.7
  36.          diffuse 0.0
  37.       }
  38.    }
  39. }
  40.  
  41. /* The wood grain tabletop */
  42. box {
  43.    <-1, -1, -1>, <1, 1, 1>
  44.  
  45.    texture {
  46.       pigment {
  47.          Pine_Wood
  48.          scale <7.0, 1.0, 0.7>
  49.          rotate -30.0*y
  50.       }
  51.       finish {
  52.          ambient 0.1
  53.          diffuse 0.5
  54.          reflection 0.3
  55.          brilliance 3.0
  56.       }
  57.    }
  58.    scale <200.0, 1.0, 200.0>
  59.    translate -42.0*y
  60. }
  61.  
  62.  
  63. /* a salami */
  64. #declare
  65. Salami = union {
  66.    /* the outside skin */
  67.    union {
  68.       cylinder { -10*x, 10*x, 20 }
  69.       sphere { <-10.0, 0.0, 0.0>, 20.0 }
  70.  
  71.       texture {
  72.          pigment { colour red 0.5 green 0.2 blue 0.2 }
  73.          finish {
  74.             crand 0.05
  75.             ambient 0.1
  76.             diffuse 0.8
  77.             reflection 0.2
  78.             brilliance 3.0
  79.             phong 0.3
  80.             phong_size 20.0
  81.          }
  82.       }
  83.    }
  84.  
  85.    cylinder {
  86.       -10*x, 10.01*x, 19.0
  87.  
  88.       texture {
  89.          pigment { Pink }
  90.          finish {
  91.             crand 0.1
  92.             ambient 0.3
  93.             diffuse 0.7
  94.          }
  95.       }
  96.    }
  97. }
  98.  
  99. /* a salami slice */
  100. #declare
  101. Slice = union {
  102.    /* the outside skin */
  103.    cylinder {
  104.       -0.5*x, 0.5*x, 20
  105.  
  106.       texture {
  107.          pigment { colour red 0.5 green 0.2 blue 0.2 }
  108.          finish {
  109.             crand 0.05
  110.             ambient 0.1
  111.             diffuse 0.8
  112.             reflection 0.2
  113.             brilliance 3.0
  114.             phong 0.3
  115.             phong_size 20.0
  116.          }
  117.       }
  118.    }
  119.  
  120.    cylinder {
  121.       -0.51*x, 0.51*x, 19.0
  122.  
  123.       texture {
  124.          finish {
  125.             crand 0.1
  126.             ambient 0.3
  127.             diffuse 0.7
  128.          }
  129.          pigment { Pink }
  130.       }
  131.    }
  132. }
  133.  
  134.  
  135. /* a wedge of cheese*/
  136. #declare
  137. Cheese = intersection {
  138.    object { Cylinder_Y scale <10.0, 1.0, 10.0> }
  139.    plane { y, 20.0 }
  140.    plane { y, 0.0 inverse }
  141.    plane { x, 5.0 rotate 30.0*y }
  142.    plane { x, -5.0 rotate -30.0*y inverse }
  143.  
  144.    object {
  145.       Cylinder_X
  146.       scale <1.0, 1.0, 1.5>
  147.       rotate -20.0*y
  148.       translate 10.0*y
  149.       inverse
  150.    }
  151.  
  152.    object {
  153.       Cylinder_X
  154.       scale <1.0, 2.0, 1.5>
  155.       rotate <0.0, 20.0, -30>
  156.       translate <0.0, 12.0, -4.0>
  157.       inverse
  158.    }
  159.  
  160.    object {
  161.       Cylinder_X
  162.       scale <1.0, 1.0, 1.0>
  163.       translate <0.0, 15.0, -9.0>
  164.       inverse
  165.    }
  166.  
  167.     object {
  168.       Cylinder_X
  169.       scale <1.0, 2.0, 1.5>
  170.       rotate <0.0, -30.0, -30.0>
  171.       translate <0.0, 15.0, 5.0>
  172.       inverse
  173.    }
  174.  
  175.    object { 
  176.       Cylinder_X
  177.       scale <1.0, 1.5, 1.5>
  178.       rotate <0.0, 0.0, -20.0>
  179.       translate <0.0, 7.0, -9.0>
  180.       inverse
  181.    }
  182.  
  183.    object {
  184.       Cylinder_X
  185.       scale <1.0, 1.0, 1.0>
  186.       rotate <0.0, 10.0, 10.0>
  187.       translate <0.0, 10.0, -2.0>
  188.       inverse
  189.    }
  190.       
  191.    object {
  192.       Cylinder_X
  193.       scale <1.0, 1.0, 1.2>
  194.       rotate <0.0, -10.0, 0.0>
  195.       translate <0.0, 5.0, 0.0>
  196.       inverse
  197.    }
  198.  
  199.    object {
  200.       Cylinder_X
  201.       scale <1.0, 1.3, 1.0>
  202.       translate <0.0, 3.0, -3.0>
  203.       inverse
  204.    }
  205.  
  206.    texture {
  207.       pigment { colour red 1.0 green 0.8 blue 0.0 }
  208.       finish {
  209.          crand 0.05
  210.          ambient 0.2
  211.          diffuse 0.8
  212.       }
  213.    }
  214.  
  215.    bounded_by {
  216.       intersection {
  217.          object { Cylinder_Y scale <10.01, 1.0, 10.01> }
  218.          plane { y, 20.01 }
  219.          plane { y, -0.01 inverse }
  220.       }
  221.    }
  222. }
  223.  
  224. /* a slice of cheese*/
  225. #declare
  226. CheeseSlice = intersection {
  227.    object { Cylinder_Y scale <10.0, 1.0, 10.0> }
  228.    plane { y, 20.0 }
  229.    plane { y, 0.0 inverse }
  230.    plane { x, 0.2  }
  231.    plane { x, -0.2 inverse }
  232.  
  233.    object {
  234.       Cylinder_X
  235.       scale <1.0, 1.0, 1.5>
  236.       rotate <0.0, -20.0, 30>
  237.       translate <0.0, 10.0, 0.0>
  238.       inverse
  239.    }
  240.  
  241.    object {
  242.       Cylinder_X
  243.       scale <1.0, 2.0, 1.5>
  244.       rotate <0.0, 20.0, -30>
  245.       translate <0.0, 12.0, -4.0>
  246.       inverse
  247.    }
  248.  
  249.    object {
  250.       Cylinder_X
  251.       scale <1.0, 1.0, 1.0>
  252.       translate <0.0, 15.0, -9.0>
  253.       inverse
  254.    }
  255.  
  256.    object {
  257.       Cylinder_X
  258.       scale <1.0, 2.0, 1.5>
  259.       rotate <0.0, -30.0, -30.0>
  260.       translate <0.0, 15.0, 5.0>
  261.       inverse
  262.    }
  263.  
  264.    object {
  265.       Cylinder_X
  266.       scale <1.0, 1.5, 1.5>
  267.       rotate <0.0, 0.0, -20.0>
  268.       translate <0.0, 7.0, -9.0>
  269.       inverse
  270.    }
  271.  
  272.    object {
  273.       Cylinder_X
  274.       scale <1.0, 1.0, 1.0>
  275.       rotate <0.0, 10.0, 10.0>
  276.       translate <0.0, 10.0, -2.0>
  277.       inverse
  278.    }
  279.  
  280.    object {
  281.       Cylinder_X
  282.       scale <1.0, 1.0, 1.2>
  283.       rotate <0.0, -10.0, 0.0>
  284.       translate <0.0, 3.0, 5.0>
  285.       inverse
  286.    }
  287.  
  288.    object {
  289.       Cylinder_X
  290.       scale <1.0, 1.3, 1.0>
  291.       rotate <0.0, 0.0, 0.0>
  292.       translate <0.0, 2.0, 2.0>
  293.       inverse
  294.    }
  295.  
  296.    texture {
  297.       pigment { colour red 1.0 green 0.8 blue 0.0 }
  298.       finish {
  299.          crand 0.05
  300.          ambient 0.2
  301.          diffuse 0.8
  302.       }
  303.    }
  304.  
  305.    bounded_by {
  306.       intersection {
  307.          object { Cylinder_Y scale <10.01, 1.0, 10.01> }
  308.          plane { y, 20.01 }
  309.          plane { y, -0.01 inverse }
  310.          plane { x, 0.3 }
  311.          plane { x, -0.3 inverse }
  312.       }
  313.    }
  314. }
  315.  
  316. /* An oval glass dish */
  317. #declare
  318. Dish = union {
  319.    intersection {
  320.       sphere { <0, 0, 0>, 1 scale <100.0, 25.0, 25.0> }
  321.       sphere { <0, 0, 0>, 1 scale <95.0, 24.0, 24.0> inverse }
  322.       plane { y, 0.0 }
  323.       plane { y, -5.0 inverse }
  324.    }
  325.  
  326.    intersection {
  327.       object { Cylinder_Y scale <95.0, 1.0, 24.0> }
  328.       plane { y, -4.0 }
  329.       plane { y, -5.0 inverse }
  330.    }
  331.  
  332.    texture {
  333.       pigment { Clear }
  334.       finish {
  335.          ambient 0.1
  336.          diffuse 0.8
  337.          refraction 0.95
  338.          ior 1.5
  339.          reflection 0.05
  340.          brilliance 2.0
  341.       }
  342.    }
  343.  
  344.    bounded_by {
  345.       intersection {
  346.          object { Cylinder_Y scale <100.01, 1.0, 25.01> }
  347.          plane { y, 0.01 }
  348.          plane { y, -5.01 inverse }
  349.       }
  350.    }
  351. }
  352.  
  353. /* a slice of bread */
  354. #declare
  355. BreadSlice = union {
  356.    union {
  357.       box { <-10, -1, -10>, <10, 1, 10> }
  358.       intersection {
  359.          object {
  360.             Cylinder_Y
  361.             scale <11.0, 1.0, 7.0>
  362.             translate <0.0, 0.0, 10.0>
  363.          }
  364.          plane { y, 1.0 }
  365.          plane { y, -1.0 inverse }
  366.       }
  367.  
  368.       texture {
  369.          pigment { colour red 0.4 green 0.3 blue 0.1 }
  370.          finish {
  371.             crand 0.05
  372.             ambient 0.3
  373.             diffuse 0.7
  374.             reflection 0.1
  375.             brilliance 2.0
  376.          }
  377.       }
  378.    }
  379.  
  380.    union {
  381.       box { <-9.5, -1.01, -9.5>, <9.5, 1.01, 9.5> }
  382.       intersection {
  383.          object {
  384.             Cylinder_Y
  385.             scale <10.5, 1.0, 6.5>
  386.             translate <0.0, 0.0, 10.0>
  387.          }
  388.          plane { y, 1.01 }
  389.          plane { y, -1.01 inverse }
  390.       }
  391.  
  392.       texture {
  393.          pigment { colour red 0.7 green 0.6 blue 0.45 }
  394.          finish {
  395.             crand 0.1
  396.             ambient 0.3
  397.             diffuse 0.7
  398.          }
  399.       }
  400.    }
  401.  
  402.    bounded_by { box { <-10.1, -1.1, -10.1>, <10.1, 1.0, 10.1> } }
  403. }    
  404.  
  405. /* Now to put the scene together*/
  406. union {
  407.    object {
  408.       Dish
  409.       scale <0.7, 1.0, 1.2>
  410.       translate <0.0, -36.0, -25.0>
  411.    }
  412.  
  413.    object {
  414.       Salami
  415.       rotate 35.0*y
  416.       translate <-30.0, -20.0, -20.0>
  417.    }
  418.  
  419.    object {
  420.       Cheese
  421.       scale 2.0
  422.       rotate 25.0*y
  423.       translate <30.0, -40.0, -25.0>
  424.    }
  425.  
  426.    translate 25.0*z
  427.    rotate -15.0*y
  428.    translate <-35.0, 0.0, 20.0>
  429. }
  430.  
  431. /* now a sandwich */
  432. union {
  433.    object {
  434.       Slice
  435.       rotate 90.0*y
  436.       rotate 90.0*x
  437.       translate <45.0, -33.0, -35.0>
  438.    }
  439.  
  440.    object {
  441.       CheeseSlice
  442.       scale <1.0, 2.0, 2.0>
  443.       rotate -90.0*y
  444.       rotate 90.0*x
  445.       translate -16.0*z
  446.       rotate 30.0*y
  447.       translate <45.0, -35.0, -35.0>
  448.    }
  449.  
  450.    object {
  451.       BreadSlice
  452.       scale <1.6, 2.0, 1.0>
  453.       rotate -150.0*y
  454.       translate <45.0, -38.0, -35.0>
  455.    }
  456.  
  457.    object {
  458.       BreadSlice
  459.       scale <1.6, 2.0, 1.0>
  460.       rotate -150.0*y
  461.       translate <45.0, -29.0, -35.0>
  462.    }
  463.  
  464.    translate <0.0, 15.0, 10.0>
  465. }
  466.  
  467. /*spotlight on the sandwich*/
  468. intersection {
  469.    object { Cylinder_Y scale <7.5, 1.0, 7.5> }
  470.    object { Cylinder_Y scale <7.4, 1.0, 7.4> inverse }
  471.    plane { y, 50.0 }
  472.    plane { y, 0.0 inverse }
  473.  
  474.    translate <45.0, 100.0, -25.0>
  475.  
  476.    texture {
  477.       pigment { White }
  478.       finish {
  479.          ambient 0.3
  480.          diffuse 0.7
  481.       }
  482.    }
  483. }
  484.  
  485. light_source { <45.0, 145.0, -25.0> colour White }
  486.  
  487. object {
  488.    Slice
  489.    rotate 90.0*y
  490.    rotate 65.0*x
  491.    translate <-30.0, 25.0, 45.0>
  492. }
  493.  
  494. object {
  495.    Slice
  496.    rotate 90.0*y
  497.    rotate 60.0*x
  498.    translate <35.0, 25.0, 25.0>
  499. }
  500.  
  501. object {
  502.    CheeseSlice
  503.    scale <1.0, 2.0, 2.0>
  504.    rotate -90.0*y
  505.    rotate 50.0*x
  506.    translate <-20.0, 35.0, 30.0>
  507. }
  508.  
  509. object {
  510.    CheeseSlice
  511.    scale <1.0, 2.0, 2.0>
  512.    rotate -90.0*y
  513.    rotate 70.0*x
  514.    translate <65.0, 15.0, 35.0>
  515. }
  516.  
  517. object {
  518.    BreadSlice
  519.    scale <1.6, 2.0, 1.0>
  520.    rotate <-40.0, -60.0, 0.0>
  521.    translate <-60.0, 25.0, 35.0>
  522. }
  523.  
  524. object {
  525.    BreadSlice
  526.    scale <1.6, 2.0, 1.0>
  527.    rotate <60.0, 50.0, 0.0>
  528.    translate <70.0, 0.0, 30.0>
  529. }
  530.