home *** CD-ROM | disk | FTP | other *** search
/ Hot Stuff 2 / hot_stuff_2.zip / hot_stuff_2 / PROGRAMS / POVRAY / POVDOC.ZIP / POVRAY.DOC < prev    next >
Text File  |  1992-07-18  |  275KB  |  7,073 lines

  1.        
  2.  
  3.  
  4.  
  5.                Persistence of Vision Ray Tracer (POV-Ray)
  6.                               Version 1.0
  7.                              July 18, 1992
  8.                                    
  9.           
  10.        Introduction.............................................5
  11.        Program Description -- What is Ray Tracing?..............5
  12.        Which Version of POV-Ray Should You Use?.................7
  13.             IBM-PC and compatibles..............................7
  14.             Apple Macintosh.....................................7
  15.             Commodore Amiga.....................................7
  16.             UNIX and other systems..............................8
  17.             All Versions........................................8
  18.        Where to find POV-Ray files..............................8
  19.             Computer Art Forum on CompuServe....................9
  20.             PC Graphics area on America On-Line.................9
  21.             You Can Call Me Ray BBS in Chicago..................9
  22.             The Graphics Alternative BBS in Oakland.............9
  23.             Internet............................................9
  24.        Quick Start..............................................9
  25.        Installing POV-Ray.......................................9
  26.        Using Sample Scenes......................................10
  27.             Command Line Parameters.............................12
  28.        Beginning Tutorial.......................................19
  29.        Your First Image.........................................19
  30.        Phong Highlights.........................................22
  31.        Simple Textures..........................................23
  32.        More Shapes..............................................24
  33.        Quadric Shapes...........................................24
  34.        Scene Description Language Reference.....................25
  35.             Comments............................................25
  36.             Include Files.......................................26
  37.             Float...............................................27
  38.             Vector..............................................27
  39.             Declare.............................................27
  40.             What can be declared?...............................30
  41.             Camera..............................................32
  42.                  Telephoto and Wide-Angle.......................33
  43.                  Sky and Look_at................................34
  44.                  Aspect Ratio...................................35
  45.                  Translating and Rotating the Camera............36
  46.             light_source........................................36
  47.             spotlight light_source..............................37
  48.             no_shadow...........................................38
  49.        Objects..................................................40
  50.  
  51.        
  52.  
  53.  
  54.  
  55.        Quick Render Color.......................................41
  56.        Transformations..........................................41
  57.             Scale...............................................41
  58.             Rotate..............................................41
  59.             Translate...........................................41
  60.             Transformation order................................43
  61.             "Handedness" -- Rotation Direction..................44
  62.        Shapes...................................................44
  63.             Spheres.............................................44
  64.             Planes..............................................45
  65.             Boxes...............................................46
  66.             Quadric Shapes......................................46
  67.             Quadric surfaces the easy way.......................47
  68.             Triangles...........................................48
  69.             Quartic Surfaces....................................49
  70.             Blob................................................52
  71.             How do blobs work?..................................53
  72.                  Threshold:.....................................53
  73.                  Strength:......................................53
  74.                  Radius:........................................54
  75.                  Center:........................................54
  76.                  The Formula....................................55
  77.             Height Fields.......................................55
  78.             Bezier/Bicubic Patches..............................59
  79.        Constructive Solid Geometry (CSG)........................59
  80.             Inside and outside..................................61
  81.             union  { A B }......................................63
  82.             intersection { A B }................................63
  83.             difference { A B  }.................................63
  84.             Inverse.............................................64
  85.        Composite Objects........................................65
  86.        Bounding Shapes..........................................67
  87.        Clipping Shapes..........................................67
  88.        Textures.................................................69
  89.             Color Pattern.......................................69
  90.             Bump Patterns.......................................70
  91.             Surface Properties..................................70
  92.             Texture Syntax......................................71
  93.             Textures and Animation..............................71
  94.                  Random Dither..................................72
  95.                  Layered Textures...............................73
  96.        More about Textures......................................73
  97.             Turbulence or Noise.................................73
  98.             Color Maps..........................................74
  99.             Alpha...............................................74
  100.             Layering Textures...................................75
  101.        Texture Surface Properties...............................77
  102.  
  103.        
  104.  
  105.  
  106.  
  107.             Color...............................................77
  108.             ambient value.......................................77
  109.             diffuse value.......................................78
  110.             brilliance value....................................78
  111.             reflection value....................................78
  112.             refraction value....................................78
  113.             ior value...........................................79
  114.             phong value.........................................79
  115.             phong_size value....................................80
  116.             specular value......................................80
  117.             roughness value.....................................80
  118.             metallic............................................81
  119.        Color Pattern Texture Types..............................82
  120.             Color Maps..........................................82
  121.             checker - Color Pattern.............................83
  122.             bozo - Color Pattern................................83
  123.             spotted - Color Pattern.............................84
  124.             marble - Color Pattern..............................84
  125.             wood - Color Pattern................................84
  126.             agate - Color Pattern...............................84
  127.             gradient - Color Pattern............................84
  128.             granite - Color Pattern.............................85
  129.             onion - Color Pattern...............................86
  130.             leopard - Color Pattern.............................86
  131.             tiles - A texture pattern...........................86
  132.        Bump Patterns............................................88
  133.             ripples - Bump Pattern..............................88
  134.             waves - Bump Pattern................................88
  135.             bumps - Bump Pattern................................89
  136.             dents - Bump Pattern................................89
  137.             wrinkles - Bump Pattern.............................89
  138.        Mapping Textures.........................................90
  139.             Mapping Types:......................................90
  140.             Mapping Method:.....................................90
  141.             image_map - Color Pattern...........................90
  142.             bump_map - A Bump Pattern...........................93
  143.             material_map - A texture pattern....................94
  144.             Interpolation.......................................95
  145.        Misc Features............................................96
  146.             Fog.................................................96
  147.             Default Texture.....................................97
  148.             Max trace level.....................................98
  149.        Advanced Lessons.........................................99
  150.             Camera..............................................100
  151.             Ray-Object Intersections............................101
  152.        Textures, Noise, and Turbulence..........................103
  153.             Octaves.............................................105
  154.  
  155.        
  156.  
  157.  
  158.  
  159.             Layered Textures....................................105
  160.             Parallel Image Mapping..............................108
  161.        Common Questions and Answers.............................109
  162.        Tips and Hints...........................................113
  163.        Suggested Reading........................................115
  164.        Legal Information........................................118
  165.        Contacting the Authors...................................118
  166.  
  167.        
  168.  
  169.  
  170.  
  171.        
  172.        
  173.        Introduction
  174.        
  175.        This document details the use of the Persistence of Vision 
  176.        Ray Tracer (POV-Ray) and is broken down into several 
  177.        sections.
  178.        
  179.        The first section describes the program POV-Ray, explains 
  180.        what ray tracing is and also describes where to find the 
  181.        latest version of the POV-Ray software.
  182.        
  183.        The next section is a quick start that helps you quickly 
  184.        begin to use the software.
  185.        
  186.        After the quick start is a more in-depth tutorial for 
  187.        beginning POV-Ray users.
  188.        
  189.        Following the beginning tutorial is a scene description 
  190.        language reference that describes the language used with 
  191.        POV-Ray to create an image.
  192.        
  193.        The last sections include some tips and hints, suggested 
  194.        reading, and legal information.
  195.        
  196.        
  197.        
  198.        POV-Ray is based on DKBTrace 2.12 by David Buck & Aaron A. 
  199.        Collins
  200.        
  201.        Program Description -- What is Ray Tracing?
  202.        
  203.        The Persistence of Vision Ray Tracer (POV-Ray) is a 
  204.        copyrighted freeware program that allows a user to easily 
  205.        create fantastic, three dimensional, photo-realistic images 
  206.        on just about any computer. POV-Ray reads standard ASCII 
  207.        text files that describe the shapes, colors, textures and 
  208.        lighting in a scene and mathematically simulates the rays of 
  209.        light moving through the scene to produce a photo-realistic 
  210.        image! 
  211.        
  212.        No traditional artistic or programming skills are required 
  213.        to use POV-Ray. First, you describe a picture in POV-Ray's 
  214.        scene description language, then POV-Ray takes your 
  215.        description and automatically creates an image of it with 
  216.        perfect shading, perspective, reflections and lighting. 
  217.        
  218.        The standard POV-Ray package also includes a large 
  219.        collection of sample scene files that have been created by 
  220.        other artists using the program. These scenes can be 
  221.        rendered and enjoyed even before learning the scene 
  222.  
  223.        
  224.                                                   POV-Ray V1.0 Page   6
  225.        
  226.        
  227.        description language. They can also be modified to create 
  228.        new scenes. 
  229.        
  230.        Here are some highlights of POV-Ray's features:
  231.             -Easy to use scene description language
  232.             -Image size up to 4096 x 4096 pixels and larger
  233.             -Large library of stunning example scene files
  234.             -Standard include files that pre-define many shapes, 
  235.             colors and textures
  236.             -Very high quality output image files (24-bit color.)
  237.             -16 bit color display on IBM-PC's using the Sierra 
  238.             HiColor chip
  239.             -Create fractal landscapes using height fields
  240.             -Spotlights for sophisticated lighting
  241.             -Phong and specular highlighting for more 
  242.             realistic-looking surfaces.
  243.             -Several image file output formats including Targa, 
  244.             dump and raw
  245.             -Wide range of shapes:
  246.             -Basic Shape Primitives such as...
  247.             Sphere, Box, Ellipsoid, Cylinder, Cone, Triangle and 
  248.             Plane
  249.             -Advanced Shape Primitives such as...
  250.             Torus (Donut), Hyperboloid, Paraboloid, Bezier Patch, 
  251.             Height Fields (Mountains), Blobs, Quartics, Smooth 
  252.             Triangles (Phong shaded)
  253.             -Shapes can easily be combined to create new complex 
  254.             shapes. This feature is called Constructive Solid 
  255.             Geometry (CSG). POV-Ray supports unions, intersections 
  256.             and differences in CSG.
  257.             -Multiple objects can be combined into one object using 
  258.             the composite feature
  259.             -Objects and shapes are assigned materials, these 
  260.             materials are called textures.
  261.              (A texture describes the coloring and surface 
  262.             properties of a shape, its material.)
  263.             
  264.             -Many built-in textures such as...
  265.             Marble, Checkerboard, Wood, Bumpy, Agate, Clouds, 
  266.             Granite, Ripples, Waves, Leopard, Wrinkled, 
  267.             -Users can create their own textures or use pre-defined 
  268.             textures such as...
  269.             Mirror, Metals like Chrome, Brass, Gold and Silver, 
  270.             Bright Blue Sky with Clouds, Sunset with Clouds, 
  271.             Sapphire Agate, Jade, Shiny, Brown Agate, Apocalypse, 
  272.             Blood Marble, Glass, Brown Onion , Pine Wood, Cherry Wood
  273.             -Combine textures for sophisticated or novel effects
  274.  
  275.        
  276.                                                   POV-Ray V1.0 Page   7
  277.        
  278.        
  279.             -Display image while computing (not available on all 
  280.             computers)
  281.             -Halt rendering when part way through
  282.             -Continue rendering a halted partial scene later
  283.        
  284.        
  285.        Which Version of POV-Ray Should You Use?
  286.        
  287.        There are specific versions of POV-Ray available for three 
  288.        different computers, the IBM-PC, the Apple Macintosh, and 
  289.        the Commodore Amiga.
  290.        
  291.        
  292.        IBM-PC and compatibles
  293.        The IBM-PC version is called POVRAY.EXE and is found in the 
  294.        archive POVIBM.ZIP. It can be run on any IBM-PC with a 386 
  295.        or 486 CPU and 2 megabytes of memory. A math co-processor is 
  296.        not required, but it is recommended. This version of POV-Ray 
  297.        may be run under DOS, OS\2, and Windows. It will not run 
  298.        under Desqview at this time. A version that runs on IBM-PC's 
  299.        using the 286 CPU will be available soon.
  300.        
  301.        
  302.        Apple Macintosh
  303.        The Apple Macintosh version can be found in the file 
  304.        POVMAC.SIT. It requires a 68020 or better processor, 32 bit 
  305.        Color Quickdraw, and a math co-processor or software 
  306.        emulation of a math co-processor to run.
  307.        
  308.        The math co-processor emulator is needed on the Mac LC and 
  309.        Powerbook 140. The documentation included with the 
  310.        executable describes where to find a math co-processor 
  311.        emulator.
  312.        
  313.        32 bit Color Quickdraw is part of System 7's automatic 
  314.        installation on color Macs. Owners of Mac SE/30 and other 
  315.        non-color Macs will need to use custom installation options 
  316.        to add 32 bit Color Quickdraw. 
  317.        
  318.        The installation of QuickTime will enhance POV-Ray's ability 
  319.        to save pictures by allowing it to save in QuickTime 
  320.        compressed formats. 
  321.        
  322.        Commodore Amiga
  323.        The Commodore Amiga version of POV-Ray can be found in the
  324.        file POVAMI.LZH. Two executables are supplied, one for 
  325.        computers with a math co-processor, and one for computers 
  326.        without a math co-processor. This version will run on Amiga 
  327.        500, 1000, 2000, and 3000's and should work under AmigaDOS 
  328.        1.3 or 2.xx.  The Amiga version supports HAM mode as well as 
  329.        HAM-E and the Firecracker.
  330.  
  331.        
  332.                                                   POV-Ray V1.0 Page   8
  333.        
  334.        
  335.        
  336.        
  337.        UNIX and other systems
  338.        POV-Ray is written in highly portable C source code and it 
  339.        can be compiled and run on many different computers. There 
  340.        is specific source code in the source archive for UNIX, 
  341.        X-Windows, VAX, and generic computers. If you have one of 
  342.        these, you can use the C compiler included with your 
  343.        operating system to compile a POV-Ray executable for your 
  344.        own use. This executable may not be distributed. See the 
  345.        source documentation for more details. Users on high powered 
  346.        computers like Suns, SGI, RS-6000's, Crays, and so on use 
  347.        this method to run POV-Ray.
  348.        
  349.        
  350.        All Versions
  351.        All versions of the program share the same ray tracing 
  352.        features like shapes, lighting and textures. In other words, 
  353.        an IBM-PC can create the same pictures as a Cray 
  354.        supercomputer as long as it has enough memory.
  355.        
  356.        The user will want to get the executable that best matches 
  357.        their computer hardware. See the section "Where to find 
  358.        POV-Ray files" for where to find these files. You can 
  359.        contact those sources to find out what the best version is 
  360.        for you and your computer.
  361.        
  362.        
  363.        Where to find POV-Ray files
  364.        
  365.        POV-Ray is a complex piece of software made up of many 
  366.        files. At the time of this writing, the POV-Ray package was 
  367.        made up of several archives including executables, 
  368.        documentation, and example scene files. 
  369.        
  370.        The average user will need an executable for their computer, 
  371.        the example scene files and the documentation. The example 
  372.        scenes are invaluable for learning about POV-Ray, and they 
  373.        include some exciting artwork.
  374.        
  375.        Advanced users, developers, or the curious may want to 
  376.        download the C source code as well.
  377.        
  378.        There are also many different utilities for POV-Ray that 
  379.        generate scenes, convert scene information from one format 
  380.        to another, create new materials, and so on. You can find 
  381.        these files from the same sources as the other POV-Ray 
  382.        files. No comprehensive list of these utilities is available 
  383.        at the time of this writing.
  384.        
  385.        The latest versions of the POV-Ray software are available 
  386.  
  387.        
  388.                                                   POV-Ray V1.0 Page   9
  389.        
  390.        
  391.        from these sources:
  392.        
  393.        Computer Art Forum on CompuServe
  394.        POV-Ray headquarters are on CompuServe Comart forum 
  395.        Raytracing section 16. We meet there to share info and 
  396.        graphics and discuss raytracing, fractals and other kinds of 
  397.        computer art. Comart is also the home of the Stone Soup 
  398.        Group, developers of Fractint, a popular IBM-PC fractal 
  399.        program. Everyone is welcome to join in on the action on CIS 
  400.        Comart. Hope to see you there! You can get information on 
  401.        joining CompuServe by calling (800)848-8990. CompuServe 
  402.        access is also available in Japan, Europe and many other 
  403.        countries.
  404.        
  405.        PC Graphics area on America On-Line
  406.        There's an area now on America On-Line dedicated to POV-Ray 
  407.        support and information. You can find it in the PC Graphics 
  408.        section of AOL. Jump keyword "PCGRAPHICS". This area 
  409.        includes the Apple Macintosh executables also.
  410.        
  411.        You Can Call Me Ray BBS in Chicago
  412.        There is a ray-trace specific BBS in the (708) Area Code 
  413.        (Chicago suburbia, United States) for all you Traceaholics 
  414.        out there. The phone number of this BBS is (708) 
  415.        358-5611.Bill Minus is the sysop and Aaron Collins is 
  416.        co-sysop of that board, and it's filled with interesting 
  417.        stuff.
  418.        
  419.        
  420.        The Graphics Alternative BBS in Oakland
  421.        For those on the West coast, you may want to find the 
  422.        POV-Ray files on The Graphics Alternative BBS at (510) 
  423.        524-2780. It's a great graphics BBS run by Adam Schiffman.
  424.        
  425.        Internet
  426.        The POV-Ray files are also available over Internet by 
  427.        anonymous FTP from alfred.ccs.carleton.ca (134.117.1.1).
  428.        
  429.        Quick Start
  430.        
  431.        The next section describes how to quickly install POV-Ray 
  432.        and render a sample scene on your computer. 
  433.        
  434.        Installing POV-Ray
  435.        
  436.        Specific installation instructions are included with the 
  437.        executable program for your computer. In general, there are 
  438.        two ways to install POV-Ray. 
  439.        
  440.        [ Note that the generic word "directory" is used 
  441.        throughout.
  442.          Your operating system may use another word 
  443.          (subdirectory, folder, etc.) ]
  444.        
  445.        1-- The messy way: Create a directory called POVRAY and copy 
  446.        all POV-Ray files into it. Edit and run all files and 
  447.  
  448.        
  449.                                                   POV-Ray V1.0 Page  10
  450.        
  451.        
  452.        programs from this directory. This method works, but is not 
  453.        recommended.
  454.        
  455.        Or the preferred way:
  456.        2-- Create a directory called POVRAY and several 
  457.        subdirectories called  
  458.           INCLUDE, SAMPLES, SCENES, UTIL. 
  459.            The file tree for this should look something like this:
  460.            \--
  461.              |   
  462.              +POVRAY --
  463.                       |
  464.                       +INCLUDE
  465.                       |
  466.                       +SAMPLES
  467.                       |  
  468.                       +SCENES
  469.                       |  
  470.                       +UTIL   
  471.        
  472.        Copy the executable file and docs into the directory POVRAY. 
  473.        Copy the standard include files into the subdirectory 
  474.        INCLUDE. Copy the sample scene files into the subdirectory 
  475.        SAMPLES. And copy any POV-Ray related utility programs and 
  476.        their related files into the subdirectory UTIL. Your own 
  477.        scene files will go into the SCENES subdirectory. Also, 
  478.        you'll need to add the directories \POVRAY and \POVRAY\UTIL to 
  479.        your "search path" so the executable programs can be run 
  480.        from any directory.
  481.        
  482.              *Note that some operating systems don't 
  483.              *have an equivalent to the
  484.              *multi-path search command.
  485.        
  486.        The second method is a bit more difficult to set-up, but is 
  487.        preferred. There are many files associated with POV-Ray and 
  488.        they are far easier to deal with when separated into several 
  489.        directories.
  490.        
  491.        Using Sample Scenes
  492.        
  493.        This section describes how to render a sample scene file. 
  494.        You can use these steps to render any of the sample scene 
  495.        files included in the sample scenes archive. 
  496.        
  497.        A scene file is a standard ASCII text file that contains a 
  498.        description in the POV-Ray language of a three dimensional 
  499.        scene.  The scene file text describes objects and lights in 
  500.        the scene, and a camera to view the scene. Scene files have 
  501.  
  502.        
  503.                                                   POV-Ray V1.0 Page  11
  504.        
  505.        
  506.        the file extension .POV and can be created by any word 
  507.        processor or editor that can save in standard ASCII text 
  508.        format.
  509.        
  510.        Quite a few example scenes are provided with this 
  511.        distribution in the example scenes archive. These have been 
  512.        organized into separate archives within the main archive and 
  513.        are grouped by complexity and category.
  514.        
  515.        These scene files range from a simple red ball on a tiled 
  516.        floor, to a jade panther in a marble temple. They have been 
  517.        created by users of POV-Ray all over the world, and were 
  518.        picked to give examples of the variety of features in POV-Ray. 
  519.        Many of them are stunning in their own right. 
  520.        
  521.        The scenes were graciously donated by the artists because 
  522.        they wanted to share what they had created with other users. 
  523.        Feel free to use these scenes for any purpose. You can just 
  524.        marvel at them as-is, you can study the scene files to learn 
  525.        the artists techniques, or you can use them as a starting 
  526.        point to create new scenes of your own.
  527.        
  528.        Here's how to make these sample scenes into images you can 
  529.        view on your computer. We'll use SIMPLE.POV as an example, 
  530.        just substitute another filename to render a different 
  531.        image.
  532.        
  533.        The file SIMPLE.POV was included with this document and 
  534.        should now be in the POVRAY directory.
  535.        
  536.           Note: The sequence of commands is not the same for
  537.                 every version of POV-Ray. There should be a 
  538.                 document with the executable describing the
  539.                 specific commands to render a file.
  540.        
  541.        Make POVRAY the active directory, and then at the command 
  542.        line, type:
  543.        
  544.          POVRAY +iSIMPLE.POV +v +w80 +h60<ENTER> 
  545.        
  546.        POVRAY is the name of your executable, +i<filename.pov> 
  547.        tells POV-Ray what scene file it should use as input, and +v 
  548.        tells the program to output its status to the text screen as 
  549.        it's working. +w and +h set the width and height of the 
  550.        image in pixels. This image will be 80 pixels wide by 60 pixels 
  551.        high.
  552.        
  553.  
  554.        
  555.                                                   POV-Ray V1.0 Page  12
  556.        
  557.        
  558.        POV-Ray will read in the text file SIMPLE.POV and begin 
  559.        working to render the image. It will write the image to a 
  560.        file called DATA.TGA. The file DATA.TGA contains a 24 bit 
  561.        image of the scene file SIMPLE.POV. Because many computers 
  562.        can't display a 24 bit image, you will probably have to 
  563.        convert DATA.TGA to an 8 bit format before you can view it 
  564.        on your computer. The docs included with your executable 
  565.        lists the specific steps required to convert a 24 bit file 
  566.        to an 8 bit file.
  567.        
  568.        Command Line Parameters
  569.        The following section gives a detailed description of the 
  570.        command-line options.
  571.        
  572.        The command-line parameters may be specified in any order. 
  573.        Repeated parameters overwrite the previous values.
  574.        Default parameters may also be specified in a file called 
  575.        "povray.def" or by the environment variable "POVRAYOPT".
  576.         Some examples follow this table.
  577.  
  578.        
  579.                                                   POV-Ray V1.0 Page  13
  580.        
  581.        
  582.        Table 1-1 Command Line Parameters
  583.        Parameter.....|.....Range.....|...Description..............
  584.        -----------------------------------------------------------
  585.        -?            |               | Turn on/off feature off
  586.        -?(val)       |               | Turn feature on with
  587.                      |               | parameter val.
  588.        +?            |               | Turn feature on.
  589.        +i<filename>  | Varies w/ sys | Input scene file name, 
  590.                      |               | generally ends in .pov.
  591.        +o<filename>  | Varies w/ sys | Output image filename.
  592.        +w#####       | 1-32,768      | Width of image in pixels.
  593.        +h#####       | 1-32,768      | Height of image in pixels.
  594.        +v(#)         | Varies w/sys  | Display image stats while
  595.                      |               | rendering. 
  596.        +d(??)        | Varies w/sys  | Display image graphically
  597.                      |               | while rendering (Not avail
  598.                      |               | on all vers).
  599.        +x            |               | Allow abort with
  600.                      |               | keypress.(IBM-PC).
  601.        +f(?)         | t, d or r     | Output file format: 
  602.                      |               |   Targa, dump or raw.
  603.        -f            |               | Disable file output.
  604.        +s#####       | 1-32,768      | Start line for tracing
  605.                      |               | a portion of a scene.
  606.        +e#####       | 1-32,768      | End line for tracing 
  607.                      |               | a portion of a scene.
  608.        +c            |               | Continue an aborted
  609.                      |               | partial image. 
  610.        +p            |               | Pause and wait for keypress 
  611.        
  612.                      |               | after tracing image.
  613.        +b#####       | Varies w/ sys | Output file buffer size.
  614.        +a#####       | 0.0 to 1.0    | Render picture with 
  615.                      |               | anti-aliasing,or 
  616.                      |               |"smoothing", on.
  617.                      |               | Lower values cause more
  618.                      |               | smoothing.
  619.        +q#           |   0 to 9      | Image quality: 
  620.                      |               | 9 highest(default) to
  621.                      |               | 0 lowest.
  622.        +l<path>      | Varies w/ sys | Library path: POV-Ray will
  623.                      |               | search for files in the
  624.                      |               | directory listed here.
  625.                      |               | Multiple lib paths may be 
  626.                      |               | specified.
  627.        ----------------------------------------------------------
  628.  
  629.        
  630.                                                   POV-Ray V1.0 Page  14
  631.        
  632.        
  633.        
  634.        Normally, you don't need to specify the +f? option. The 
  635.        default setting will create the correct format image file 
  636.        for your computer. The docs included with the executable 
  637.        specify which format is used.
  638.        
  639.        You can disable image file output by using the command line 
  640.        option -f. This is only useful if your computer has display 
  641.        options and should be used in conjunction with the +p 
  642.        option. If you disable file output using -f, there will be 
  643.        no record kept of the image file generated. This option is 
  644.        not normally used.
  645.        
  646.        Unless file output is disabled (-f) POV-Ray will create an 
  647.        image file of the picture. This output file describes each 
  648.        pixel with 24 bits of color information. Currently, three 
  649.        output file formats are directly supported:
  650.        
  651.        +ft - Uncompressed Targa-24 format (IBM-PC Default)
  652.        +fd - Dump format (QRT-style)
  653.        +fr - Raw format - one file each for Red, Green and Blue. 
  654.        
  655.        
  656.        If the +d option is used and your computer supports a 
  657.        graphic display, then the image will be displayed while the 
  658.        program performs the ray tracing. On most systems, the 
  659.        picture displayed is not as good as the one created by the 
  660.        post-processor because it does not try to make optimum 
  661.        choices for the color registers. 
  662.        
  663.        The +d parameters are listed in the executable 
  664.        documentation.
  665.        
  666.        
  667.        -ifilename Set the input filename
  668.        -ofilename Set output filename
  669.        
  670.        The default input filename is "object.pov". The default 
  671.        output filename is "data" and the suffix for your default 
  672.        file type.
  673.        
  674.        IBM-PC default file type is Targa, so the file is 
  675.        "data.tga".
  676.        
  677.        Amiga uses dump format and the default outfile name is 
  678.        "data.dis".
  679.        
  680.  
  681.        
  682.                                                   POV-Ray V1.0 Page  15
  683.        
  684.        
  685.        Raw mode writes three files, "data.red", "data.grn" and 
  686.        "data.blu". On IBM-PC's, the default extensions for raw mode 
  687.        are ".r8", ".g8", and ".b8" to conform to Piclab's "raw" 
  688.        format. Piclab is a widely used free-ware image processing 
  689.        program. Normally, Targa files are used with Piclab, not raw 
  690.        files.
  691.        
  692.        +a[xxx]   Anti-alias - xxx is an optional tolerance level    
  693.        
  694.                      (default 0.3) 
  695.        -a        Don't anti-alias
  696.        
  697.        Anti-aliasing is a technique used to make the ray traced 
  698.        image look smoother. Often the color difference between two 
  699.        objects creates a "jaggy" appearance. When anti-aliasing is 
  700.        turned on, POV-Ray attempts to "smooth" the jaggies by 
  701.        shooting more rays into the scene and averaging the results. 
  702.        This technique can really improve the appearance of the 
  703.        final image. Be forewarned though, anti-aliasing drastically 
  704.        slows the time required to render a scene since it has do 
  705.        many more calculations to "smooth" the image. Lower numbers 
  706.        mean more anti-aliasing and also more time. Use 
  707.        anti-aliasing for your final version of a picture, not the 
  708.        rough draft.
  709.        
  710.        The +a option enables adaptive anti-aliasing. The number 
  711.        after the +a option determines the threshold for the 
  712.        anti-aliasing. 
  713.        
  714.        If the color of a pixel differs from its neighbor (to the 
  715.        left or above) by more than the threshold, then the pixel is 
  716.        subdivided and super-sampled. 
  717.        
  718.        If the anti-aliasing threshold is 0.0, then every  pixel is  
  719.        super-sampled. If the threshold is 1.0, then no 
  720.        anti-aliasing is done. 
  721.        
  722.        The lower the contrast, the lower the threshold should be.
  723.        Higher contrast pictures can get away with higher tolerance 
  724.        values.
  725.        
  726.        Good values seem to be around 0.2 to 0.4.
  727.        
  728.        
  729.        The super-samples are jittered to introduce noise and make 
  730.        the  pictures look better. Note that the jittering "noise" 
  731.        is non-random and repeatable in nature, based on an object's 
  732.  
  733.        
  734.                                                   POV-Ray V1.0 Page  16
  735.        
  736.        
  737.        3-D orientation in space. Thus, it's okay to use 
  738.        anti-aliasing for animation sequences, as the anti-aliased 
  739.        pixels won't vary and flicker annoyingly from frame to 
  740.        frame.
  741.        
  742.        +bxxx     Use an output file buffer of xxx kilobytes. 
  743.        (if 0, flush and write the output file on every line - this 
  744.        is the  default)
  745.        
  746.        The +b option allows you to assign large buffers to the 
  747.        output file. This reduces the amount of time spent writing 
  748.        to the disk and prevents unnecessary wear. If this parameter 
  749.        is zero, then as each scanline is finished, the line is 
  750.        written to the file and the file is flushed. On most 
  751.        systems, this operation insures that the file is written to 
  752.        the disk so that in the event of a system crash or other 
  753.        catastrophic event, at least part of the picture has been 
  754.        stored properly and retrievably on disk.(see also the +c 
  755.        option below.)
  756.        +b30 is a good value to use to speed up small renderings. 
  757.        
  758.        +c Continue Rendering
  759.        
  760.        If you abort a render while it's in progress or if you used 
  761.        the -exxx option (below)  to end the render prematurely, you 
  762.        can use the +c option to continue the render when you get 
  763.        back to it. This option reads in the previously generated 
  764.        output file, displays the image to date on the screen, then 
  765.        proceeds with the raytracing. In many cases, this feature 
  766.        can save you a lot of rendering  time when things go wrong.
  767.        
  768.        +sxxx     Start tracing at line number xxx.
  769.        +exxx     End tracing at line number xxx.
  770.        
  771.        
  772.        The +s option allows you to begin the rendering of an image 
  773.        at a specific scan line.  This is useful for rendering part 
  774.        of a scene to see what it looks like without having to 
  775.        render the entire scene from the top. You can also use this 
  776.        option to render groups of scanlines on different systems 
  777.        and concatenate them later.
  778.        
  779.        WARNING: Image files created on with different executables 
  780.        on the same or different computers may not look exactly the 
  781.        same due to different random number generators used in some 
  782.        textures. If you need to merge image files from different 
  783.  
  784.        
  785.                                                   POV-Ray V1.0 Page  17
  786.        
  787.        
  788.        computers contact the authors for more info.
  789.        
  790.        If you are merging output files from different systems, make 
  791.        sure that the random number generators are the same. If not, 
  792.        the textures from one will not blend in with the textures 
  793.        from the other. 
  794.        
  795.        +q# Rendering quality
  796.        
  797.        The +q option allows you to specify the image rendering 
  798.        quality, for quickly rendering images for testing. The 
  799.        parameter can range from 0 to 9. The values correspond to 
  800.        the following quality levels:
  801.        
  802.        0,1  Just show quick colors. Ambient lighting only.
  803.             Quick colors are specified outside the texture block
  804.             and affect only the low quality renders.
  805.        2,3  Show Diffuse and Ambient light
  806.        4,5  Render shadows
  807.        6,7  Create surface textures
  808.        8,9  Compute reflected, refracted, and transmitted rays.
  809.        
  810.        The default is +q9 (maximum quality) if not specified.
  811.        
  812.        +l<path> - Library search path
  813.        The +l option may be used to specify a "library" pathname to 
  814.        look in for include, parameter and image files. Up to 10 +l 
  815.        options may be used to specify a search path. The home 
  816.        (current) directory will be searched first followed by the 
  817.        indicated library directories in order.
  818.        
  819.        Default Parameter File and Environment Variable
  820.        You may specify the default parameters by modifying the file 
  821.        "povray.def" which contains the parameters in the above 
  822.        format. This filename contains a complete command line as 
  823.        though you had typed it in, and is processed before any 
  824.        options supplied on the command line are recognized. You may 
  825.        put commands on more than one line in the "povray.def" 
  826.        file.
  827.        
  828.        Examples:
  829.        
  830.          povray +ibox.pov +obox.tga +v +x +w320 +h200 
  831.        
  832.             +ibox.pov = Use the scene file box.pov for input
  833.             +obox.tga = Output the image as a 
  834.                         Targa file to box.tga 
  835.             +v = Show line numbers while rendering.
  836.  
  837.        
  838.                                                   POV-Ray V1.0 Page  18
  839.        
  840.        
  841.             +x = Allow key press to abort render.
  842.             +w320 = Set image width to 320 pixels
  843.             +h200 = Set image height to 200 pixels
  844.        
  845.        Some of these parameters could have been put in the 
  846.        POVRAYOPT environment variable to save typing:
  847.        
  848.          SET POVRAYOPT = +v +x +w320 +h200
  849.        
  850.        Then you could just type:
  851.        
  852.          povray +ibox.pov +obox.tga 
  853.        
  854.        Or, you could create a file called POVRAY.DEF in the same 
  855.        directory as the scene file box.pov that contains the 
  856.        command line options.
  857.        
  858.        POVRAY.DEF contains "+v +x +w320 +h200"
  859.        
  860.        Then you could also type:
  861.        
  862.          povray +ibox.pov +obox.tga 
  863.        
  864.        With the same results. You could also create an option file 
  865.        with a different name and specify it on the command line:
  866.        
  867.        For example, if QUICK.DEF contains "+v +x +w80 +h60"
  868.        
  869.        Then you could also type:
  870.        
  871.          povray +ibox.pov +obox.tga QUICK.DEF
  872.        
  873.        When POV-Ray sees QUICK.DEF, it will read it in just as if 
  874.        you typed it on the command line.
  875.        
  876.        The order that the options are read in for the IBM-PC 
  877.        version are as follows:
  878.        
  879.          POVRAYOPT environment variable
  880.        
  881.          POVRAY.DEF in current directory or,
  882.                     if not found, in library path
  883.        
  884.          Command line and command line option files
  885.        
  886.        
  887.        For example, +v in POVRAY.DEF would override -v in 
  888.  
  889.        
  890.                                                   POV-Ray V1.0 Page  19
  891.        
  892.        
  893.        POVRAYOPT. +x on the command line would override -x in 
  894.        POVRAY.DEF and so on.
  895.        
  896.        Other computer's versions read in the POVRAY.DEF file before 
  897.        the POVRAYOPT environment variable.
  898.        
  899.        
  900.        Beginning Tutorial
  901.        
  902.        This section describes how to create a scene using POV-Ray's 
  903.        scene description language and how to render this scene.
  904.        
  905.        Your First Image
  906.        
  907.        Let's create the scene file for a simple picture. Since 
  908.        raytracers thrive on spheres, that's what we'll render 
  909.        first.
  910.        
  911.        First, we have to tell POV-Ray where our camera is and where 
  912.        it's looking. To do this, we use 3D coordinates. The usual 
  913.        coordinate system for POV-Ray has the positive Y axis 
  914.        pointing up, the positive X axis pointing to the right, and 
  915.        the positive Z axis pointing into the screen as follows:
  916.        
  917.        ^+Y
  918.        |   /+Z
  919.        |  /
  920.        | /
  921.        |/        +X
  922.        |-------->
  923.        
  924.        
  925.        he the negative values of the axes point the other 
  926.        direction, as follows:
  927.        
  928.        
  929.                  ^+Y
  930.                  |   /+Z
  931.                  |  /
  932.                  | /
  933.          -X      |/        +X
  934.          <-------|-------->
  935.                 /|
  936.                / |
  937.               /  |
  938.            -Z/   |
  939.                  v-Y
  940.                    
  941.        
  942.        Using your personal favorite text editor, create a file 
  943.        called "picture1.pov". Now, type in the following (note: The 
  944.  
  945.        
  946.                                                   POV-Ray V1.0 Page  20
  947.        
  948.        
  949.        input is case sensitive, so be sure to get capital and 
  950.        lowercase letters correct):
  951.        
  952.        #include "colors.inc"  // The include files contain
  953.        #include "shapes.inc"  // pre-defined scene elements
  954.        #include "textures.inc"
  955.        
  956.        camera {
  957.          location  <0 1 -3>
  958.          direction <0 0 1.5>
  959.          up        <0 1 0>
  960.          right     <1.33 0 0>
  961.          look_at   <0 1 2>
  962.        }
  963.        
  964.        The first include statement reads in definitions for various 
  965.        useful colors. The second and third include statements read 
  966.        in some useful shapes and textures respectively. When you 
  967.        get a chance, have a look through them to see but a few of 
  968.        the many possible shapes and textures available.
  969.        
  970.        Include files may be nested, if you like but only 10 files 
  971.        may be active at once.
  972.        You may have as many include files as needed in a scene 
  973.        file. Include files may themselves contain include files, 
  974.        but you are limited to declaring includes only 10 "deep".
  975.        
  976.        
  977.        Filenames specified in the include statements will be 
  978.        searched for in the home (current) directory first, and if 
  979.        not found, will then be searched for in directories 
  980.        specified by any "-l" (library path) options active. This 
  981.        would facilitate keeping all your "include" (.inc) files 
  982.        such as shapes.inc, colors.inc, and textures.inc in an 
  983.        "include" subdirectory, and giving an "-l" option on the 
  984.        command line to where your library of include files are.
  985.        
  986.        The camera declaration describes where and how the camera 
  987.        sees the scene. It gives X, Y, Z coordinates to indicate the 
  988.        position of the camera and what part of the scene it is 
  989.        pointing at. And the camera definition has direction vectors 
  990.        to describe the properties of the camera like the aspect 
  991.        ratio and lens length. Details can be found in the section 
  992.        on cameras. 
  993.        
  994.        Briefly, "location <0 1 -3>" places the camera three units 
  995.        back from the center of the ray-tracing universe which is at 
  996.  
  997.        
  998.                                                   POV-Ray V1.0 Page  21
  999.        
  1000.        
  1001.        <0 0 0>. Remember that by default +Z is into the screen and 
  1002.        -Z is back out of the screen.
  1003.        
  1004.        The line "direction <0 0 1.5>" says we're looking in the +Z 
  1005.        direction with a "lens length" of 1.5 units. 1.5 is used 
  1006.        instead of the default 1.0 to avoid "wide-angle" distortion 
  1007.        that occurs when the lens is too short. In other words, the 
  1008.        value 1.5 gives a slight "tele-photo" effect which reduces 
  1009.        perspective distortion. The default value of 1 is used for 
  1010.        historical reasons. The direction vector should be higher in 
  1011.        most cases to avoid perspective distortion.
  1012.        
  1013.        The parameter "up <0 1 0>" tells POV-Ray that "up" or the 
  1014.        top of the image is in the positive Y axis direction. 
  1015.        
  1016.        The parameter "right <1.33 0 0>" indicates that "right" or 
  1017.        the right side of the image is in the direction of the 
  1018.        positive X axis.
  1019.        
  1020.        The size of the up and right values also indicate the aspect 
  1021.        ratio of the scene. Most scenes are 1.33 times wider than 
  1022.        they are high. This corresponds to the popular computer 
  1023.        graphics image size of 640 pixels wide by 480 pixels high.
  1024.        
  1025.        Finally, "look_at <0 1 2>" rotates the camera to point at X, 
  1026.        Y, Z coordinates <0 1 2>. A point 6 units in front of and 1 
  1027.        unit higher than the camera. The look_at point should be the 
  1028.        center of attention of your image.
  1029.        
  1030.        Now that the camera is set up to record the scene, let's 
  1031.        place a red sphere into the scene:
  1032.        
  1033.        object {
  1034.          sphere { <0 1 2> 1 }
  1035.          texture {color Red } // Red is pre-defined in COLORS.INC
  1036.                               // You could also use "color red 1"
  1037.        }
  1038.        
  1039.        The center of this sphere at Z=2 is approx. 5 units in front 
  1040.        of the camera at Z=-3. It has a radius of 1 unit. Since the 
  1041.        radius is 1/2 the width of a sphere, the sphere 2 units 
  1042.        wide. 
  1043.        
  1044.        Note that any parameter that changes the appearance of the 
  1045.        surface (as opposed to the shape of the surface) is called a 
  1046.        texture parameter and must be placed into a texture { ... } 
  1047.  
  1048.        
  1049.                                                   POV-Ray V1.0 Page  22
  1050.        
  1051.        
  1052.        block. In this case, we are just setting the color of the 
  1053.        sphere using a pre-defined color from COLORS.INC. We could 
  1054.        manually set this color by specifying the amount of red, 
  1055.        green, and blue in the color like this:
  1056.        
  1057.            color red # green # blue #
  1058.        
  1059.        Values for red, green, and blue are between 0-1. If one is 
  1060.        not specified it is assumed to be 0. Colors are explained in 
  1061.        more detail later.
  1062.        
  1063.        One more detail, we need a light source. Until you create 
  1064.        one, there is no light in this virtual world:
  1065.        
  1066.        object { light_source { < 2 4 -3 > color White } }
  1067.        
  1068.        This white light is 2 units to our right, and 4 units above 
  1069.        the camera. The light_source is invisible, it only casts 
  1070.        light, so no texture is needed.
  1071.        
  1072.        That's it!  Close the file and render a small picture of it 
  1073.        using this command:
  1074.        
  1075.        povray -w160 -h120 +p +x +d1 -v -ipicture1.pov
  1076.        
  1077.        If your computer does not use the command line, see the 
  1078.        executable docs for the correct command to render a scene.
  1079.        
  1080.        You may set any other command line options you like, also. 
  1081.        The scene is output to the image file DATA.TGA (or some 
  1082.        suffix other than TGA if your computer uses a different file 
  1083.        format). You can convert DATA.TGA to a GIF image using the 
  1084.        commands listed in the docs included with your executable. 
  1085.        
  1086.        Phong Highlights
  1087.        
  1088.        You've now rendered your first picture. Let's add a nice 
  1089.        little specular highlight (shiny spot) to the sphere. It 
  1090.        gives it that neat "computer graphics" look. Change the 
  1091.        definition of the sphere to this:  
  1092.        
  1093.        object {
  1094.          sphere{ <0 1 2> 1 }
  1095.           texture {
  1096.            color Red 
  1097.            phong 1
  1098.           }
  1099.        }
  1100.        
  1101.  
  1102.        
  1103.                                                   POV-Ray V1.0 Page  23
  1104.        
  1105.        
  1106.        Now render this the same way you did before. The phong 
  1107.        keyword adds a highlight the same color of the light shining 
  1108.        on the object. It adds a lot of credibility to the picture 
  1109.        and makes the object look smooth and shiny. Lower values of 
  1110.        phong will make the highlight less bright. Phong can be 
  1111.        between 0 and 1.
  1112.        
  1113.        
  1114.        Simple Textures
  1115.        
  1116.        POV-Ray has some very sophisticated textures built-in and 
  1117.        ready to use. Change the definition of our sphere to the 
  1118.        following and then re-render it: 
  1119.        
  1120.        object {
  1121.           sphere { <0 1 3> 1 }
  1122.           texture {
  1123.             DMFWood1 // Pre-defined texture from textures.inc 
  1124.             scale <.2 .2 1> // Shrink the wood along the
  1125.                             // X & Y axes and leave
  1126.                             // the Z axis unchanged.
  1127.             phong 1
  1128.           }
  1129.        }
  1130.        
  1131.        The texture patterns are set up by default to give you one 
  1132.        "feature" across a sphere of radius 1.0. A "feature" is very 
  1133.        roughly defined as a color transition. For example, a wood 
  1134.        texture would have one band on a sphere of radius 1.0. By 
  1135.        scaling the wood by <.2 .2 1>, we shrink the texture to on 
  1136.        the X and Y axes to give us about five bands. The Z axis is 
  1137.        scaled by 1, which leaves it unchanged. 
  1138.        
  1139.        Please note that "one feature across a unit sphere" is not a 
  1140.        hard and fast rule. It's only meant to give you a rough idea 
  1141.        for the scale to use for a texture.
  1142.        
  1143.        One note about the scale operation. You can magnify or 
  1144.        shrink along each direction separately. The first term tells 
  1145.        how much to magnify or shrink on the X axis or in the 
  1146.        left-right direction. The second term controls the Y axis or 
  1147.        up-down direction and the third term controls the Z axis or 
  1148.        front-back direction. Scale values larger than 1 will 
  1149.        stretch an element. Scale values smaller than one will 
  1150.        squish an element. And scale value 1 will leave and element 
  1151.        unchanged.
  1152.        
  1153.        Look through the TEXTURES.DOC file to see what textures are 
  1154.        defined in TEXTURES.INC and try them out. Just insert the 
  1155.  
  1156.        
  1157.                                                   POV-Ray V1.0 Page  24
  1158.        
  1159.        
  1160.        name of the new texture where DMFWood1 is now and re-render 
  1161.        your file. 
  1162.        
  1163.        More Shapes
  1164.        
  1165.        So far, we've just used the sphere shape. There are many 
  1166.        other types of shapes that can be rendered by POV-Ray.  
  1167.        Let's try out a computer graphics standard - "The Checkered 
  1168.        Floor."  Add the following object to your .pov file:
  1169.        
  1170.        object {
  1171.           plane {<0 1 0> 0 }
  1172.           texture {
  1173.            checker
  1174.             color Red
  1175.             color Blue
  1176.           }
  1177.        }
  1178.        
  1179.        
  1180.        The object defined here is an infinite plane. The vector <0 
  1181.        1 0> is the surface normal of the plane (i.e., if you were 
  1182.        standing on the surface, the normal points straight up.)  
  1183.        The number afterward is the distance that the plane is 
  1184.        displaced along the normal from the origin - in this case, 
  1185.        the floor is placed at Y=0 so that the sphere at Y=1, 
  1186.        radius= 1, is resting on it. The texture uses the checker 
  1187.        color pattern and  specifies that the two colors red and 
  1188.        blue be used in the checker pattern.
  1189.        
  1190.        Looking at the floor, you'll notice that the wooden ball 
  1191.        casts a shadow on the floor. Shadows are calculated very 
  1192.        accurately by the ray tracer and creates precise, sharp 
  1193.        shadows.  In the real world, penumbral or "soft" shadows are 
  1194.        often seen. POV-Ray does not simulate penumbral shadows, but 
  1195.        they can be "faked." See the advanced section for tips if 
  1196.        you need soft shadows.
  1197.        
  1198.        
  1199.        Quadric Shapes
  1200.        
  1201.        Another kind of shape you can use is called a quadric 
  1202.        surface. There are many types of quadric surfaces. These are 
  1203.        all described by a certain kind of mathematical formula (see 
  1204.        the section on Quadrics in the next chapter). They include 
  1205.        cylinders, cones, paraboloids (like a satellite dish), 
  1206.        hyperboloids (saddle-shaped) and ellipsoids.
  1207.        
  1208.        All quadrics except for ellipsoids are infinite in at least 
  1209.        one direction. For example, a cylinder has no top or bottom 
  1210.        - it goes to infinity at each end. Quadrics all have one 
  1211.  
  1212.        
  1213.                                                   POV-Ray V1.0 Page  25
  1214.        
  1215.        
  1216.        common feature, if you draw any straight line through a 
  1217.        quadric, it will hit the surface at most twice. A torus 
  1218.        (donut), for example, is not a quadric since a line can hit 
  1219.        the surface up to four times going through. 
  1220.        
  1221.        Let's render a quadric. While we're at it, we'll add a few 
  1222.        features to the surface. Add the following definition to 
  1223.        your scene file:  
  1224.        
  1225.        object {
  1226.          quadric { Cylinder_Y }
  1227.          texture {
  1228.            color green .5 // This color is 50% green 
  1229.            reflection  .5
  1230.          }
  1231.          scale <.4  .4  .4>
  1232.          translate <2 0 5>
  1233.        }
  1234.        
  1235.        
  1236.        This object is a cylinder along the Y (up-down) axis. It's 
  1237.        green in color and has a mirrored surface, reflection 0.5, 
  1238.        this means that half the light coming from the cylinder is 
  1239.        reflected from other objects in the room. A reflection of 
  1240.        1.0 is a perfect mirror.
  1241.        
  1242.        The object has been shrunk by scaling it by <0.4 0.4 0.4>. 
  1243.        Note that since the cylinder is infinite along the Y axis, 
  1244.        the middle term is kind of pointless. One four tenths of 
  1245.        infinity is still infinity. 
  1246.        
  1247.        Note: Scene elements can't be scaled by zero, that will 
  1248.        cause a divide by zero floating point error.  Use a scale 
  1249.        value of 1 if you wish to leave a component unchanged.
  1250.        
  1251.        Finally, the cylinder has been moved back and to the right 
  1252.        by the translate command so you can see it more clearly. 
  1253.        
  1254.        Scene Description Language Reference
  1255.        
  1256.        The Scene Description Language allows the user to describe 
  1257.        the world in a readable and convenient way.
  1258.        
  1259.        Comments
  1260.        Comments are text in the scene file included to make the 
  1261.        scene file easier to read or understand. They are ignored by 
  1262.        the ray tracer and are there for humans to read.
  1263.        
  1264.        There are two types of comments in POV-Ray:
  1265.        
  1266.  
  1267.        
  1268.                                                   POV-Ray V1.0 Page  26
  1269.        
  1270.        
  1271.        // This line is ignored
  1272.        
  1273.        Anything on a line after a double slash // is ignored by the 
  1274.        ray tracer. You can have scene file information on the line 
  1275.        in front of the comment, as in:
  1276.        
  1277.        object { // this is an object
  1278.        
  1279.        The other type of comment is used for multiple lines.
  1280.        
  1281.        /* These lines
  1282.            Are ignored 
  1283.            By the
  1284.            Raytracer */
  1285.        
  1286.        This type of comment starts with /* and ends with */ 
  1287.        everything in-between is ignored. This can be useful if you 
  1288.        want to temporarily remove elements from a scene file. Just 
  1289.        comment them out, comments and all.
  1290.        
  1291.        Use comments liberally and generously. Well used, they 
  1292.        really improve the readability of scene files.
  1293.        
  1294.         /*...*/ comments can "comment out" lines containing the 
  1295.        other // comments, and thus can be used to temporarily or 
  1296.        permanently comment out parts of a scene.
  1297.        /*..*/ comments can be nested, the following is legal:
  1298.        
  1299.        /* This is a comment
  1300.            // This too
  1301.            /* This also */
  1302.         */
  1303.        
  1304.        
  1305.        Include Files
  1306.        The language allows include files to be specified by placing 
  1307.        the line:
  1308.        
  1309.            #include "filename.inc"
  1310.        
  1311.        at any point in the input file . The filename must be 
  1312.        enclosed in double quotes and may be up to 40 characters 
  1313.        long (or your computer's limit), including the two 
  1314.        double-quote (") characters. 
  1315.        
  1316.        The include file is read in as if it were inserted at that 
  1317.        point in the file. Using include is the same as actually 
  1318.  
  1319.        
  1320.                                                   POV-Ray V1.0 Page  27
  1321.        
  1322.        
  1323.        cutting and pasting the entire contents of this file into 
  1324.        your scene. 
  1325.        
  1326.        Include files may be nested. You may have at most 10 
  1327.        include'd files per scene trace, whether nested or not.
  1328.        
  1329.        Generally, include files have data for scenes, but are not 
  1330.        scenes in themselves. Scene files should end in .pov.
  1331.        
  1332.        Float
  1333.        A float is a floating point number, or a number with a 
  1334.        decimal point.
  1335.        
  1336.        Floats are represented by an optional sign (-), some digits, 
  1337.        an optional decimal point, and more digits. This version 
  1338.        supports scientific notation for exponents. The following 
  1339.        are all valid floats:
  1340.         1.0  -2.0  -4  34  3.4e6 2e-5 .3 0.6
  1341.        
  1342.        Vector
  1343.        Vectors are arrays of three or more floats. They are 
  1344.        bracketed by angle brackets ( < and > ), and the three terms 
  1345.        usually represent x, y, and z. For example:  
  1346.        
  1347.             < 1.0  3.2  -5.4578 >
  1348.        
  1349.        Vectors often refer to relative points. For example, the 
  1350.        vector:
  1351.        
  1352.             <1 2 3>
  1353.        
  1354.        means the point that's 1 unit to the right, 2 units up, and 
  1355.        3 units in front the center of the "universe" at <0 0 0>. 
  1356.        Vectors are not always points, though. They can also refer 
  1357.        to an amount to size, move, or rotate a scene element.
  1358.        
  1359.        Declare
  1360.        The parameters used to describe the scene elements can be 
  1361.        tedious to use at times. Some parameters are often repeated 
  1362.        and it seems wasteful to have to type them over and over 
  1363.        again. To make this task easier, the program allows users to 
  1364.        create synonyms for a pre-defined set of parameters and use 
  1365.        them anywhere the parameters would normally be used. For 
  1366.        example, the color white is defined in the POV-Ray language 
  1367.        as:
  1368.        
  1369.           color red 1 green 1 blue 1
  1370.        
  1371.        This can be pre-defined in the scene as:
  1372.        
  1373.  
  1374.        
  1375.                                                   POV-Ray V1.0 Page  28
  1376.        
  1377.        
  1378.        #declare White = color red 1 green 1 blue 1
  1379.        
  1380.        and then substituted for the full description in the scene 
  1381.        file, for example:
  1382.        
  1383.        object {
  1384.           sphere { <0 0 0> 1 }
  1385.           texture { color red 1 green 1 blue 1 }
  1386.        }
  1387.        
  1388.        becomes:
  1389.        #declare White = color red 1 green 1 blue 1
  1390.        
  1391.        object {
  1392.           sphere { <0 0 0> 1 }
  1393.           texture { color White }
  1394.        }
  1395.        
  1396.        This is much easier to type and to read. The pre-defined 
  1397.        element may be used many times in a scene.
  1398.        
  1399.        You use the keyword "declare" to pre-define a scene element 
  1400.        and give it a one-word synonym. This pre-defined scene 
  1401.        element is not used in the scene until you invoke its 
  1402.        synonym. Shapes, textures, objects, colors, numbers and more 
  1403.        can be predefined.
  1404.        
  1405.        Pre-defined elements may be modified when they are used, for 
  1406.        example:
  1407.        
  1408.        #declare Mickey = // Pre-define a union called Mickey
  1409.           union {
  1410.             sphere { <0 0 0> 2 }
  1411.             sphere { <-2 2 0> 1}
  1412.             sphere { <2 2 0> 1}
  1413.           }
  1414.        
  1415.        // Use Mickey
  1416.        object{
  1417.           union {
  1418.              Mickey
  1419.              scale <3 3 3>
  1420.              rotate <0 20 0>
  1421.              translate <0 8 10>
  1422.           }
  1423.           texture {
  1424.             color red 1
  1425.  
  1426.        
  1427.                                                   POV-Ray V1.0 Page  29
  1428.        
  1429.        
  1430.             phong .7
  1431.           }
  1432.        }
  1433.        
  1434.        This scene will only have one "Mickey", the Mickey that is 
  1435.        described doesn't appear in the scene. Notice that Mickey is 
  1436.        scaled, rotated, translated, and a texture is added to it. 
  1437.        The Mickey synonym could be used many times in a scene file, 
  1438.        and each could have a different size, position, orientation, 
  1439.        and texture.
  1440.        
  1441.        Declare is especially powerful when used to create a complex 
  1442.        shape or object. Each part of the shape or object is defined 
  1443.        separately using declare. These parts can be tested, 
  1444.        rotated, sized, positioned, and textured separately then 
  1445.        combined in one shape or object for the final sizing, 
  1446.        positioning, etc. For example, you could define all the 
  1447.        parts of a car like this:
  1448.        
  1449.        #declare Wheel = shape_type {...}
  1450.        #declare Seat = shape_type {...}
  1451.        #declare Body = shape_type {...}
  1452.        #declare Engine = shape_type {...}
  1453.        #declare Steering_Wheel = shape_type {...}
  1454.        
  1455.        #declare Car = 
  1456.          union {
  1457.             shape_type { Wheel translate <1 1 2>}
  1458.             shape_type { Wheel translate <-1 1 2>}
  1459.             shape_type { Wheel translate <1 1 -2>}
  1460.             shape_type { Wheel translate <-1 1 -2>}
  1461.             shape_type { Seat translate <.5 1.4 1>}
  1462.             shape_type { Seat translate <-.5 1.4 1>}
  1463.             shape_type { Steering_Wheel translate <-.5 1.6 1.3>}
  1464.             shape_type { Body texture { Brushed_Steel } }
  1465.             shape_type { Engine translate <0 1.5 1.5> 
  1466.           }
  1467.        
  1468.        and then it like this:
  1469.        
  1470.        // Here is a car
  1471.        object {
  1472.           union { Car }
  1473.           translate <4 0 23>
  1474.        }
  1475.        
  1476.        Notice that the Wheel and Seat are used more than once. A 
  1477.  
  1478.        
  1479.                                                   POV-Ray V1.0 Page  30
  1480.        
  1481.        
  1482.        declared element can be used as many times as you need. 
  1483.        Declared elements may be placed in "include" files so they 
  1484.        can be used with more than one scene.
  1485.        Declare can be used anywhere in a scene or include file.
  1486.        
  1487.        There are several files included with POV-Ray that use 
  1488.        declare to pre-define many shapes, colors, and textures. See 
  1489.        the archive INCLUDE for more info.
  1490.        
  1491.        NOTE: Declare is not the same as the C language's define. 
  1492.        Declare creates an internal object of the type specified 
  1493.        that POV-Ray can recognize when it is prefaced by the object 
  1494.        type, while define substitutes like a macro. The only 
  1495.        declared object type that doesn't need to be prefaced with a 
  1496.        keyword is numeric, which can be used wherever a number is 
  1497.        expected.
  1498.        
  1499.        What can be declared?
  1500.        Here's a list of what can be declared, how to declare the 
  1501.        element, and how to use the declaration. See the reference 
  1502.        section for element syntax.
  1503.        
  1504.        Objects:
  1505.          #declare Tree = object {...}
  1506.           
  1507.          object {
  1508.            Tree
  1509.            (object_modifiers) 
  1510.          }
  1511.        
  1512.        Composite Objects:
  1513.          #declare Duck = composite {...}
  1514.        
  1515.          composite {
  1516.            Duck
  1517.            (object_modifiers) 
  1518.          }
  1519.        
  1520.        Shapes:
  1521.          (Any shape type may be declared, sphere, box, 
  1522.        height_field, blob,
  1523.           etc.)
  1524.          #declare Disk = shape_type {...}
  1525.        
  1526.          object {
  1527.            shape_type { Disk (shape_modifiers) }
  1528.            (object_modifiers) 
  1529.          }
  1530.  
  1531.        
  1532.                                                   POV-Ray V1.0 Page  31
  1533.        
  1534.        
  1535.         
  1536.         Specific Shape Example:
  1537.          #declare BigBox = box {<0 0 0> <10 10 10>}
  1538.        
  1539.          object {
  1540.            box { BigBox (shape_modifiers) }
  1541.            (object_modifiers) 
  1542.          }
  1543.        
  1544.        
  1545.        CSG Shapes:
  1546.          Declare and use these just like a normal shape type. The 
  1547.        CSG shape types are union, intersection, and difference.
  1548.        
  1549.          #declare Moose = csg_shape_type {...}
  1550.        
  1551.          object {
  1552.            shape_type { Moose (shape_modifiers) }
  1553.            (object_modifiers) 
  1554.          }
  1555.        
  1556.        Textures:
  1557.          #declare Fred = texture {...} 
  1558.        
  1559.          object {
  1560.            sphere { <0 0 0> 1 }
  1561.            texture {
  1562.              Fred 
  1563.              (texture_modifiers) 
  1564.            }
  1565.          }
  1566.        
  1567.        Layered textures:
  1568.          #declare Fred = 
  1569.             texture {...} 
  1570.             texture {...} 
  1571.             texture {...} (etc.)
  1572.        
  1573.          object {
  1574.            sphere { <0 0 0> 1 }
  1575.            texture {
  1576.              Fred 
  1577.              (texture_modifiers) 
  1578.            }
  1579.          }
  1580.        
  1581.        
  1582.  
  1583.        
  1584.                                                   POV-Ray V1.0 Page  32
  1585.        
  1586.        
  1587.        Colors:
  1588.          #declare Fred = color red # green # blue # alpha # 
  1589.        
  1590.          object {
  1591.            sphere { <0 0 0> 1 }
  1592.            texture {
  1593.               color Fred 
  1594.            }
  1595.          }
  1596.        
  1597.        Numeric Values:
  1598.          #declare Fred  = 3.45
  1599.          #declare Fred2 = .02
  1600.          #declare Fred3 = .5
  1601.        
  1602.        object { // Use the numeric value synonym 
  1603.                 // anywhere a number would go
  1604.           sphere { <-Fred 2 Fred> Fred }
  1605.           texture { 
  1606.              color red 1
  1607.              phong Fred3
  1608.           }
  1609.        }
  1610.        
  1611.        Camera:
  1612.          #declare Fred = camera {..}
  1613.        
  1614.          camera { Fred }
  1615.        
  1616.        Vectors:
  1617.           #declare Fred = <9 3 2>
  1618.           #declare Fred2 = <4 4 4>
  1619.        
  1620.           object {
  1621.             sphere { Fred 1 }
  1622.             scale Fred2
  1623.           }
  1624.        
  1625.        Light sources:
  1626.           #declare Light1 = light_source {...}
  1627.        
  1628.           object {
  1629.             light_source { Light1 (modifiers) }
  1630.           } 
  1631.           
  1632.        
  1633.        Camera
  1634.        Every scene in POV-Ray must have one and only one camera 
  1635.  
  1636.        
  1637.                                                   POV-Ray V1.0 Page  33
  1638.        
  1639.        
  1640.        definition. The camera definition describes the position, 
  1641.        angle and properties of the camera viewing the scene. 
  1642.        POV-Ray uses this definition to do a simulation of the 
  1643.        camera in the ray-tracing universe and "take a picture" of 
  1644.        your scene.
  1645.        
  1646.        The camera simulated in POV-Ray is a pinhole camera. Pinhole 
  1647.        cameras have a fixed focus so all elements of the scene will 
  1648.        always be perfectly in focus. The pinhole camera is not able 
  1649.        to do soft focus or depth of field effects.
  1650.        
  1651.        The camera block tells the ray tracer the location and 
  1652.        orientation of the camera or viewpoint. The camera is 
  1653.        described by several vectors - 
  1654.        Location, Direction, Up, and Right, Sky, and Look_at.
  1655.        
  1656.        Location specifies the position of the camera in X, Y, Z 
  1657.        coordinates. The camera can be positioned at any point in 
  1658.        the ray-tracing universe.
  1659.        
  1660.          Telephoto and Wide-Angle
  1661.        Direction serves two purposes. It is a vector describing 
  1662.        what direction the camera is pointing. The direction vector 
  1663.        is usually set to point straight ahead. The look_at vector 
  1664.        described below is used to point the camera. It is also used 
  1665.        as a kind of lens length setting. Shorter is more wide 
  1666.        angle, longer is more telephoto.
  1667.        
  1668.        Be careful with short direction vector lengths like 1.0 and 
  1669.        less. You'll end up with distortion on the edges of your 
  1670.        images. Objects will appear to be shaped strangely. If this 
  1671.        happens, move the location back and make the direction 
  1672.        vector longer.
  1673.        
  1674.        The Up vector describes the "up" direction of the camera to 
  1675.        POV-Ray. It tells POV-Ray where the top of your screen is.
  1676.        
  1677.        The Right vector describes the direction to the right of the 
  1678.        camera. It tells POV-Ray where the right side of your screen 
  1679.        is.The sign of the right vector also determines the 
  1680.        "handedness" of the coordinate system in use. A normal 
  1681.        (left-handed) right statement would be:
  1682.        
  1683.        right <1.33 0 0>
  1684.        
  1685.        To use a right-handed coordinate system, as is popular in 
  1686.        some CAD programs and some other ray-tracers use a right 
  1687.  
  1688.        
  1689.                                                   POV-Ray V1.0 Page  34
  1690.        
  1691.        
  1692.        like:
  1693.        
  1694.        right <-1.33 0 0>
  1695.        
  1696.        Some CAD systems, like AutoCAD, also have the assumption 
  1697.        that the Z axis is the "elevation" and is the "up" direction 
  1698.        instead of the Y axis. If this is the case you will want to 
  1699.        change your "up" statement to:
  1700.        
  1701.        up <0 0 1>
  1702.        
  1703.        Together the Up and Right vectors define the aspect ratio of 
  1704.        the image being rendered. These vectors are described in 
  1705.        more detail later in this document.
  1706.        
  1707.        Here's a basic declaration of a camera:
  1708.        
  1709.        camera {
  1710.          location  <0 0 0>
  1711.          direction <0 0 1>
  1712.          up        <0 1 0>
  1713.          right     <1.33 0 0>
  1714.        }
  1715.        
  1716.        The above vectors are set to their default values. If you do 
  1717.        not specify a value then these defaults are used. For 
  1718.        instance, if your camera definition didn't have the line "up 
  1719.        <0 1 0>", the up vector would still be set to "up <0 1 0>" 
  1720.        because POV-Ray does that automatically, by default.
  1721.        
  1722.        These four vectors may be specified in any order. They 
  1723.        should be specified before the modifiers sky and look_at 
  1724.        which are described below.
  1725.        
  1726.          Sky and Look_at
  1727.        If the camera always pointed straight along an X, Y or Z 
  1728.        axis this definition format would be easy enough. In almost 
  1729.        all cases however, the camera angle is much more 
  1730.        interesting. This format becomes cumbersome then because its 
  1731.        difficult to compute the vectors by hand.
  1732.        
  1733.        Fortunately, POV-Ray doesn't require you to do any vector 
  1734.        computations. The vectors Sky and Look_at make it easy to 
  1735.        point the camera just the direction you'd like.
  1736.        
  1737.        The look_at keyword defines the specific point the camera 
  1738.        should be pointing at. The camera is rotated as required to 
  1739.  
  1740.        
  1741.                                                   POV-Ray V1.0 Page  35
  1742.        
  1743.        
  1744.        point the "center of the lens" directly at that point.
  1745.        
  1746.        Normally, you will use the look_at keyword, not the 
  1747.        direction vector to point the camera. The look_at command is 
  1748.        the best way to rotate the camera to point at a scene 
  1749.        element. Also, it should always be last in the camera 
  1750.        definition. Rotate and translate may be used in the camera 
  1751.        definition, but they should be used before look_at or the 
  1752.        camera will probably not remain looking at the point 
  1753.        specified.
  1754.        
  1755.        The sky keyword tells the camera where the sky in the 
  1756.        ray-tracing universe is. POV-Ray uses the sky vector to keep 
  1757.        the camera's up direction aligned as closely as possible to 
  1758.        the sky.
  1759.        
  1760.        One subtle point: the sky direction is not necessarily the 
  1761.        same as the up direction. For example, consider the 
  1762.        following situation:
  1763.        
  1764.        
  1765.                  S^
  1766.                   | /U
  1767.                   |/
  1768.                   C
  1769.                    \
  1770.                     \
  1771.                      \
  1772.                       O
  1773.        
  1774.        If you said that the camera C has a sky direction S and is 
  1775.        looking at O, the up direction will not point to the sky. 
  1776.        Imagine hanging your camera from a string attached at the 
  1777.        top of the camera. The string points to the sky. The up 
  1778.        keyword is like putting an antenna on your camera. If you 
  1779.        point the camera downwards using look_at, the antenna will 
  1780.        no longer point straight up.
  1781.        
  1782.        Note that the default value for sky is <0 1 0>. Sky affects 
  1783.        the other vectors when you use look_at.
  1784.        
  1785.        Sky must be defined before the look_at point. 
  1786.        
  1787.        
  1788.          Aspect Ratio
  1789.        As mentioned before, the length of the up and right vectors 
  1790.        controls the aspect ratio of the image. Typically computer 
  1791.  
  1792.        
  1793.                                                   POV-Ray V1.0 Page  36
  1794.        
  1795.        
  1796.        screens have an aspect ratio (width to height ratio) of 4:3. 
  1797.        Most of the sample images distributed with POV-Ray were 
  1798.        designed to fill the "landscape" orientation of a typical 
  1799.        screen and they generally define "up <0 1 0>" and "right 
  1800.        <1.33 0 0>". Thus the right-to-up ratio is 1.33:1 or about 
  1801.        4:3. A tall, slim picture might use "up <0 5 0> right <1 0 
  1802.        0>".
  1803.        
  1804.        Note that this is the ratio of the overall image and is 
  1805.        independent of pixel size or shape. If you assume square 
  1806.        pixels then the command line values "+w" and "+h" should 
  1807.        also have this same ratio. If you have non-square pixels you 
  1808.        should adjust the "+w" & "+h" values... not the up & right 
  1809.        values.
  1810.        
  1811.        Suppose we have "up <0 1 0> right <1.33 0 0>" giving a 4:3 
  1812.        ratio. On an IBM VGA 640x480 mode the pixels are square so 
  1813.        you would specify "+w640 +h480" on the command line. Note 
  1814.        that 640:480 = 4:3 = 1.33:1. However there is a mode on 
  1815.        Amiga that has wide, flat pixels which fills the screen when 
  1816.        320 by 400 pixels are used. You would still keep the same up 
  1817.        & right vectors because the image itself should still look 
  1818.        4:3 wide. But you would specify "+w320 +h400" on the command 
  1819.        line to compensate for non-square pixels.
  1820.        
  1821.        
  1822.          Translating and Rotating the Camera
  1823.        Also, the "translate" and "rotate" commands can re-position 
  1824.        the camera once you've defined it.
  1825.        
  1826.        For example:
  1827.          camera {
  1828.            location  <0  0  0>
  1829.            direction <0  0  1>
  1830.            up        <0  1  0>
  1831.            right     <1  0  0>
  1832.            translate <5  3  4>
  1833.            rotate   <30 60 30>
  1834.          }
  1835.        
  1836.        In this example, the camera is created, then translated to 
  1837.        another point in space and rotated by 30 degrees about the X 
  1838.        axis, 60 degrees about the Y axis, and 30 degrees about the 
  1839.        Z axis.
  1840.        
  1841.        light_source
  1842.        Syntax: light_source { <center> color ...}
  1843.        
  1844.  
  1845.        
  1846.                                                   POV-Ray V1.0 Page  37
  1847.        
  1848.        
  1849.        Light sources are treated like shapes, but they are 
  1850.        invisible points from which light rays stream out. They 
  1851.        light objects and create shadows and highlights. Because of 
  1852.        the way ray tracing works, lights do not reflect. You can 
  1853.        use many light sources in a scene, but each light source 
  1854.        used will increase rendering time. The brightness of a light 
  1855.        is determined by its color. A bright color is a bright 
  1856.        light, a dark color, a dark one. White is the brightest 
  1857.        possible light , Black is completely dark and Grey is 
  1858.        somewhere in the middle.
  1859.        The syntax for a light source is:
  1860.        
  1861.          light_source { <X Y Z> color red # green # blue #} 
  1862.        
  1863.        Where X, Y and Z are the coordinates of the location and 
  1864.        color , is any color or color identifier. For example,
  1865.        
  1866.          light_source { <3 5 -6> color Grey} 
  1867.        
  1868.        Is a Grey light at X=3, Y=5, Z=-6.
  1869.        
  1870.        spotlight light_source
  1871.        Syntax:   light_source {  <center> color red # green # blue 
  1872.        #
  1873.              spotlight
  1874.              point_at <point>
  1875.              radius #
  1876.              falloff #
  1877.              tightness #
  1878.             }
  1879.        
  1880.        A spotlight is a point light source where the rays of light 
  1881.        are constrained by a cone. The light is bright in the center 
  1882.        of the spotlight and falls off/darkens to soft shadows at 
  1883.        the edges of the circle. 
  1884.        
  1885.        
  1886.                   (+) Spotlight
  1887.                   /|\
  1888.                  / | \
  1889.                 / ||| \
  1890.                /  |||  \
  1891.               /  |||||  \
  1892.              /   |||||   \
  1893.                   +-+       = radius
  1894.              +-----*-----+  = 
  1895.                    ^ point_at
  1896.                     
  1897.  
  1898.        
  1899.                                                   POV-Ray V1.0 Page  38
  1900.        
  1901.        
  1902.        The center and color of the spotlight is specified the same 
  1903.        way as a normal light_source. 
  1904.        
  1905.        Point_at <point> is the location that the cone of light is 
  1906.        aiming at. 
  1907.        
  1908.        The radius # is the radius in degrees of the bright circular 
  1909.        hotspot at the center of the spotlight's area of affect. 
  1910.        
  1911.        The falloff # is the falloff radius of the spotlight area in 
  1912.        degrees. This is the value where the light "falls off" to 
  1913.        zero brightness. Falloff should be larger than 
  1914.        the radius. Both values should be between 1 and 180.
  1915.        
  1916.        The tightness value is how fast the light falls off at the 
  1917.        edges. Low values will make the spot have very soft edges. 
  1918.        High values will make the edges sharper, the spot 
  1919.        "tighter".
  1920.        
  1921.        Spotlights may used anyplace that a normal light source is 
  1922.        used. Like normal light sources, they are invisible points. 
  1923.        They are treated as shapes and may be included in CSG 
  1924.        shapes.
  1925.        
  1926.        Example: 
  1927.        // This is the spotlight.
  1928.           light_source {
  1929.              <10 10 0>
  1930.              color red 1 green 1 blue 0.5
  1931.              spotlight
  1932.              point_at <0 1 0>
  1933.              tightness 50
  1934.              radius 11
  1935.              falloff 25
  1936.             }
  1937.        
  1938.        
  1939.        no_shadow
  1940.        Syntax: object { shape {...} texture {...} no_shadow }
  1941.        
  1942.        You may specify the no_shadow keyword in object and that 
  1943.        object will be transparent to all light sources. It will not 
  1944.        cast a shadow. This is useful for special effects and for 
  1945.        creating the illusion that a light source actually is 
  1946.        visible.
  1947.        Here are two examples of "visible" light sources using 
  1948.        no_shadow: 
  1949.        
  1950.  
  1951.        
  1952.                                                   POV-Ray V1.0 Page  39
  1953.        
  1954.        
  1955.        // This a light masquerading as the sun.
  1956.        // Note: The texture does not affect the light,
  1957.        //      only the sphere
  1958.         object {
  1959.           union { // the union is a CSG shape type,
  1960.                   // see CSG for more info
  1961.           sphere { <0 50 200> 100 }
  1962.           light_source { <0  50 200>  color red 1 green .5  }
  1963.          }
  1964.           texture { 
  1965.              color red 1 green .5 
  1966.              ambient 1
  1967.              diffuse 0
  1968.           }
  1969.         no_shadow
  1970.         }
  1971.        // This is the spotlight trying to be a small sphere.
  1972.         object {
  1973.           union { // the union is a CSG shape type,
  1974.                   // see CSG for more info
  1975.           sphere { <10 10 0> 0.5 }
  1976.           light_source {
  1977.              <10 10 0>
  1978.              color red 1 green 1 blue 0.5
  1979.              spotlight
  1980.              point_at <0 1 0>
  1981.              tightness 50
  1982.              radius 11
  1983.              falloff 25
  1984.           }
  1985.          }
  1986.         texture { color White ambient 1 diffuse 0 }
  1987.         no_shadow
  1988.         }
  1989.        
  1990.        If no_shadow were not used here, the light inside the 
  1991.        spheres would not escape the sphere and would not show up in 
  1992.        the scene. The sphere would, in effect, cast a shadow over 
  1993.        everything.
  1994.        
  1995.        Note that it does not mean 'this light_source casts no 
  1996.        shadow'. No_shadow affects the entire object and means 'this 
  1997.        object casts no shadow'." Although the no_shadow keyword is 
  1998.        most often used with light_sources, it can be used in any 
  1999.        object.
  2000.        
  2001.  
  2002.        
  2003.                                                   POV-Ray V1.0 Page  40
  2004.        
  2005.        
  2006.        
  2007.        
  2008.        Objects
  2009.        
  2010.        An object is made out of three basic elements: a shape, a 
  2011.        texture, and transformations. 
  2012.        
  2013.        The shape is the form of the object, like a sphere, a cone 
  2014.        or a cylinder. The shape can be any standard shape type or 
  2015.        it can be a CSG shape type, like union, or intersection. The 
  2016.        CSG shape types create one shape that is made up of multiple 
  2017.        shapes. Any shape may have its own texture.
  2018.        
  2019.        The texture describes what a shape or object looks like, ie. 
  2020.        its material.
  2021.        
  2022.        The transformations tell the ray tracer how to move, size or 
  2023.        rotate the shape and/or the texture in the scene.
  2024.        
  2025.        Here's the basic layout for an object:
  2026.        object {
  2027.          shape   { 
  2028.            (shape parameters)   
  2029.            [shape transformations] 
  2030.          }
  2031.          [shape only transformations] 
  2032.        
  2033.          texture { 
  2034.             (texture parameters) 
  2035.             [texture transformations] 
  2036.          }
  2037.          [object,shape and texture, transformations]  
  2038.        }
  2039.        
  2040.        For example:
  2041.        
  2042.        object {
  2043.          sphere { <1 2 3> 2 }
  2044.          texture { marble scale <2 2 2> }
  2045.          scale <5 5 5>  // This transformation scales 
  2046.                         // both shape and texture
  2047.        }
  2048.        
  2049.        CSG shapes are the same:
  2050.        
  2051.        object {
  2052.          intersection { Disk_Y }
  2053.          scale < .2 1 .2 > // This scales shape only
  2054.          texture { 
  2055.  
  2056.        
  2057.                                                   POV-Ray V1.0 Page  41
  2058.        
  2059.        
  2060.             marble 
  2061.             scale <2 2 2> // This scales texture only
  2062.          }
  2063.          scale <2 1 3>  // This scales both shape and texture
  2064.        }
  2065.        
  2066.        Quick Render Color 
  2067.        
  2068.        When used outside of the texture block in an object, the 
  2069.        color keyword determines what color to use for a low quality 
  2070.        rendering when textures are ignored. When the quality 
  2071.        command option is set to +q0, +q1, ..., +q5, the program 
  2072.        will use the quick color for objects instead of the texture. 
  2073.        Normally, +q is set to +q9 and the quick color won't affect 
  2074.        the object.
  2075.         
  2076.        Example:
  2077.        object {
  2078.           shape { ... }
  2079.           texture { ... }
  2080.           color red # green # blue #   // This is the quick 
  2081.                                        // render color
  2082.        }
  2083.        
  2084.        Transformations
  2085.        
  2086.        Often, vectors are used as a convenient notation but don't 
  2087.        represent a point in space. This is the case for the 
  2088.        transformations scale, rotate, and translate. Scale sizes a 
  2089.        shape, texture or object. Translate moves a shape, texture 
  2090.        or object. And rotate turns a shape, texture or object.
  2091.        
  2092.        Note: Transformations are relative to the current 
  2093.        transformation of the scene element.  That is, they are 
  2094.        additive. For example, scale <2 0 0> scale <2 0 0> actually 
  2095.        scales by 4 in X direction.
  2096.        
  2097.        Most scene elements like objects, shapes, and lights can be 
  2098.        translated, rotated, and scaled just like surfaces. 
  2099.        
  2100.        If an object is transformed, all textures attached to the 
  2101.        object at that time are transformed as well. This means that 
  2102.        if you have a translate, rotate, or scale in an object 
  2103.        before a texture, the texture will not be transformed. If 
  2104.        the scale, translate, or rotate is after the texture, the 
  2105.        texture will be transformed.
  2106.        
  2107.        For example,
  2108.           object {
  2109.             sphere { <0 0 0> 1}
  2110.             texture { marble }
  2111.  
  2112.        
  2113.                                                   POV-Ray V1.0 Page  42
  2114.        
  2115.        
  2116.             scale <3 3 3> // This scale affects the 
  2117.                           // shape and texture
  2118.           }
  2119.           object {
  2120.             sphere { <0 0 0> 1}
  2121.             scale <3 3 3> // This scale affects the 
  2122.                           // shape only
  2123.             texture { marble }
  2124.           }
  2125.        
  2126.        
  2127.        
  2128.        Scale
  2129.        Syntax:
  2130.        scale <xs ys zs>
  2131.        
  2132.        Scale the element by xs units in the left/right direction, 
  2133.        ys units in the up/down direction and zs units in the 
  2134.        front/back direction. Scale is used to "stretch" or "squish" 
  2135.        an element. Values larger than 1 stretch the element on that 
  2136.        axis. Values smaller than one are used to squish the element 
  2137.        on that axis. Scale is relative to the current element size. 
  2138.        If the element has been previously re-sized using scale, 
  2139.        then scale will size relative to the new size. Multiple 
  2140.        scale values may used.
  2141.        
  2142.        Rotate
  2143.        Syntax:
  2144.        rotate <xr yr zr>
  2145.        
  2146.        Rotate the element xr degrees about the X axis, then yr 
  2147.        degrees about the Y axis, then zr degrees about the Z axis. 
  2148.        Rotate turns the object relative to its current position. 
  2149.        Multiple rotate values may used.
  2150.        
  2151.        Note that the order of the rotations does matter and you 
  2152.        should use multiple rotation statements to get a correct 
  2153.        multiple rotation. You should only rotate on one axis at a 
  2154.        time. As in,
  2155.           rotate <0 30 0>  // 30 degrees around Y axis then,
  2156.           rotate <-20 0 0> // -20 degrees around X axis then,
  2157.           rotate <0 0 10>  // 10 degrees around Z axis.
  2158.        
  2159.        Note also that rotate always rotates around the point <0 0 
  2160.        0> so if you translate the object before rotating, it will 
  2161.        be rotated "in orbit" around <0 0 0>.
  2162.        
  2163.        Translate
  2164.        Syntax:
  2165.        translate <x y z>
  2166.  
  2167.        
  2168.                                                   POV-Ray V1.0 Page  43
  2169.        
  2170.        
  2171.        
  2172.        Move the element x units to the right, y units up, and z 
  2173.        units away from us. Translate moves the element relative to 
  2174.        it's current position. For example,
  2175.        
  2176.          object {
  2177.            sphere { <10 10 10> 1 } 
  2178.            texture { color Green }
  2179.            translate <-5 2 1>
  2180.          }
  2181.        
  2182.        Will move the sphere from <10 10 10> to <5 12 11> not <5 2 
  2183.        1>. Translating by zero will leave the element unchanged on 
  2184.        that axis. For example,
  2185.        
  2186.          object {
  2187.            sphere { <10 10 10> 1 } 
  2188.            texture { color Green }
  2189.            translate <0 0 0>
  2190.          }
  2191.        
  2192.        Will not move the sphere at all.
  2193.        
  2194.        Multiple translates may be used.
  2195.        
  2196.        
  2197.        Transformation order
  2198.        Generally, this is the order that you should perform these 
  2199.        operations in. If you scale after you translate, the scale 
  2200.        will multiply the translate amount. For example:
  2201.        
  2202.          translate < 5 6 7>
  2203.          scale <4 4 4>
  2204.        
  2205.        Will translate to 20, 24, 28 instead of 5, 6, 7. Be careful 
  2206.        when transforming to get the order correct for your 
  2207.        purposes.
  2208.  
  2209.        
  2210.                                                   POV-Ray V1.0 Page  44
  2211.        
  2212.        
  2213.        
  2214.        
  2215.        "Handedness" -- Rotation Direction
  2216.        To work out the rotation directions, you must perform the 
  2217.        famous "Computer Graphics Aerobics" exercise. Hold up your 
  2218.        left hand. point your thumb in the positive direction of the 
  2219.        axis you want to rotate about. Your fingers will curl in the 
  2220.        positive direction of rotation. This is the famous 
  2221.        "left-hand coordinate system". 
  2222.        
  2223.                       ^
  2224.                     +Y|   +Z/ _
  2225.                       |    /_| |_  _
  2226.                       |   _| | | |/ \
  2227.                       |  | | | | |  |
  2228.                       | /| | | | |  V
  2229.             -X        |/ | | | | |    +X
  2230.            <----------+--|-|-|-|-|------>
  2231.                      /|  |       \____
  2232.                     / |  |         ___|
  2233.                    /  |  \        /
  2234.                   /   |   |      /
  2235.                -Z/  -Y|
  2236.                 /     |  
  2237.        
  2238.        In this illustration, the left hand is curling around the X 
  2239.        axis. The thumb points in the positive X direction and the 
  2240.        fingers curl over in the positive rotation direction.
  2241.        
  2242.        If you want to use a right hand system, as some CAD systems 
  2243.        such as AutoCAD do, the right vector in the camera needs to 
  2244.        be changed. See the detailed description of the camera, and 
  2245.        use your right hand for the "Aerobics". 
  2246.        
  2247.        Shapes
  2248.        
  2249.        Shapes describe the shape of an object without mentioning 
  2250.        any surface characteristics like color, surface lighting and 
  2251.        reflectivity. 
  2252.        
  2253.        Spheres
  2254.        Since spheres are so common in ray traced graphics, A sphere 
  2255.        primitive has been added to the system. This primitive will 
  2256.        render much more quickly than the corresponding quadric 
  2257.        shape. The syntax is:
  2258.        
  2259.             sphere { <center> radius }
  2260.        
  2261.        You can also add translations, rotations, and scaling to the 
  2262.        sphere. For example, the following two objects are 
  2263.  
  2264.        
  2265.                                                   POV-Ray V1.0 Page  45
  2266.        
  2267.        
  2268.        identical:
  2269.        
  2270.        object{
  2271.          sphere { < 0.0 25.0 0.0 > 10.0 }
  2272.            texture {
  2273.              color Blue
  2274.              phong .5
  2275.            }
  2276.        }
  2277.        
  2278.        object {
  2279.          sphere { < 0.0 0.0 0.0 > 1.0
  2280.             scale <10.0  10.0  10.0>
  2281.             translate <0.0  25.0  0.0> 
  2282.          }
  2283.          texture {
  2284.             color Blue
  2285.              phong .5
  2286.          }
  2287.        }
  2288.        
  2289.        Note that Spheres may only be scaled uniformly. You cannot 
  2290.        use:
  2291.        
  2292.             scale <10.0 5.0 2.0>
  2293.        
  2294.        on a sphere. If you need oblate (flattened) spheroids, use a 
  2295.        quadric "Ellipsoid" shape instead, as it can be arbitrarily 
  2296.        scaled in any dimension. 
  2297.        
  2298.        Planes
  2299.        Another primitive provided to speed up the raytracing is the 
  2300.        plane. This is a flat infinite plane. To declare a plane, 
  2301.        you specify the direction of the surface normal to the plane 
  2302.        (the up direction) and the distance from the origin of the 
  2303.        plane to the world's origin. As with spheres, you can 
  2304.        translate, rotate, and scale planes. 
  2305.        Examples:
  2306.        A plane in the X-Z axes 10 units below the world origin. 
  2307.        Like a floor or ceiling.
  2308.        
  2309.        plane { <0.0  1.0  0.0> -10.0 }
  2310.        
  2311.        A plane in the X-Z axes 10 units above the world origin. 
  2312.        Like a wall in front of the viewer.
  2313.        
  2314.        plane { <0.0  1.0  0.0>  10.0 }
  2315.        
  2316.  
  2317.        
  2318.                                                   POV-Ray V1.0 Page  46
  2319.        
  2320.        
  2321.        A plane in the X-Y axes 10 units behind the world origin. 
  2322.        Like a wall to the side of the viewer.
  2323.        
  2324.        plane <0.0  0.0  1.0>  -10.0 }
  2325.        
  2326.        Boxes
  2327.        A simple box can be defined by listing two corners of the 
  2328.        box like this:
  2329.        
  2330.          box { <corner1> <corner2> }
  2331.          box { <0 0 0> <1 1 1> }
  2332.        
  2333.        Corner1 should be smaller than corner2. That is, each 
  2334.        element of  Corner1 should be less than the corresponding 
  2335.        element in Corner2. If any elements of Corner1 are larger 
  2336.        than Corner2, the box will not appear in the scene.
  2337.        
  2338.        Corner1 and corner2 are XYZ points. Boxes are calculated 
  2339.        efficiently and make good bounding shapes. As with all 
  2340.        shapes, they can be translated, rotated and scaled.
  2341.        
  2342.        Quadric Shapes
  2343.        Quadric Surfaces can produce shapes like ellipsoids 
  2344.        (spheres), cones, cylinders, paraboloids (dish shapes), and 
  2345.        hyperboloids (saddle or hourglass shapes).
  2346.        
  2347.        The easiest way to use these shapes is to include the 
  2348.        standard file "SHAPES.INC" into your program. It contains 
  2349.        several pre-defined quadrics and you can transform these 
  2350.        pre-defined shapes (using translate, rotate, and scale) into 
  2351.        the ones you want.
  2352.        
  2353.        To be complete, here are the mathematical principles behind 
  2354.        quadric surfaces. Those who are not interested in the 
  2355.        mathematical details can skip to the next section. 
  2356.        The quadric:
  2357.              quadric {
  2358.                  <A B C>
  2359.                  <D E F>
  2360.                  <G H I>
  2361.                  J
  2362.              }
  2363.        
  2364.        defines a surface in three dimensions which satisfies the 
  2365.        following equation:
  2366.        
  2367.               A y^2   + B y^2   + C z^2
  2368.             + D xy    + E xz    + F yz
  2369.             + G x     + H y     + I z    + J = 0
  2370.  
  2371.        
  2372.                                                   POV-Ray V1.0 Page  47
  2373.        
  2374.        
  2375.        
  2376.        Different values of A,B,C,...J will give different shapes. 
  2377.        So, if you take any three dimensional point and use its x, 
  2378.        y, and z coordinates in the above equation, the answer will 
  2379.        be 0 if the point is on the surface of the object. The 
  2380.        answer will be negative if the point is inside the object 
  2381.        and positive if the point is outside the object. Here are 
  2382.        some examples: 
  2383.             X**2 + Y**2 + Z**2 - 1 = 0 Sphere
  2384.             X**2 + Y**2 - 1 = 0        Cylinder along the Z axis     
  2385.        
  2386.             X**2 + Y**2 - Z**2 = 0     Cone along the Z axis
  2387.        
  2388.        Quadric surfaces the easy way
  2389.        The file "shapes.inc" uses the declare command to pre-define 
  2390.        many quadric surfaces. You can invoke them by using the 
  2391.        syntax,
  2392.        
  2393.          quadric { Quadric_Name }
  2394.        
  2395.        The pre-defined quadrics are centered about the origin <0 0 
  2396.        0> and have a radius of 1. Don't confuse radius with width. 
  2397.        The radius is half the diameter or width making the standard 
  2398.        quadrics 2 units wide.
  2399.        
  2400.        Some of the pre-defined quadrics are,
  2401.        
  2402.         Ellipsoid
  2403.         Cylinder_X, Cylinder_Y, Cylinder_Z
  2404.         QCone_X, QCone_Y, QCone_Z
  2405.         Paraboloid_X, Paraboloid_Y, Paraboloid_Z
  2406.        
  2407.        For a complete list, see the file SHAPES.INC.
  2408.        
  2409.        To use the pre-defined quadrics, you describe shapes simply 
  2410.        as follows:
  2411.        
  2412.        #include "colors.inc"
  2413.        #include "shapes.inc" // The shape definitions are 
  2414.                             // in this file 
  2415.        #include "textures.inc"
  2416.        
  2417.        quadric {
  2418.          Cylinder_X  // This is the predefined quadric name
  2419.          scale     <50 50 50>
  2420.          rotate    <0 45 0>
  2421.          rotate    <30 0 0>
  2422.          translate <2 5 6>
  2423.  
  2424.        
  2425.                                                   POV-Ray V1.0 Page  48
  2426.        
  2427.        
  2428.          }
  2429.        
  2430.        You may have as many transformation commands (scale, rotate, 
  2431.        and translate) as you like in any order. Usually, however, 
  2432.        it's best to do a scale first, one or more rotations, then 
  2433.        finally a translation. Otherwise, the results may not be 
  2434.        what you expect.
  2435.        
  2436.        The transformations always transform the object about the 
  2437.        origin. If you have a sphere at the origin and you translate 
  2438.        it then rotate it, the rotation will spin the sphere around 
  2439.        the origin like planets about the sun.
  2440.        
  2441.        Triangles
  2442.        The triangle shape is available in order to make more 
  2443.        complex objects than the built-in shapes will permit. 
  2444.        Triangles are usually not created by hand, but are converted 
  2445.        from other files or generated by utilities. 
  2446.        
  2447.        There are two different types of triangles: flat shaded 
  2448.        triangles and smooth shaded (Phong) triangles.
  2449.        
  2450.        Flat shaded triangles are defined by listing the three 
  2451.        vertices of the triangle. For example:
  2452.        
  2453.                triangle { <0 20 0> <20 0 0> <-20 0 0> }
  2454.        
  2455.        The smooth shaded triangles use a formula called Phong 
  2456.        normal interpolation to calculate the surface normal for the 
  2457.        triangle. This makes the triangle appear to be a smooth 
  2458.        curved surface. In order to define a smooth triangle, 
  2459.        however, you must supply not only the vertices,but also the 
  2460.        surface normals at those vertices. For example:
  2461.        
  2462.             smooth_triangle {
  2463.                <  0  30 0 >    <0  .7071 -.7071>
  2464.                < 40 -20 0 >    <0 -.8664 -.5   >
  2465.                <-50 -30 0 >    <0 -.5    -.8664>
  2466.             }
  2467.        
  2468.        As with the other shapes, triangles can be translated, 
  2469.        rotated, and scaled.
  2470.        
  2471.        NOTE 1: Triangles cannot be used in CSG intersection or 
  2472.        difference types (described next) since triangles have no 
  2473.        clear "inside". The CSG union type works acceptably, but 
  2474.        with no real difference from a composite made up of TRIANGLE 
  2475.        primitives.
  2476.  
  2477.        
  2478.                                                   POV-Ray V1.0 Page  49
  2479.        
  2480.        
  2481.        
  2482.        Quartic Surfaces
  2483.        Quartics are just like quadrics in that you don't have to 
  2484.        understand what one is to use one. The file SHAPESQ.INC has 
  2485.        plenty of pre-defined quartics for you to play with. The 
  2486.        most common one is the torus or donut. The syntax for using 
  2487.        a pre-defined quartic is:
  2488.           
  2489.            quartic { Quartic_Name (sturm) }
  2490.        
  2491.        They may be scaled, rotated, and translated like all other 
  2492.        shape types. 
  2493.        
  2494.        Quartics use highly complex computations and will not always 
  2495.        render perfectly. If the quartic is not smooth, has 
  2496.        dropouts, or extra random pixels, try using the optional 
  2497.        keyword "sturm" in the definition. This will cause a slower, 
  2498.        but more accurate calculation method to be used. Usually, 
  2499.        but not always, this will solve the problem. If sturm 
  2500.        doesn't work, try rotating, or translating the shape by some 
  2501.        small amount. See the archive MATH for examples of quartics 
  2502.        in scenes.
  2503.        
  2504.        Here's a more mathematical description of quartics for those 
  2505.        who are interested.
  2506.        Quartic surfaces are 4th order surfaces, and can be used to 
  2507.        describe a large class of shapes including the torus, the lemniscate, 
  2508.        etc. The general equation for a quartic equation in three 
  2509.        variables is (hold onto your hat):
  2510.        
  2511.        a00 x^4 + a01 x^3 y + a02 x^3 z+ a03 x^3 + a04 x^2 y^2+     
  2512.        
  2513.        a05 x^2 y z+ a06 x^2 y + a07 x^2 z^2+a08 x^2 z+a09 x^2+  
  2514.        a10 x y^3+a11 x y^2 z+ a12 x y^2+a13 x y z^2+a14 x y z+ 
  2515.        a15 x y + a16 x z^3 + a17 x z^2 + a18 x z + a19 x+
  2516.        a20 y^4 + a21 y^3 z + a22 y^3+ a23 y^2 z^2 +a24 y^2 z+ 
  2517.        a25 y^2 + a26 y z^3 + a27 y z^2 + a28 y z + a29 y+ 
  2518.        a30 z^4 + a31 z^3 + a32 z^2 + a33 z + a34
  2519.        
  2520.        To declare a quartic surface requires that each of the 
  2521.        coefficients (a0 -> a34) be placed in order into a single 
  2522.        long vector of 35 terms. 
  2523.        
  2524.        As an example, the following object declaration is for a 
  2525.        torus having major radius 6.3 minor radius 3.5 (Making the 
  2526.        maximum width just under 10). 
  2527.        //Torus having major radius sqrt(40), minor radius sqrt(12)  
  2528.  
  2529.        
  2530.                                                   POV-Ray V1.0 Page  50
  2531.        
  2532.        
  2533.        object {
  2534.           quartic {
  2535.              < 1.0   0.0   0.0   0.0   2.0   0.0   0.0   2.0   0.0       
  2536.        
  2537.             -104.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0       
  2538.        
  2539.                0.0   0.0   1.0   0.0   0.0   2.0   0.0  56.0   0.0       
  2540.        
  2541.                0.0   0.0   0.0   1.0   0.0 -104.0  0.0 784.0 >
  2542.              }
  2543.              bounded_by { // bounded_by speeds up the render,
  2544.                           // see bounded_by
  2545.                           // explanation later 
  2546.                           // in docs for more info.
  2547.               sphere { <0 0 0> 10 }
  2548.              }
  2549.             }
  2550.        
  2551.        The code to calculate Ray-Surface intersections for quartics 
  2552.        is somewhat slower than that for intersections with quadric 
  2553.        surfaces. Benchmarks on a stock 8Mhz IBM-PC AT (with FPU) 
  2554.        give results of around 1400 solutions per second for 2nd 
  2555.        order equations (quadrics) vs 444 per second for 3rd order 
  2556.        equations and 123 per second for 4th order equations 
  2557.        (quartics). So clever use of bounding shapes can make a big 
  2558.        difference in processing time. 
  2559.        
  2560.        While a great deal of time has gone into debugging the code 
  2561.        for handling quartic surfaces, we know there are possible 
  2562.        bad combinations of surface equations and lighting 
  2563.        orientations that could cause math errors. If this happens 
  2564.        to you, as the joke goes, "then don't DO that."
  2565.        Here are some quartic surfaces to get you started.
  2566.        
  2567.        A Torus can be represented by the equation:
  2568.        
  2569.        x^4 + y^4 + z^4 + 2 x^2 y^2 + 2 x^2 z^2 + 2 y^2 z^2
  2570.        -2 (r0^2 + r1^2) x^2 + 2 (r0^2 - r1^2) y^2 
  2571.        -2 (r0^2 - r1^2) z^2 + (r0^2 - r1^2)^2 = 0
  2572.        
  2573.        Where r0 is the "major" radius of the torus - the distance 
  2574.        from the hole of the donut to the middle of the ring of the 
  2575.        donut, and r1 is the "minor" radius of the torus - the 
  2576.        distance from the middle of the ring of the donut to the 
  2577.        outer surface. Described another way, a torus is a circle 
  2578.        that is revolved around an axis. The major radius is the 
  2579.        distance from the axis to the center of the circle, the 
  2580.  
  2581.        
  2582.                                                   POV-Ray V1.0 Page  51
  2583.        
  2584.        
  2585.        minor radius is the radius of the circle. 
  2586.        
  2587.        Note that scaling surfaces like a torus scales everything 
  2588.        uniformly. In order to change the relationship between the 
  2589.        size of the hole and the size of the ring, it is necessary 
  2590.        to enter new coefficients for the torus.
  2591.        
  2592.        The only coefficients of the 35 that need to be filled in 
  2593.        are:
  2594.        
  2595.            a0  = a20 = a30 = 1,
  2596.            a4  = a7  = a23 = 2,
  2597.            a9  = a32       = -2 (r0^2 + r1^2)
  2598.            a25             = 2 (r0^2 - r1^2)
  2599.            a34             = 2 (r0^2 - r1^2)^2
  2600.        
  2601.        the torus can then be rotated and translated into position 
  2602.        once its shape has been defined. (See 'TORUS.POV')
  2603.        A generalization of the lemniscate of Gerono can be 
  2604.        represented by the equation:
  2605.        
  2606.           c^2 x^4 - a^2 c^2 x^2 + y^2 + z^2 = 0
  2607.        
  2608.        where good start values are a = 1.0 and c = 1.0, giving the 
  2609.        coefficients:
  2610.        
  2611.           a0 = a25 = a32 = 1,
  2612.           a9 = -1
  2613.        
  2614.        (See the example file "LEMNISCA.POV" for a more complete 
  2615.        example)
  2616.        
  2617.        A generalization of a piriform can be represented by the 
  2618.        equation:
  2619.           -b c^2 x^4 - a c^2 x^3 + y^2 + z^2 = 0
  2620.        where good start values are a = 4, b = -4, c = 1, giving the 
  2621.        coefficients
  2622.        
  2623.           a0 = 4,
  2624.           a3 = -4,
  2625.           a25 = a32 = 1
  2626.        
  2627.        (See the file "PIRIFORM.POV" for more on this...)
  2628.        
  2629.        There are really so many different quartic shapes, we can't 
  2630.        even begin to list or describe them all. If you are 
  2631.        interested and mathematically inclined, an excellent 
  2632.  
  2633.        
  2634.                                                   POV-Ray V1.0 Page  52
  2635.        
  2636.        
  2637.        reference book for curves and surfaces where you'll find 
  2638.        more quartic shape formulas is:
  2639.        
  2640.           "The CRC Handbook of Mathematical Curves and Surfaces"
  2641.           David von Seggern
  2642.           CRC Press
  2643.           1990
  2644.        
  2645.        Blob
  2646.        Syntax:
  2647.        blob {
  2648.           threshold #
  2649.           component (strength_val) (radius_val) <component center> 
  2650.        
  2651.           component (strength_val) (radius_val) <component center> 
  2652.        
  2653.           [any number of components]
  2654.           [sturm]
  2655.        }
  2656.        
  2657.        Blobs are an interesting shape type. Their components are 
  2658.        "flexible" spheres that attract or repel each other creating 
  2659.        a "blobby" organic looking shape. The spheres' surfaces 
  2660.        actually stretch out smoothly and connect, as if coated in 
  2661.        silly putty (honey? glop?) and pulled apart.
  2662.        
  2663.        Blobs can be used in CSG shapes and they can be scaled, 
  2664.        rotated and translated. They may contain any number of 
  2665.        components. Because the calculations for blobs need to be 
  2666.        highly accurate, sometimes they will not trace correctly. 
  2667.        Try using the "sturm" keyword for slower, more accurate 
  2668.        calculations if this happens.
  2669.        
  2670.        Component strength may be positive or negative. A positive 
  2671.        value will make that component attract other components. 
  2672.        Negative strength will make that component repel other 
  2673.        components. Components in different, separate blob shapes do 
  2674.        not affect each other.
  2675.        
  2676.        
  2677.        Blob example:
  2678.         blob {
  2679.              threshold 0.6
  2680.              component 1.0 1.0 <.75 0 0>
  2681.              component 1.0 1.0 <-.375  .64952 0>
  2682.              component 1.0 1.0 <-.375 -.64952 0>
  2683.              scale <2 2 2>
  2684.              sturm
  2685.  
  2686.        
  2687.                                                   POV-Ray V1.0 Page  53
  2688.        
  2689.        
  2690.         }
  2691.        
  2692.        
  2693.        
  2694.        How do blobs work?
  2695.        Picture each blob component as a point floating in space, 
  2696.        each point has a field around it that starts very strong at 
  2697.        the point and drops off to zero at some radius. POV-Ray 
  2698.        looks for the places that the strength of the field is 
  2699.        exactly the same as the "threshold" value that was 
  2700.        specified.
  2701.        
  2702.        If you have a single blob component then the surface you see 
  2703.        will look just like a sphere, with the radius of the surface 
  2704.        being somewhere inside the "radius" value you specified for 
  2705.        the component. The exact radius of this sphere-like surface 
  2706.        can be determined from the blob equation listed below (you 
  2707.        will probably never need to know this, blobs are more for 
  2708.        visual appeal than for exact modelling).
  2709.        
  2710.        If you have a number of blob components, then their fields 
  2711.        add together at every point in space - this means that if 
  2712.        the blob components are close together the resulting surface 
  2713.        will smoothly flow around the components.
  2714.        
  2715.        The various numbers that you specify in the blob declaration 
  2716.        interact in
  2717.        several ways.  The meaning of each can be roughly stated 
  2718.        as:
  2719.        
  2720.          Threshold:  
  2721.             This is the total density value that POV-Ray is looking 
  2722.             for. By following the ray out into space and looking at 
  2723.             how each blob component affects the ray, POV-Ray will 
  2724.             find the points in space where the density is equal to 
  2725.             the "threshold" value.
  2726.        
  2727.             1) "threshold" must be greater than 0. POV-Ray only 
  2728.             looks for positive densities.
  2729.             2) If "threshold" is greater than the strength of a 
  2730.             component, then the component will disappear.
  2731.             3) As "threshold" gets larger the surface you see gets 
  2732.             closer to the centers of the components.
  2733.             4) As "threshold" gets smaller, the surface you see 
  2734.             gets closer to the spheres at a distance of "radius" 
  2735.             from the centers of the components.
  2736.        
  2737.          Strength:
  2738.  
  2739.        
  2740.                                                   POV-Ray V1.0 Page  54
  2741.        
  2742.        
  2743.             Each component has a strength value - this defines the 
  2744.             density of the component at the center of the 
  2745.             component. Changing this value will usually have only a 
  2746.             subtle effect.
  2747.        
  2748.             1) "strength" may be positive or negative. Zero is a 
  2749.             bad value, as the net result is that no density was 
  2750.             added - you might just as well have not used this 
  2751.             component.
  2752.             
  2753.             2) If "strength" is positive, then POV-Ray will add its 
  2754.             density to the space around the center of the 
  2755.             component. If this adds enough density to be greater 
  2756.             than "threshold", you will see a surface.
  2757.        
  2758.             3) If "strength" is negative, then POV-Ray will 
  2759.             subtract its density from the space around the center 
  2760.             of the component. This will only do something if there 
  2761.             happen to be positive components nearby. What happens is 
  2762.             that the surface around any nearby positive components 
  2763.             will be dented away from the center of the negative component.
  2764.        
  2765.          Radius: 
  2766.             Each component has a radius of influence. The component 
  2767.             can only affect space within "radius" of its center. 
  2768.             This means that if all of the components are farther 
  2769.             than "radius" from each other, you will only see a 
  2770.             bunch of spheres.  If a component is within the radius 
  2771.             of another component, then the two components start to 
  2772.             affect each other. At first there is only a small bulge 
  2773.             outwards on each of the two components, as they get 
  2774.             closer they bulge more and more until they attach along 
  2775.             a smooth neck.  If the components are very close (i.e. 
  2776.             their centers are on top of each other), then you will 
  2777.             only see a sphere (this is just like having a component 
  2778.             of more strength. bigger than the size of each of the 
  2779.             component radii)
  2780.        
  2781.             1) "radius" must be bigger than 0.
  2782.             2) As "radius" increases the apparent size of the 
  2783.             component will increase.  
  2784.        
  2785.          Center:
  2786.             This is simply a point in space.  It defines the center 
  2787.             of a blob component.  By changing the x/y/z values of 
  2788.             the center you move the component around.
  2789.  
  2790.        
  2791.                                                   POV-Ray V1.0 Page  55
  2792.        
  2793.        
  2794.        
  2795.        
  2796.          The Formula
  2797.        For the more mathematically minded, here's the formula used 
  2798.        internally by POV-Ray to create blobs. You don't need to 
  2799.        understand this to use blobs. 
  2800.        
  2801.        The formula used for a single blob component is:
  2802.        
  2803.              density = strength * (1 - radius^2)^2
  2804.        
  2805.        This formula has the nice property that it is exactly equal 
  2806.        to strength" at the center of the component and drops off to 
  2807.        exactly 0 at a distance of "radius" from the center of the 
  2808.        component. The density formula for more than one blob 
  2809.        component is just the sum of the individual component 
  2810.        densities:
  2811.        
  2812.              density = density1 + density2 + ...
  2813.        
  2814.        
  2815.        Height Fields
  2816.        Syntax: 
  2817.           height_field { image_type "filename" [water_level #] }
  2818.        Examples: 
  2819.           height_field { gif "povmap.gif" water_level .1 }
  2820.           height_field { tga "sine.tga" }
  2821.           height_field { pot "fract003.pot" water_level .5 }
  2822.        
  2823.        Height fields are a very exciting feature that you may find 
  2824.        a little hard to understand at first. Read the explanation 
  2825.        below, and look in the example scene files for height field 
  2826.        examples. Once you begin to use them, they are much easier 
  2827.        to understand. Among other things, they allow you to create 
  2828.        fractal landscapes that rival the best computer graphics 
  2829.        you've ever seen.
  2830.        
  2831.        A height field is essentially a 1 unit wide by 1 unit long 
  2832.        box made up of many small triangles. The height of each 
  2833.        triangle making up the box is taken from the color number 
  2834.        (or palette index) of the pixels in a graphic image file. 
  2835.        
  2836.        The mesh of triangles corresponds directly to the pixels in 
  2837.        the image file. In fact, there are two small triangles for 
  2838.        every pixel in the image file. The Y (height) component of 
  2839.        the triangles is determined by the palette index number 
  2840.        stored at each location in the image file. The higher the 
  2841.        number, the higher the triangle. The maximum height of an 
  2842.  
  2843.        
  2844.                                                   POV-Ray V1.0 Page  56
  2845.        
  2846.        
  2847.        un-scaled height field is 1 unit.
  2848.        
  2849.        The higher the resolution of the image file used to create 
  2850.        the height field, the smoother the height field will look. A 
  2851.        640 X 480 GIF will create a smoother height field than a 320 
  2852.        x 200 GIF.
  2853.        
  2854.        The optional "water_level" parameter tells the program not 
  2855.        to look for the height field below that value. Default value 
  2856.        is 0, and legal values are between 0 and 1. For example, 
  2857.        "water_level .5" tells POV-Ray to only render the top half 
  2858.        of the height field. The other half is "below the water" and 
  2859.        couldn't be seen anyway. This term comes from the popular 
  2860.        use of height fields to render landscapes. A height field 
  2861.        would be used to create islands and another shape would be 
  2862.        used to simulate water around the islands. A large portion 
  2863.        of the height field would be obscured by the "water" so the 
  2864.        "water_level" parameter was introduced to allow the 
  2865.        ray-tracer to ignore the unseen parts of the height field. 
  2866.        Water_level is also used to "cut away" unwanted lower values 
  2867.        in a height field. For example, if you have an image of a 
  2868.        fractal on a solid colored background, where the background 
  2869.        color is palette entry 0, you can remove the background in 
  2870.        the height field by specifying, "water_level .001" 
  2871.        
  2872.        
  2873.        The image file used to create a height field can be a GIF, 
  2874.        TGA or POT format file. The GIF format is the only one that 
  2875.        can be created using a standard paint program.
  2876.        
  2877.        The size/resolution of the image does not affect the size of 
  2878.        the height field. The un-scaled height field size will 
  2879.        always be 1x1. Higher resolution image files will create 
  2880.        smaller triangles, not larger height fields.
  2881.        
  2882.        In a GIF file, the color number is the palette index at a 
  2883.        given point. Use a paint program to look at the palette of a 
  2884.        GIF image. The first color is palette index zero, the second 
  2885.        is index 1, the third is index 2, and so on. The last 
  2886.        palette entry is index 255. Portions of the image that use 
  2887.        low palette entries will be lower on the height field. 
  2888.        Portions of the image that use higher palette entries will 
  2889.        be higher on the height field. For example, an image that 
  2890.        was completely made up of entry 0 would be a flat 1x1 
  2891.        square. An image that was completely made up of entry 255 
  2892.        would be a 1x1x1 cube.
  2893.        
  2894.  
  2895.        
  2896.                                                   POV-Ray V1.0 Page  57
  2897.        
  2898.        
  2899.        The maximum number of colors in a GIF are 256, so a GIF 
  2900.        height field can have any number of triangles, but they will 
  2901.        only 256 different height values. 
  2902.        
  2903.        The color of the palette entry does not affect the height of 
  2904.        the pixel. Color entry 0 could be red, blue, black, or 
  2905.        orange, but the height of any pixel that uses color entry 0 
  2906.        will always be 0. Color entry 255 could be indigo, hot pink, 
  2907.        white, or sky blue, but the height of any pixel that uses 
  2908.        color entry 255 will always be 1.
  2909.        
  2910.        You can create height field GIF images with a paint program 
  2911.        or a fractal program like "Fractint".  If you have access to 
  2912.        an IBM-PC, you can get Fractint from most of the same 
  2913.        sources as POV-Ray.
  2914.        
  2915.        A POT file is essentially a GIF file with a 16 bit palette. 
  2916.        The maximum number of colors in a POT file is greater than 
  2917.        32,000. This means a POT height field can have over 32,000 
  2918.        possible height values. This makes it possible to have much 
  2919.        smoother height fields. Note that the maximum height of the 
  2920.        field is still 1 even though more intermediate values are 
  2921.        possible.
  2922.        
  2923.        At the time of this writing, the only program that created 
  2924.        POT files was a freeware IBM-PC program called Fractint. POT 
  2925.        files generated with this fractal program create fantastic 
  2926.        landscapes. If you have access to an IBM-PC, you can get 
  2927.        Fractint from most of the same sources as POV-Ray.
  2928.        
  2929.        The TGA file format is used as a storage device for numbers 
  2930.        rather than an image file. That is, you can't use a paint 
  2931.        program to create TGA height field files, and a scanned TGA 
  2932.        image will not make a nice smooth height field.
  2933.        
  2934.        The TGA format uses the red and green bytes of each pixel to 
  2935.        store the high and low bytes of a height value. TGA files 
  2936.        are as smooth as POT files, but they must be generated with 
  2937.        special custom-made programs. Currently, this format is for 
  2938.        programmers exclusively, though you should see TGA height 
  2939.        field generator programs arriving soon.
  2940.        There is example C source code included with the POV-Ray 
  2941.        source archive to create a TGA file for use with a height 
  2942.        field.
  2943.        
  2944.        
  2945.        Height fields may be rotated translated and scaled like any 
  2946.  
  2947.        
  2948.                                                   POV-Ray V1.0 Page  58
  2949.        
  2950.        
  2951.        other shape. Height fields cannot be used as true CSG 
  2952.        shapes, though they are allowed in CSG shapes. They can be 
  2953.        included in a CSG shape, but they will not be treated like 
  2954.        solid objects.
  2955.        
  2956.        Here are a few notes on height fields from their creator, 
  2957.        Doug Muir:
  2958.        
  2959.        The height field is mapped to the x-z plane, with its lower 
  2960.        left corner sitting at the origin. It extends to 1 in the 
  2961.        positive x direction and to 1 in the positive z direction. 
  2962.        It is maximum 1 unit high in the y direction. You can 
  2963.        translate it, scale it, and rotate it to your heart's 
  2964.        content. 
  2965.        
  2966.        When deciding on what water_level to use, remember, this 
  2967.        applies to the un-transformed height field. If you are a 
  2968.        Fractint user, the water_level should be used just like the 
  2969.        water_level parameter for 3d projections in Fractint.
  2970.        
  2971.        Here's a detailed explanation of how the ray-tracer creates 
  2972.        the height field. You can skip this if you aren't interested 
  2973.        in the technical side of ray-tracing. This information is not 
  2974.        needed to create or use height fields.
  2975.        
  2976.        To find an intersection with the height field, the raytracer 
  2977.        first checks to see if the ray intersects the box which 
  2978.        surrounds the height field. Before any transformations, this 
  2979.        box's two opposite vertexes are at (0, water_level, 0) and 
  2980.        (1, 1, 1). If the box is intersected, the raytracer figures 
  2981.        out where, and then follows the line from where the ray 
  2982.        enters the box to where it leaves the box, checking each 
  2983.        pixel it crosses for an intersection. 
  2984.        
  2985.        It checks the pixel by dividing it up into two triangles. 
  2986.        The height vertex of the triangle is determined by the color 
  2987.        index at the corresponding position in the GIF, POT, or TGA 
  2988.        file.
  2989.        
  2990.        If your file has a uses the color map randomly, your height 
  2991.        field is going to look pretty chaotic, with tall, thin 
  2992.        spikes shooting up all over the place. Not every GIF will 
  2993.        make a good height field.
  2994.        
  2995.        If you want to get an idea of what your height field will 
  2996.        look like, I recommend using the IBM-PC program Fractint's 
  2997.  
  2998.        
  2999.                                                   POV-Ray V1.0 Page  59
  3000.        
  3001.        
  3002.        3d projection features to do a sort of preview. If it 
  3003.        doesn't look good there, the raytracer isn't going to fix 
  3004.        it. For those of you who can't use Fractint, convert the 
  3005.        image palette to a gray scale from black at entry 0 to white 
  3006.        at entry 255 with smooth steps of gray in-between. The dark 
  3007.        parts will lower than the brighter parts, so you can get a 
  3008.        feel for how the image will look as a height field.
  3009.        
  3010.        Bezier/Bicubic Patches
  3011.        Syntax: 
  3012.        bicubic_patch { patch_type_# [flatness_#] u_ steps v_steps
  3013.              < Control point1>  < CP2>  <CP3>  < CP4>
  3014.              <CP5>  <CP6>   <CP7>   <CP8>
  3015.              <CP9>  <CP10>  <CP11>  <CP12>
  3016.              <CP13> <CP14>  <CP15>  <CP16>
  3017.        }
  3018.        
  3019.        Like triangles, the bicubic patch is not meant to be 
  3020.        generated by hand. These shapes should be created by a 
  3021.        special utility. You should be able to acquire utilities to 
  3022.        generate these shapes from the same source that you received 
  3023.        POV-Ray from. 
  3024.        
  3025.        A bezier or bicubic path is a 3D curved surface created from 
  3026.        a mesh of triangles. The number of triangles is u_steps * 
  3027.        v_steps. Since it's made from triangles it cannot be used as 
  3028.        a solid object in a CSG shape. It may be included in a CSG 
  3029.        shape, though. It can be scaled, rotated, translated like 
  3030.        any other shape. The 16 control points determine the shape 
  3031.        of the curve by "pulling" the curve in the direction of the 
  3032.        points. 
  3033.        
  3034.        Example:
  3035.        // Patch type 1 with 8 u steps and 8 v steps
  3036.          bicubic_patch { 1 8 8
  3037.             < 0  0  2>  < 1  0  0>  < 2  0  0>  < 3  0 -2>
  3038.             < 0  1  0>  < 1  1  0>  < 2  1  0>  < 3  1  0>
  3039.             < 0  2  0>  < 1  2  0>  < 2  2  0>  < 3  2  0>
  3040.             < 0  3  2>  < 1  3  0>  < 2  3  0>  < 3  3 -2>
  3041.        }
  3042.        
  3043.        Constructive Solid Geometry (CSG)
  3044.        
  3045.        This ray tracer supports Constructive Solid Geometry (also 
  3046.        called Boolean operations) in order to make the shape 
  3047.        definition abilities more powerful.
  3048.        
  3049.        The simple shapes used so far are nice, but not terribly 
  3050.        useful on their own for making realistic scenes. It's hard 
  3051.        to make interesting objects when you're limited to spheres, 
  3052.  
  3053.        
  3054.                                                   POV-Ray V1.0 Page  60
  3055.        
  3056.        
  3057.        boxes, infinite cylinders, infinite planes, and so forth. 
  3058.        
  3059.        Constructive Solid Geometry (CSG) is a technique for taking 
  3060.        these simple building blocks and combining them together. 
  3061.        You can use a cylinder to bore a hole through a sphere. You 
  3062.        can use planes to cap cylinders and turn them into flat 
  3063.        circular disks that are no longer infinite.
  3064.        
  3065.        Constructive Solid Geometry allows you to define shapes 
  3066.        which are the union, intersection, or difference of other 
  3067.        shapes.
  3068.        
  3069.        Unions superimpose two or more shapes. This has the same 
  3070.        effect as defining two or more separate objects, but is 
  3071.        simpler to create and/or manipulate.
  3072.        
  3073.        Intersections define the space where the two or more 
  3074.        surfaces meet.
  3075.        
  3076.        Differences allow you to cut one object out of another.
  3077.        
  3078.        CSG intersections, unions, and differences can consist of 
  3079.        two or more shapes. They are defined as follows:
  3080.        
  3081.        object {
  3082.           csg_shape_type {
  3083.              shape {...}
  3084.              shape {...}
  3085.              shape {...}
  3086.              (...)   
  3087.           }
  3088.           texture { ... }
  3089.        }
  3090.        
  3091.        CSG shapes may be used in CSG shapes. In fact, CSG shapes 
  3092.        may be used anyplace that a standard shape is used.
  3093.        
  3094.        The order of the shapes doesn't matter except for the 
  3095.        difference shapes. For CSG differences, the first shape is 
  3096.        visible and the remaining shapes are cut out of the first.
  3097.        
  3098.        Constructive solid geometry shapes may be translated, 
  3099.        rotated, or scaled in the same way as any shape. The shapes 
  3100.        making up the CSG shape may be individually translated, 
  3101.        rotated, and scaled as well.
  3102.        
  3103.        When using CSG, it is often useful to invert a shape so that 
  3104.  
  3105.        
  3106.                                                   POV-Ray V1.0 Page  61
  3107.        
  3108.        
  3109.        it's inside-out. The appearance of the shape is not changed, 
  3110.        just the way that POV-Ray perceives it. The inverse keyword 
  3111.        can be used to do this for any shape. When inverse is used, 
  3112.        the "inside" of the shape is flipped to become the 
  3113.        "outside". For planes, "inside" is defined to be "in the 
  3114.        opposite direction to the "normal" or "up" direction. 
  3115.        
  3116.        Note that performing an intersection between a shape and 
  3117.        some other inverse shapes is the same as performing a 
  3118.        difference. In fact, the difference is actually implemented 
  3119.        in this way in the code.
  3120.        
  3121.        Inside and outside
  3122.        Most shape primitives, like spheres, boxes, and blobs, 
  3123.        divide the world into two regions. One region is inside the 
  3124.        surface and one is outside.  (The exceptions to this rule 
  3125.        are triangles, height fields and bezier patches - we'll talk 
  3126.        about this later.)
  3127.        
  3128.        Given any point in space, you can say it's either inside or 
  3129.        outside any particular primitive object (well, it could be 
  3130.        exactly on the surface, but numerical inaccuracies will put 
  3131.        it to one side or the other). 
  3132.        
  3133.        Even planes have an inside and an outside. By definition, 
  3134.        the surface normal of the plane points towards the outside 
  3135.        of the plane. (For a simple floor, for example, the space 
  3136.        above the floor is "outside" and the space below the floor 
  3137.        is "inside". For simple floors this in un-important, but for 
  3138.        planes as parts of CSG's it becomes much more important).
  3139.  
  3140.        
  3141.                                                   POV-Ray V1.0 Page  62
  3142.        
  3143.        
  3144.        
  3145.        CSG uses the concepts of inside and outside to combine 
  3146.        shapes together. Take the following situation:
  3147.        
  3148.        Note: The diagrams shown here demonstrate the concepts in 2D 
  3149.        and are intended only as an analogy to the 3D case. 
  3150.        
  3151.        Note that the triangles and triangle-based shapes cannot be 
  3152.        used as solid objects in CSG since they have no clear inside 
  3153.        and outside.
  3154.        
  3155.        
  3156.          * = Shape A
  3157.          % = Shape B
  3158.        
  3159.                             *  0
  3160.                            * *    %
  3161.                           *   *  % %
  3162.                          *     *%   %
  3163.                         *  1   %*    %
  3164.                        *      %  * 2  %
  3165.                       *      % 3  *    %
  3166.                      *******%*******    %
  3167.                            %             %
  3168.                           %%%%%%%%%%%%%%%%%
  3169.        
  3170.        
  3171.  
  3172.        
  3173.                                                   POV-Ray V1.0 Page  63
  3174.        
  3175.        
  3176.        
  3177.        There are three CSG operations you can use, union, 
  3178.        intersection, and difference:
  3179.        
  3180.        union  { A B }
  3181.        A point is inside the union if it is inside A OR it's inside 
  3182.        B (or both). This gives an "additive" effect to the 
  3183.        component objects: 
  3184.        
  3185.                             *
  3186.                            * *    %
  3187.                           *   *  % %
  3188.                          *     *%   %
  3189.                         *  1       2 %
  3190.                        *       3      %
  3191.                       *                %
  3192.                      *******%           %
  3193.                            %             %
  3194.                           %%%%%%%%%%%%%%%%%
  3195.        
  3196.        
  3197.        
  3198.        intersection { A B }
  3199.        A point is inside the intersection if it's inside both A AND 
  3200.        B. This "logical AND's" the shapes and gets the common part, 
  3201.        most useful for "clipping" infinite shapes off, etc: 
  3202.        
  3203.        
  3204.                                %*
  3205.                               %  *
  3206.                              % 3  *
  3207.                             %*******
  3208.        
  3209.        
  3210.        difference { A B  }
  3211.        A point is inside the difference if it's inside A but not 
  3212.        inside B. The results is a "subtraction" of the 2nd shape 
  3213.        from the first shape: 
  3214.        
  3215.                             *
  3216.                            * *
  3217.                           *   *
  3218.                          *     *
  3219.                         *  1   %
  3220.                        *      %
  3221.                       *      %
  3222.                      *******%
  3223.        
  3224.        
  3225.        Let's give a concrete example by drilling a yellow hole 
  3226.  
  3227.        
  3228.                                                   POV-Ray V1.0 Page  64
  3229.        
  3230.        
  3231.        through our sphere. Go to the definition of the sphere in 
  3232.        PICTURE1.POV and change it to read the following: 
  3233.        
  3234.        object {
  3235.          difference {
  3236.            sphere { <0 1 3> 1 }
  3237.            quadric { 
  3238.              Cylinder_Z 
  3239.              scale <.2 .2 1>
  3240.              translate <0 1 0>
  3241.              texture { color Yellow }
  3242.            }
  3243.          }
  3244.             texture {
  3245.              DMFWood1
  3246.              scale <2 2 1>
  3247.              phong 1
  3248.            }
  3249.        }
  3250.        
  3251.        
  3252.        Inverse
  3253.        You can flip a shape "inside-out" by putting the keyword 
  3254.        inverse into the shape's definition. This keyword will not 
  3255.        change the appearance of the shape unless you're using CSG. 
  3256.        In the case of CSG, it gives you more flexibility. For 
  3257.        example:
  3258.        
  3259.           intersection { B {A inverse}  }
  3260.        
  3261.                           
  3262.                                   %
  3263.                                  % %
  3264.                                 %   %
  3265.                                 *    %
  3266.                                  * 2  %
  3267.                                   *    %
  3268.                             %*******    %
  3269.                            %             %
  3270.                           %%%%%%%%%%%%%%%%%
  3271.        
  3272.        Note: A difference is really just an intersection of one 
  3273.        shape with the inverse of another. This happens to be how 
  3274.        difference is actually implemented in the code. 
  3275.        
  3276.  
  3277.        
  3278.                                                   POV-Ray V1.0 Page  65
  3279.        
  3280.        
  3281.        
  3282.        
  3283.        Composite Objects
  3284.        
  3285.        Often it's useful to combine several objects together to act 
  3286.        as a whole. A car, for example, consists of wheels, doors, a 
  3287.        roof, etc. A composite object allows you to combine all of 
  3288.        these pieces into one object. This has two advantages. It 
  3289.        makes it easier to move the object as a whole and it allows 
  3290.        you to speed up the ray tracing by defining bounding shapes 
  3291.        that contain the objects. (Rays are first tested to see if 
  3292.        they intersect the bounding shape. If not, the entire 
  3293.        composite object is ignored). Composite objects are defined 
  3294.        as follows: 
  3295.        
  3296.        composite {
  3297.          object {...}
  3298.          object {...}
  3299.          object {...}
  3300.          (...)
  3301.          [transformations]
  3302.        }
  3303.        
  3304.        Composite objects can contain other composite objects as 
  3305.        well as regular objects. 
  3306.        
  3307.        NOTE: Each object in a composite object may have its own 
  3308.        texture, but the composite object may not have a texture. 
  3309.        
  3310.        NOTE: Composite objects may only be used in other composite 
  3311.        objects, not in normal objects or shapes.
  3312.        
  3313.        NOTE: Composite objects can not be used in CSG shapes. CSG 
  3314.        shapes must be in an object to be used in a composite.
  3315.        
  3316.        For example,
  3317.        
  3318.        composite { // This is legal
  3319.           object { union  {...} }
  3320.           object { sphere {...} }
  3321.           object { intersection  {...} }
  3322.        }
  3323.        
  3324.        composite { // This is legal
  3325.           object { union  {...} texture {...} }
  3326.           object { sphere {...} texture {...} }
  3327.           object { intersection  {...} texture {...} }
  3328.        }
  3329.        
  3330.  
  3331.        
  3332.                                                   POV-Ray V1.0 Page  66
  3333.        
  3334.        
  3335.        composite { // This is NOT legal
  3336.           object { union  {...}}
  3337.           object { sphere {...}}
  3338.           object { intersection  {...}}
  3339.           texture {...} // Texture is NOT legal in composite
  3340.        }
  3341.        
  3342.        composite { // This is NOT legal
  3343.            union {...} // Shapes not in objects are 
  3344.                        // not legal in composites
  3345.            sphere {...}
  3346.        }
  3347.        
  3348.        object { // This is NOT legal
  3349.           composite { ... } // Composites are not 
  3350.                             // allowed in objects
  3351.        }
  3352.        
  3353.        object { // This is NOT legal
  3354.           union {
  3355.             composite { ... } // Composites are not
  3356.                               // allowed in CSG shape types
  3357.           }
  3358.        }
  3359.        
  3360.        
  3361.        Example:
  3362.        #declare Abstract = 
  3363.        composite {
  3364.           object { sphere { <0 0 0> 1 } texture {color Red} }
  3365.           object { sphere { <0 1 0> 1 } texture {color Yellow} }
  3366.           composite { // This is a composite in a composite
  3367.               object { 
  3368.                  box { <2 2 2> <3 3 3> } 
  3369.                  texture {color Green} 
  3370.               }
  3371.               object {
  3372.                  box { <-3 -3 -3> <-2 -2 -2> }
  3373.                  texture {color Blue} 
  3374.               }
  3375.           }
  3376.           object { 
  3377.              quadric { Ellipsoid } 
  3378.              texture { PinkAlabaster }
  3379.              scale <3 1 3> 
  3380.              translate <0 4 0> 
  3381.            }
  3382.  
  3383.        
  3384.                                                   POV-Ray V1.0 Page  67
  3385.        
  3386.        
  3387.        }
  3388.        composite { Abstract translate <0 5 10> }
  3389.        
  3390.        
  3391.        Bounding Shapes
  3392.        
  3393.        NOTE: Efficient use of bounding shapes are the best way to 
  3394.        speed up the rendering of your scenes.
  3395.        
  3396.        If you use bounding shapes around any complex objects you 
  3397.        can speed up the rendering. Bounding shapes tell the ray 
  3398.        tracer that the object is totally enclosed by a simple 
  3399.        shape. When tracing rays, the ray is first tested against 
  3400.        the simple bounding shape. 
  3401.        If it strikes the bounding shape, then the ray is further 
  3402.        tested against the more complicated object inside. Otherwise 
  3403.        the entire complex shape is skipped, which greatly speeds 
  3404.        rendering.
  3405.        
  3406.        To use bounding shapes, simply include the following lines 
  3407.        in the declaration of your object or composite_ object:
  3408.        
  3409.             bounded_by {
  3410.                  shape { ... }
  3411.             }
  3412.        
  3413.        An example of a Bounding Shape:
  3414.        
  3415.              object {
  3416.                  intersection {
  3417.                       sphere <0.0 0.0 0.0> 2.0 }
  3418.                       plane <0.0 1.0 0.0> 0.0 }
  3419.                       plane <1.0 0.0 0.0> 0.0 }
  3420.                  }
  3421.                  bounded_by {
  3422.                       sphere <0.0 0.0 0.0> 2.0 }
  3423.                  }
  3424.             }
  3425.        
  3426.        The best bounding shape is a sphere or a box since these 
  3427.        shapes are highly optimized, although, any shape may be 
  3428.        used, including CSG shapes.
  3429.        
  3430.        Note that if bounding shape is too small or positioned 
  3431.        incorrectly, it may clip the object in undefined ways or the 
  3432.        object may not appear at all.  To do true clipping, use 
  3433.        Clipping Shapes below.
  3434.        
  3435.        Clipping Shapes
  3436.        
  3437.        A clipping shape is used to "cut off" part of an object. 
  3438.  
  3439.        
  3440.                                                   POV-Ray V1.0 Page  68
  3441.        
  3442.        
  3443.        
  3444.        For example:
  3445.        
  3446.             object {
  3447.                  sphere {<0 1 3> 1}
  3448.                  clipped_by {
  3449.                        sphere { <.5 1 2> 1 } 
  3450.                  }
  3451.             }
  3452.        
  3453.        You can use any kind of shape including CSG shapes to clip 
  3454.        an object.
  3455.        
  3456.  
  3457.        
  3458.                                                   POV-Ray V1.0 Page  69
  3459.        
  3460.        
  3461.        
  3462.        
  3463.        Textures
  3464.        
  3465.        Textures are the materials that the shapes and objects in 
  3466.        POV-Ray are made out of. They specifically describe the 
  3467.        surface coloring, shading, and properties like transparency 
  3468.        and reflection.
  3469.        
  3470.        You can create your own textures using the parameters 
  3471.        described below, or you can use the many pre-defined high 
  3472.        quality textures that have been provided in the files 
  3473.        TEXTURES.INC and STONES.INC. See TEXTURES.DOC for more info 
  3474.        on using these predefined materials.
  3475.        
  3476.        The textures, or materials, in POV-Ray are generally made up 
  3477.        of three portions, a color pattern, a bump pattern, and 
  3478.        surface properties. 
  3479.        
  3480.        Color Pattern
  3481.        A color pattern is where two or more colors are used to 
  3482.        create a three-dimensional pattern or design. There are many 
  3483.        built-in color patterns in POV-Ray ranging from checker, to 
  3484.        marble, to wood, to agate.
  3485.        
  3486.        For example, a checker pattern is just alternating color 
  3487.        blocks stacked on and next to each other. The marble color 
  3488.        pattern is vertical bands of colors placed next to each 
  3489.        other. The wood color pattern is cylindrical bands of color 
  3490.        like the rings of a tree, and so on.
  3491.        
  3492.        These patterns are all generated from mathematical formulas 
  3493.        and are very regular unless they are "stirred up" using the 
  3494.        turbulence parameter which is described below.
  3495.        
  3496.        The individual colors in a color pattern can be made 
  3497.        partially or completely transparent by specifying the alpha 
  3498.        color component. See the color description for more info. 
  3499.        
  3500.        The names of the patterns are only suggestions for their 
  3501.        use. Don't let those names limit you, by using different 
  3502.        colors and turbulence values, nearly infinite permutations 
  3503.        of these patterns are possible.
  3504.        
  3505.        The colors in a color pattern are usually defined in a 
  3506.        "color_map". Color maps are described below.
  3507.        
  3508.        A shape may also have a solid color instead of a color 
  3509.        pattern. This is specified by describing one color instead 
  3510.        of a color pattern type. This color may also be made 
  3511.  
  3512.        
  3513.                                                   POV-Ray V1.0 Page  70
  3514.        
  3515.        
  3516.        transparent by specifying the alpha component of the color.
  3517.        
  3518.        Transformations like scale, rotate, and translate will 
  3519.        affect the color pattern and bump pattern in a texture in 
  3520.        the same way. It is not currently possible to specify 
  3521.        different transformation values for the color and bump 
  3522.        patterns in the same texture.
  3523.        
  3524.        Bump Patterns
  3525.        A bump pattern makes a surface look "bumpy" without actually 
  3526.        changing the form of the shape. The bump pattern modifies 
  3527.        the way the surface reflects light so that it is shaded and 
  3528.        highlighted just like it were bumpy, but the ray-tracer 
  3529.        saves time by doing most calculations as if it were a smooth 
  3530.        shape. 
  3531.        
  3532.        A true "bumpy" shape is very complex and time consuming to 
  3533.        render. By using bump patterns you can create the appearance 
  3534.        of dents, bumps, and ripples without the penalty of 
  3535.        rendering a highly complex shape.
  3536.        
  3537.        Some bump patterns are ripples, dents, bumps, wrinkles and 
  3538.        waves. These patterns can produce very realistic looking 
  3539.        surface variations. They can be combined with color patterns 
  3540.        for more variation. If no bump pattern is specified then the 
  3541.        texture is treated as being smooth.
  3542.        
  3543.        Normally, the bump amount is kept small to enhance realism. 
  3544.        Since the bump pattern only changes the shading, the 
  3545.        silhouette of a shape is left unchanged. A bumpy sphere will 
  3546.        still have a perfectly round edge, even though its surface 
  3547.        looks very convincingly bumpy.
  3548.        
  3549.        The bump pattern never changes the colors on a shape, only 
  3550.        the shading. Bump patterns, like color patterns, are three 
  3551.        dimensional. Turbulence does not affect bump patterns.
  3552.        
  3553.        Transformations like scale, rotate, and translate will 
  3554.        affect the color pattern and bump pattern in a texture in 
  3555.        the same way. It is not currently possible to specify 
  3556.        different transformation values for the color and bump 
  3557.        patterns in the same texture.
  3558.        
  3559.        Surface Properties
  3560.        Surface properties are the miscellaneous parameters which 
  3561.        describe whether a shape is reflective, shiny, refractive, 
  3562.        and so on. 
  3563.        
  3564.  
  3565.        
  3566.                                                   POV-Ray V1.0 Page  71
  3567.        
  3568.        
  3569.        Some examples of surface properties are:
  3570.          phong #       -- Make surface shiny by adding highlights
  3571.          phong_size #  -- Change the size of the highlight on
  3572.                           surface
  3573.          reflection #  -- Make surface reflect the scene around it
  3574.          
  3575.        
  3576.        Texture Syntax
  3577.        The basic texture syntax is as follows:
  3578.        
  3579.         texture {
  3580.            (random dither #)
  3581.            (color_pattern_type) or (color red # green # blue #)
  3582.            (bump_pattern_type (bump_amount))
  3583.            [texture modifiers]
  3584.            [texture transformations]
  3585.         }
  3586.        
  3587.        For example:
  3588.        
  3589.         texture {
  3590.            0.05 // Random dither is not recommended
  3591.            wood
  3592.            turbulence 0.2
  3593.            phong 1   
  3594.            scale < 10.0 10.0 10.0 >
  3595.            translate < 1.0 2.0 3.0 >
  3596.            rotate < 0.0 10.0 40.0 >
  3597.        }
  3598.        
  3599.        Transformations, like translate, rotate, and scale, are 
  3600.        optional. They allow you to transform the texture 
  3601.        independent of the shape's or object's transformations. IE. 
  3602.        The texture may be in a different "location" than the shape, 
  3603.        or be a different size than the shape.
  3604.        
  3605.        Any parameter that changes the appearance of the surface 
  3606.        must be put into a texture block. Outside of the texture 
  3607.        block, the texture parameters will cause an error message to 
  3608.        be generated.
  3609.        
  3610.        
  3611.        Textures and Animation
  3612.        If you are doing animation, you should specify all object 
  3613.        transformations after the texture transformations so the 
  3614.        texture "follows" or "sticks to" the object through 3-D 
  3615.        space. For example,
  3616.        
  3617.        object {
  3618.  
  3619.        
  3620.                                                   POV-Ray V1.0 Page  72
  3621.        
  3622.        
  3623.           shape {}   // Shape description
  3624.           texture {} // Texture description
  3625.           scale     // transform after shape & texture
  3626.           rotate    // transform after shape & texture
  3627.           translate // transform after shape & texture
  3628.        }
  3629.        
  3630.        As in:
  3631.        
  3632.        object{
  3633.           box {<-1 -1 -1> <1 1 1>} // Box shape centered on zero
  3634.           texture { 
  3635.              agate
  3636.              phong 1
  3637.              scale <1.3 2 1.3> // scale texture to the 
  3638.                                // untransformed shape
  3639.              rotate <30 0 0>   // rotate texture to the 
  3640.                                // untransformed shape 
  3641.           }
  3642.           scale <3 3 3> // scale *both* sphere & texture
  3643.           rotate <0 40 0> // rotate *both* sphere & texture
  3644.           translate <1 5 5> // Move box & texture to final 
  3645.                             // position
  3646.        }
  3647.        
  3648.        If the transformations are done after the shape and before 
  3649.        the texture, the texture will not "stick to" the shape. In 
  3650.        an animation, this will look like the texture is constantly 
  3651.        moving on the moving shape. What is actually happening is 
  3652.        that the shape is moving and the texture is not, so the 
  3653.        texture on the shape changes whenever the shape is scaled, 
  3654.        rotated, or translated. This can be an interesting effect, 
  3655.        but is not desirable for most animations.
  3656.        
  3657.          Random Dither
  3658.        The floating-point value given immediately following the 
  3659.        texture keyword is an optional "texture randomness" value, 
  3660.        which causes a minor random scattering of calculated color 
  3661.        values and produces a sort of "dithered" appearance. This is 
  3662.        used by artists to minimize banding and to provide a more 
  3663.        chaotic, uneven look to a texture. Values are generally kept 
  3664.        quite small, like .05. This feature is different from 
  3665.        turbulence in that textures using it will look slightly 
  3666.        different each time they are rendered.
  3667.        
  3668.        NOTE: This should not be used when rendering animations. 
  3669.        This is the only truly random feature in POV-Ray, and will 
  3670.  
  3671.        
  3672.                                                   POV-Ray V1.0 Page  73
  3673.        
  3674.        
  3675.        produce an annoying flicker of flying pixels on any textures 
  3676.        animated with a "randomness" value used.
  3677.        
  3678.          Layered Textures
  3679.        It is possible to create layered textures. A Layered texture 
  3680.        is one where several textures that are partially transparent 
  3681.        are laid one on top of the other to create a more complex 
  3682.        texture. The different texture layers show through the 
  3683.        transparent portions to create the appearance of one 
  3684.        textures that is a combination of several textures.
  3685.        
  3686.        You create layered textures by listing two or more textures 
  3687.        one right after the other. The last texture listed will be 
  3688.        the top layer, the first one listed will be the bottom 
  3689.        layer. All textures in a layered texture other than the 
  3690.        bottom layer should have some transparency.
  3691.        
  3692.        More about Textures
  3693.        
  3694.        The textures available in POV-Ray are 3D solid textures. 
  3695.        This means that the texture defines a color for any 3D point 
  3696.        in space. Just like a real block of marble or wood, there is 
  3697.        color all through the block - you just can't see it until 
  3698.        you carve away the wood or marble that's in the way. 
  3699.        Similarly, with a 3D solid texture, you don't see all the 
  3700.        colors in the texture - you only see the colors that happen 
  3701.        to be visible at the surface of the object.
  3702.        
  3703.        As you've already seen, you can scale, translate, and rotate 
  3704.        textures. In fact, you could make an animation in which the 
  3705.        objects stay still and the textures translate and rotate 
  3706.        through the object. The effect would be like watching a 
  3707.        time-lapse film of a cloudy sky - the clouds would not only 
  3708.        move, but they would also change shape smoothly. 
  3709.        
  3710.        Turbulence or Noise
  3711.        Often, textures are perturbed by noise. This "turbulence" 
  3712.        distorts the texture so it doesn't look quite so perfect. 
  3713.        Try changing the sphere in the above example to have the 
  3714.        following texture: 
  3715.        
  3716.        texture {
  3717.          DMFWood1
  3718.          turbulence 0.0
  3719.          scale <0.2 0.2 1.0>
  3720.          phong 1.0
  3721.          }
  3722.        
  3723.        When you compare this with the original image, you'll see 
  3724.        that the grain is very regular and the pattern is much less 
  3725.  
  3726.        
  3727.                                                   POV-Ray V1.0 Page  74
  3728.        
  3729.        
  3730.        interesting. Turbulence can be any value, though it usually 
  3731.        ranges from 0-1.
  3732.        
  3733.        Color Maps
  3734.        Most color patterns use color maps. A color map translates a 
  3735.        number between 0.0 and 1.0 into a color. The number 
  3736.        typically represents the distance into a vein of color - the 
  3737.        further into the vein you get, the more the color changes. 
  3738.        Color patterns actually generate patterns of numbers between 
  3739.        0 and 1 for each point in space. When the ray tracer request 
  3740.        the color from the color pattern for a specific point, the 
  3741.        color pattern calculates what number between 0-1 is at that 
  3742.        point and then sends that number to the color map. The color 
  3743.        map looks to see if there is a color defined for that 
  3744.        number, if there isn't, it figures out an in-between color 
  3745.        from the colors that were defined. It returns that number to 
  3746.        the color pattern and that's the color that ends up on the 
  3747.        object. Since the color map makes these "in-between" colors, 
  3748.        you can create color maps with smooth bands of many color 
  3749.        shades by defining only a few colors.
  3750.        
  3751.        Here's a simple color map. Try it out on the sphere defined 
  3752.        above by changing the definition to this:
  3753.        
  3754.        object {
  3755.          sphere {<0 1 3> 1 }
  3756.          texture {
  3757.            wood  // This is the color pattern
  3758.            scale <.2 .2 1>
  3759.            color_map{ // This is where the pattern gets its colors
  3760.              [ 0  .3  color Red   color Green]
  3761.              [.3  .6  color Green color Blue]
  3762.              [.6   1  color Blue  color Red]
  3763.              }
  3764.            phong 1
  3765.            }
  3766.        }
  3767.        
  3768.        This means that as the texture enters into a vein of wood, 
  3769.        it changes color smoothly from red to green, from green to 
  3770.        blue, and from blue to red again. As it leaves the vein, the 
  3771.        transition occurs in reverse. (Since there is no turbulence 
  3772.        on the wood by default, the veins of color show up quite 
  3773.        well.) 
  3774.        
  3775.        Alpha
  3776.        You can get more "bang for your buck" from textures by using 
  3777.        alpha properties of color. Every color you define in POV-Ray 
  3778.        is a combination of red, green, blue and alpha. The red, green 
  3779.        and blue are simple enough. The alpha determines 
  3780.        how transparent that color is. A color with an alpha of 1.0 
  3781.        is totally transparent to that color of light. It filters 
  3782.        the light. A color with an alpha of 0.0 is totally opaque to 
  3783.        all light.
  3784.        
  3785.        Here's a neat texture to try: 
  3786.        
  3787.        texture {
  3788.          turbulence .5
  3789.          bozo
  3790.          color_map {
  3791.            // transparent to transparent 
  3792.            [ 0 .6  color red 1 green 1 blue 1 alpha 1  
  3793.  
  3794.        
  3795.                                                   POV-Ray V1.0 Page  75
  3796.        
  3797.        
  3798.                    color red 1 green 1 blue 1 alpha 1]
  3799.            // transparent to white 
  3800.            [.6 .8  color red 1 green 1 blue 1 alpha 1  
  3801.                    color red 1 green 1 blue 1]
  3802.            // white to grey 
  3803.            [.8 1  color red 1 green 1 blue 1
  3804.                   color red 0.8 green 0.8 blue 0.8]
  3805.            }
  3806.        scale <.4  .08  .4>
  3807.        }
  3808.        
  3809.        This is David Buck's famous cloud texture. It creates white 
  3810.        clouds with grey linings. The texture is transparent in the 
  3811.        places where the clouds disappear so you can see through it 
  3812.        to the objects that are behind.
  3813.        
  3814.        Note that light is filtered through alpha colors. Red can't 
  3815.        pass through a blue filter no matter how high the alpha 
  3816.        value. Green can't get through a completely blue filter and 
  3817.        so on. To make a completely clear color that all light can 
  3818.        pass through, use color red 1 green 1 blue 1 alpha 1. This 
  3819.        is defined in COLORS.INC as Clear.
  3820.        
  3821.        Layering Textures
  3822.        You can layer textures one on top of another to create more 
  3823.        sophisticated textures. For example, suppose you want a 
  3824.        wood-colored cloudy texture. What you do is put the wood 
  3825.        texture down first followed by the cloud texture. Wherever 
  3826.        the cloud texture is transparent, the wood texture shows 
  3827.        through. Change your sphere to the following and you'll see. 
  3828.        
  3829.        
  3830.        object {
  3831.          sphere <0 1 3> 1 }
  3832.  
  3833.        
  3834.                                                   POV-Ray V1.0 Page  76
  3835.        
  3836.        
  3837.          texture{  //This is the wood texture we used earlier.
  3838.            DMFWood1
  3839.            scale <.2 .2 1>
  3840.            phong 1
  3841.            }
  3842.          texture {
  3843.            turbulence .5
  3844.            bozo
  3845.            color_map {
  3846.              // transparent to transparent 
  3847.              [ 0 .6  color red 1 green 1 blue 1 alpha 1  
  3848.                      color red 1 green 1 blue 1 alpha 1]
  3849.              // transparent to white 
  3850.              [.6 .8  color red 1 green 1 blue 1 alpha 1  
  3851.                      color red 1 green 1 blue 1]
  3852.              // white to grey 
  3853.              [.8 1  color red 1 green 1 blue 1
  3854.                     color red 0.8 green 0.8 blue 0.8]
  3855.              }
  3856.            scale <.4  .08  .4>
  3857.          }
  3858.        }
  3859.        
  3860.        Each successive texture is layered on top of the previous 
  3861.        textures. In the places where you can see through the upper 
  3862.        texture, you see through to the lower textures.
  3863.  
  3864.        
  3865.                                                   POV-Ray V1.0 Page  77
  3866.        
  3867.        
  3868.        
  3869.        
  3870.        Texture Surface Properties
  3871.        
  3872.        
  3873.        Color
  3874.        A color consists of a red component, a green component, a 
  3875.        blue component, and possibly an alpha component. All four 
  3876.        components are numbers in the range 0.0 to 1.0. 
  3877.        
  3878.        The syntax for colors is the word "color" followed by any or 
  3879.        all of the red, green, blue or alpha components in any 
  3880.        order. If a parameter is not specified it is assumed to be 
  3881.        0. For example:
  3882.        
  3883.          color  red 1.0  green 1.0  blue 1.0
  3884.          color  blue 0.56
  3885.          color  green 0.45 red 0.3 blue 0.1 alpha 0.3
  3886.        
  3887.        Alpha is a transparency indicator. If an object's color 
  3888.        contains some transparency, then you can see through it. If 
  3889.        Alpha is 0.0, the object is totally opaque. If it is 1.0, it 
  3890.        is totally transparent. Note that light is filtered, so 
  3891.        color red 0 green 0 blue 0 alpha 1 is totally black and 
  3892.        non-transparent. Color red 1 green 1 blue 1 alpha 1 is 
  3893.        totally clear. Color red 1 alpha 1 filters out all but red 
  3894.        light.
  3895.        
  3896.        The Canadian spelling colour may be used in place of color.
  3897.        
  3898.        ambient value
  3899.        In real life, ambient light is light that is scattered 
  3900.        everywhere in the room. It bounces all over the place and 
  3901.        manages to light objects up a bit even where no light is 
  3902.        directly shining.
  3903.        
  3904.        Computing real ambient light would take far too much time, 
  3905.        so we simulate ambient light by adding a small amount of 
  3906.        white light to each texture whether or not a light is 
  3907.        actually shining on that texture.
  3908.        
  3909.        This means that the portions of a shape that are completely 
  3910.        in shadow will still have a little bit of their surface 
  3911.        color. It's almost as if the texture glows, though the 
  3912.        ambient light in a texture only affects the shape it is used 
  3913.        on.   
  3914.        
  3915.        The default value is very little ambient light (0.1). The 
  3916.        value can range from 0.0 to 1.0. Higher ambient values in a 
  3917.        texture will make a shape using that texture look flat and 
  3918.        plastic.
  3919.  
  3920.        
  3921.                                                   POV-Ray V1.0 Page  78
  3922.        
  3923.        
  3924.        
  3925.        diffuse value
  3926.        
  3927.        The diffuse value specifies how much the texture will react 
  3928.        to light directly shining on it. High values of diffuse 
  3929.        (.7-.9) make the colors in a texture very bright, lower 
  3930.        values (.1-.4) will make the colors in the texture seem more 
  3931.        subdued. The default value for diffuse is .6. The value can 
  3932.        range from 0.0 to 1.0. Diffuse does not affect the 
  3933.        highlights or shadowed portions of the texture.
  3934.        
  3935.        brilliance value
  3936.        Objects can be made to appear more metallic by increasing 
  3937.        their brilliance. This controls the tightness of the basic 
  3938.        diffuse illumination on objects and minorly adjusts the 
  3939.        appearance of surface shininess. The default value is 1.0. 
  3940.        Higher values from 3.0 to about 10.0 can give objects a 
  3941.        somewhat more shiny or metallic appearance. There are no 
  3942.        limits to the brilliance value. Experiment to see what works 
  3943.        best for a particular situation. This is best used in 
  3944.        concert with either the specular or phong highlighting.
  3945.        
  3946.        reflection value
  3947.        By setting the reflection value to be non-zero, you can give 
  3948.        the object a mirrored finish. It will reflect all other 
  3949.        elements in the scene.
  3950.        
  3951.        The value can range from 0.0 to 1.0. By default there is no 
  3952.        reflection.
  3953.        
  3954.        Reflection is one of the strongest features of ray tracing. 
  3955.        Try making the sphere in PICTURE1.POV mirrored by adding 
  3956.        reflection 1.0 to its texture. 
  3957.        
  3958.        Note: Adding reflection to a texture makes it take much 
  3959.        longer to render.
  3960.        
  3961.        refraction value
  3962.        Example:
  3963.          texture {
  3964.            color White alpha .9
  3965.            refraction 1
  3966.            ior 1.5
  3967.            phong 1
  3968.          }
  3969.        The refraction value attenuates the color of the refracted 
  3970.        light through a transparent texture. Lower values of 
  3971.        refraction will make the transparent portion less 
  3972.        transparent. Higher values will make the transparent portion 
  3973.        more transparent. This value is usually 1 and transparency 
  3974.        amounts are controlled with the alpha in a color. Legal 
  3975.  
  3976.        
  3977.                                                   POV-Ray V1.0 Page  79
  3978.        
  3979.        
  3980.        values for refraction are from 0-1. By default there is no 
  3981.        refraction. If there is no alpha in a color, then it will 
  3982.        not be transparent.
  3983.        
  3984.        The ior value, described below, is used in conjunction with 
  3985.        refraction and alpha to create textures that bend light 
  3986.        passing through them. This is used to simulate glass, water, 
  3987.        diamonds, etc.
  3988.        
  3989.        Use "refraction 1" and an ior value with a transparent 
  3990.        texture when you want to create a texture that bends light 
  3991.        like water and glass do.
  3992.        
  3993.        NOTE: In layered textures, the refraction and ior keywords 
  3994.        MUST be in the last texture, otherwise they will not take 
  3995.        effect.
  3996.        
  3997.        NOTE: If a texture has an alpha component and no value for 
  3998.        refraction and ior are supplied, the renderer will simply 
  3999.        transmit the ray through the surface with no bending. 
  4000.        
  4001.        ior value
  4002.        Example:
  4003.          texture {
  4004.            color red .5 green .7 blue 1 alpha .9
  4005.            refraction 1
  4006.            ior 1.33
  4007.            phong 1
  4008.          }
  4009.        
  4010.        The ior or Index of Refraction determines how dense a 
  4011.        transparent texture is or how far the light will bend as it 
  4012.        passes through the texture. 
  4013.        
  4014.        For ior to have an affect, the texture must have some 
  4015.        transparent colors that use alpha and the refraction value 
  4016.        should be set to 1.
  4017.        
  4018.        A value of 1.0 will give no refraction. The Index of 
  4019.        Refraction for air is 1.0, water is 1.33, glass is 1.5, and 
  4020.        diamond is 2.4. The file IOR.INC pre-defines several useful 
  4021.        values for ior.
  4022.        
  4023.        phong value
  4024.        Controls the amount of Phong specular reflection 
  4025.        highlighting on the texture. Causes bright shiny spots on 
  4026.        the element that are the color of the light source being 
  4027.        reflected.
  4028.        
  4029.  
  4030.        
  4031.                                                   POV-Ray V1.0 Page  80
  4032.        
  4033.        
  4034.        Phong highlighting is simulating the fact that slightly 
  4035.        reflective objects, especially metallic ones, have 
  4036.        microscopic facets, some of which are facing in the mirror 
  4037.        direction. The more that are facing that way, the shinier 
  4038.        the object appears, and the tighter the specular highlights 
  4039.        become. Phong measures the average of facets facing in the 
  4040.        mirror direction from the light sources to the viewer. 
  4041.        
  4042.        Phong's value is typically from 0.0 to 1.0, where 1.0 causes 
  4043.        complete saturation of the object's color to the light source's color at the 
  4044.        brightest area (center) of the highlight. There is no phong 
  4045.        highlighting given by default. 
  4046.        
  4047.        The size of the highlight spot is defined by the phong_size 
  4048.        value described below.
  4049.        
  4050.        phong_size value
  4051.        Controls the size of the phong Highlight on the object, sort 
  4052.        of an arbitrary "glossiness" factor. Think of it as a 
  4053.        "tightness" value. The larger the phong_size, the tighter, 
  4054.        or smaller, the highlight. The smaller the phong_size, the 
  4055.        looser, or larger, the highlight.
  4056.        
  4057.        Typical values range from 1.0 (Very Dull) to 250 (Highly 
  4058.        Polished) though any values may be used. Default phong_size 
  4059.        is 40 (plastic) if phong_size is not specified.
  4060.        
  4061.        specular value
  4062.        Very similar to Phong specular highlighting, but a different 
  4063.        model is used for determining light ray/object intersection, 
  4064.        so a more credible spreading of the highlights occur near 
  4065.        the object horizons, supposedly. 
  4066.        
  4067.        Specular's value is typically from 0.0 to 1.0, where 1.0 
  4068.        causes complete saturation of the object's color to the 
  4069.        light source's color at the brightest area (center) of the 
  4070.        highlight. There is no specular highlighting given by 
  4071.        default. 
  4072.        
  4073.        The size of the spot is defined by the value given for 
  4074.        roughness, described below.
  4075.        
  4076.        Note that Specular and Phong highlights are NOT mutually 
  4077.        exclusive. It is possible to specify both and they will both 
  4078.        take effect. Normally, however, you will only specify one or 
  4079.        the other.
  4080.        
  4081.        roughness value
  4082.        Controls the size of the specular Highlight on the object, 
  4083.  
  4084.        
  4085.                                                   POV-Ray V1.0 Page  81
  4086.        
  4087.        
  4088.        relative to the object's "roughness". Typical values range 
  4089.        from 1.0 (Very Rough -- large highlight) to 0.0005 (Very 
  4090.        Smooth -- small highlight). The default value, if roughness 
  4091.        is not specified, is 0.05 (Plastic).
  4092.        
  4093.        It is possible to specify "wrong" values for roughness that 
  4094.        will generate an error when you try to render the file. 
  4095.        Don't use 0 and if you get errors, check to see if you are 
  4096.        using a very, very small roughness value that may be causing 
  4097.        the error.
  4098.        
  4099.        
  4100.        metallic
  4101.        This keyword indicates that the color of the specular and 
  4102.        phong highlights will be the surface color instead of the 
  4103.        light_source color. This creates a metallic appearance. See 
  4104.        the Metal texture in the TEXTURES.INC file for an example of 
  4105.        metallic.
  4106.        
  4107.  
  4108.        
  4109.                                                   POV-Ray V1.0 Page  82
  4110.        
  4111.        
  4112.        
  4113.        
  4114.        Color Pattern Texture Types
  4115.        
  4116.        Before the color patterns are listed, here is a description 
  4117.        of color maps which are essential to color patterns.
  4118.        
  4119.        Color Maps
  4120.        For wood, marble, spotted, agate, granite, gradient and other color 
  4121.        patterns, you may specify a set of colors to use for the 
  4122.        pattern. This is done by a color map or "color spline".
  4123.        
  4124.        When the object is being textured, a number between 0.0 and 
  4125.        1.0 is generated which is then used to form the color of the 
  4126.        point. A color map specifies the mapping used to change 
  4127.        these numbers into colors. The syntax is as follows:
  4128.        
  4129.        color_map {
  4130.          [start_value end_value color1 color2]
  4131.          [start_value end_value color1 color2]
  4132.          [start_value end_value color1 color2]
  4133.           ... 
  4134.          }
  4135.        
  4136.        For example,
  4137.        
  4138.        color_map {
  4139.          [ 0 .3 color Red    color Yellow]
  4140.          [.3 .6 color Yellow color Blue]
  4141.          [.6  1 color Green  color Clear]
  4142.          }
  4143.        
  4144.        
  4145.        The numeric value between 0.0 and 1.0 is located in the 
  4146.        color map and the final color is calculated by a linear 
  4147.        interpolation (a smooth blending) between the two colors in 
  4148.        the located range. 
  4149.        
  4150.        The easiest way to see how it works is to try it. With a 
  4151.        good choice of colors the bozo color pattern produces some 
  4152.        of the most realistic looking cloudscapes you've ever seen 
  4153.        indoors! Try a cloud color map such as:
  4154.        
  4155.        texture {
  4156.           bozo
  4157.           turbulence 1  // A blustery day. 
  4158.                         // For a calmer one, try 0.2 
  4159.           color_map {
  4160.              [ 0 .5 color red .5 green .5 blue  1  // blue to blue
  4161.                     color red .5 green .5 blue  1]
  4162.  
  4163.        
  4164.                                                   POV-Ray V1.0 Page  83
  4165.        
  4166.        
  4167.              [.5 .6 color red .5 green .5 blue  1  // blue to 
  4168.        white
  4169.                     color red  1 green  1 blue  1]
  4170.              [.6  1 color red  1 green  1 blue  1 // white to grey}
  4171.                     color red .5 green .5 blue .5]
  4172.            }
  4173.        }
  4174.        
  4175.        The color map above indicates that for small values of the 
  4176.        pattern, use a sky blue color solidly until about halfway 
  4177.        turbulent, then fade through to white on a fairly narrow 
  4178.        range. As the white clouds get more turbulent and solid 
  4179.        towards the center, pull the color map toward grey to give 
  4180.        them the appearance of holding water vapor (like typical 
  4181.        clouds). 
  4182.        
  4183.        Don't let yourself be limited by the color pattern names, 
  4184.        try different color schemes on them and see what you can 
  4185.        come up with.
  4186.        
  4187.                ---------------------------------------------
  4188.        
  4189.        The following color patterns are available. They may be 
  4190.        scaled, rotated and translated. They may be applied to any 
  4191.        shape or object. Turbulence may be used except where noted.
  4192.        
  4193.        
  4194.        checker - Color Pattern.
  4195.        Syntax: 
  4196.          checker color red # green # blue # color red # green # 
  4197.        blue #
  4198.        Example: 
  4199.          checker color Red color Yellow
  4200.        
  4201.        checker pattern gives a checker-board appearance. This 
  4202.        option works best on planes. When using the checker 
  4203.        texturing, you must specify two colors immediately following 
  4204.        the word checker. These colors are the colors of alternate 
  4205.        squares in the checker pattern. This is a ray tracing 
  4206.        classic and cliche.
  4207.        
  4208.        bozo - Color Pattern.
  4209.        Syntax: 
  4210.          bozo color_map {...} 
  4211.        
  4212.        The bozo color pattern basically takes a noise function and 
  4213.        maps it onto the surface of an object. This "noise" is 
  4214.        well-defined for every point in space. If two points are 
  4215.        close together, they will have noise values that are close 
  4216.  
  4217.        
  4218.                                                   POV-Ray V1.0 Page  84
  4219.        
  4220.        
  4221.        together. If they are far apart, their noise values will be 
  4222.        fairly random relative to each other. 
  4223.        
  4224.        
  4225.        spotted - Color Pattern.
  4226.        Syntax: 
  4227.          spotted color_map {...} 
  4228.        
  4229.        Spotted pattern is a sort of swirled random spotting of the 
  4230.        color of the object. If you've ever seen a metal organ pipe 
  4231.        up close you know about what it looks like (a galvanized 
  4232.        garbage can is close...) Play with this one, it might render 
  4233.        a decent cloudscape during a very stormy day. No extra 
  4234.        keywords are required. With small scaling values, looks like 
  4235.        masonry or concrete. 
  4236.        
  4237.        marble - Color Pattern.
  4238.        Syntax: 
  4239.          marble color_map {...} 
  4240.        
  4241.        Marble uses the color map to create parallel bands of color. 
  4242.        Add turbulence to make it look more like marble, jade or 
  4243.        other types of stone. By default, marble has no turbulence.
  4244.        
  4245.        wood - Color Pattern.
  4246.        Syntax: 
  4247.          wood color_map {...} 
  4248.        
  4249.        Wood uses the color map to create concentric cylindrical 
  4250.        bands of color centered on the Z axis. Add small amounts of 
  4251.        turbulence to make it look more like real wood. By default, 
  4252.        wood has no turbulence.
  4253.        
  4254.        agate - Color Pattern.
  4255.        Syntax: 
  4256.          agate color_map {...}
  4257.        
  4258.        This pattern is very beautiful and similar to marble, but uses 
  4259.        a different turbulence function. The turbulence 
  4260.        keyword has no effect, and as such it is always very 
  4261.        turbulent. 
  4262.        
  4263.        gradient - Color Pattern.
  4264.        Syntax: 
  4265.          gradient <axis_vector> color_map {...}
  4266.        
  4267.        This is a specialized pattern that uses approximate local 
  4268.        coordinates of an object to control color map gradients. 
  4269.        This texture does not have a default color_map, so one must 
  4270.        be specified. 
  4271.        
  4272.        It has a special <X Y Z> triple called the axis vector given 
  4273.        after the gradient keyword, which specifies any (or all) 
  4274.  
  4275.        
  4276.                                                   POV-Ray V1.0 Page  85
  4277.        
  4278.        
  4279.        axes to perform the gradient action on. 
  4280.        
  4281.        Example: a Y gradient <0.0 1.0 0.0> will give an "altitude 
  4282.        color map", along the Y axis. 
  4283.        
  4284.        In the axis vector, values given other than 0.0 are taken as 
  4285.        1.0. 
  4286.        
  4287.        For smooth repeating gradients, you should use a "circular" 
  4288.        color map, that is, one in which the first color value (0.0) 
  4289.        is the same as the last one (1) so that it "wraps around" 
  4290.        and will cause smooth repeating gradient patterns. 
  4291.        
  4292.        Scaling the texture is normally required to achieve the 
  4293.        number of repeating shade cycles you want. 
  4294.        
  4295.        Transformation of the texture is useful to prevent a 
  4296.        "mirroring" effect from either side of the central 0 axes.
  4297.        
  4298.        Here is an example of a gradient texture which uses a sharp 
  4299.        "circular" color mapped gradient rather than a smooth one, 
  4300.        and uses both X and Y gradients to get a diagonally-oriented 
  4301.        gradient. It produces a dandy candy cane texture! 
  4302.        
  4303.          texture {
  4304.            gradient < 1.0 1.0 0.0 >
  4305.            color_map {
  4306.              [  0 .25  color red 1 green 0 blue 0
  4307.                        color red 1 green 0 blue 0]
  4308.              [.25 .75  color red 1 green 1 blue 1
  4309.                        color red 1 green 1 blue 1]
  4310.              [.75   1  color red 1 green 0 blue 0
  4311.                        color red 1 green 0 blue 0]
  4312.            }
  4313.            scale <30 30 30>
  4314.            translate <30 -30 0>
  4315.         }
  4316.        
  4317.        You may also specify a turbulence value with the gradient to 
  4318.        give a more irregular color gradient. This may help to 
  4319.        simulate things like fire or corona effects. By default, 
  4320.        gradient has no turbulence.
  4321.        
  4322.        granite - Color Pattern.
  4323.        Syntax: granite color_map {...}
  4324.        
  4325.        This pattern uses a simple 1/f fractal noise function to 
  4326.  
  4327.        
  4328.                                                   POV-Ray V1.0 Page  86
  4329.        
  4330.        
  4331.        give a pretty darn good granite pattern. Typically used with 
  4332.        small scaling values (2.0 to 5.0).  This pattern is used 
  4333.        with creative color maps in STONES.INC to create some 
  4334.        gorgeous layered stone textures. By default, granite has no 
  4335.        turbulence.
  4336.        
  4337.        onion - Color Pattern.
  4338.        Syntax: onion color_map {...}
  4339.        
  4340.        onion is a pattern of concentric spheres. By default, onion 
  4341.        has no turbulence.
  4342.        
  4343.        leopard - Color Pattern.
  4344.        Syntax: leopard color_map {...}
  4345.        
  4346.        leopard creates a pattern from stacked spheres. The color of 
  4347.        the spheres and the colors in between them is taken from the 
  4348.        color map. Turbulence works very effectively with this 
  4349.        texture. By default, leopard has no turbulence.
  4350.        
  4351.        
  4352.        tiles - A texture pattern
  4353.        This isn't exactly a color pattern, but this is the best 
  4354.        place for it at the moment.
  4355.        We've had many requests for a checker pattern to allow you 
  4356.        to alternate between wood and marble or any other two textures. 
  4357.        So, we've added a texture called tiles that takes two textures 
  4358.        and tiles them instead of two colors.
  4359.        
  4360.        In order to support layered textures in the future, the 
  4361.        syntax is a bit more verbose than it would be otherwise. The 
  4362.        syntax is:
  4363.        
  4364.        texture{
  4365.          tiles {
  4366.            texture {... put in a texture here ... }       
  4367.            texture {... add optional layers on top of that one ...}
  4368.          tile2
  4369.            texture {... this is the second tile texture } 
  4370.            texture  {... a texture layered on top of the 2nd tile}
  4371.          }   
  4372.        }
  4373.        
  4374.        Example:
  4375.        
  4376.            texture{
  4377.               tiles {
  4378.                  texture { Jade }
  4379.               tile2
  4380.                  texture { Red_Marble }
  4381.  
  4382.        
  4383.                                                   POV-Ray V1.0 Page  87
  4384.        
  4385.        
  4386.                }   
  4387.            }
  4388.        
  4389.        
  4390.        Note that the textures in tiles only use the surface 
  4391.        coloring texture information. Information about ambient, 
  4392.        diffuse, reflection, etc. and surface normal information 
  4393.        (waves, ripples) are ignored inside the tiles.
  4394.        
  4395.        You may use layered textures with tiles, but only the top 
  4396.        layer will show. 
  4397.  
  4398.        
  4399.                                                   POV-Ray V1.0 Page  88
  4400.        
  4401.        
  4402.        
  4403.        
  4404.        Bump Patterns
  4405.        
  4406.        Bump patterns or surface normal perturbation patterns change 
  4407.        the way a surface reflects light and make it look bumpy. The 
  4408.        actual shape of the surface is not changed, but shading, 
  4409.        highlights, and reflections will make it look as if it 
  4410.        were.
  4411.        
  4412.        ripples - Bump Pattern
  4413.        Syntax: 
  4414.          ripples (ripple size #) [frequency #]  [phase #]
  4415.        Example : 
  4416.          ripples 0.5
  4417.        
  4418.        The ripples bump pattern make a surface look like ripples of 
  4419.        water. The ripples option requires a value to determine how 
  4420.        deep the ripples are:
  4421.        
  4422.             texture {
  4423.                  wood
  4424.                  ripples 0.3
  4425.                  phong 1
  4426.                  translate < 1.0 2.0 3.0 >
  4427.                  rotate < 0.0 10.0 40.0 >
  4428.                  scale < 10.0 10.0 10.0 >
  4429.             }
  4430.        
  4431.        The ripple size may be any number. Larger values create 
  4432.        larger ripples. The frequency and phase parameters change 
  4433.        the distance between ripples and the position of the ripple, 
  4434.        respectively.
  4435.        
  4436.        waves - Bump Pattern
  4437.        Syntax: 
  4438.          waves (wave size #) [frequency #] [phase #]
  4439.        Example : 
  4440.          waves 0.5 frequency 10 phase 0.3
  4441.        
  4442.        This works in a similar way to ripples except that it makes 
  4443.        waves with different frequencies. The effect is to make 
  4444.        waves that look more like deep ocean waves. 
  4445.        
  4446.        Both waves and ripples respond to a parameter called phase. 
  4447.        The phase option allows you to create animations in which 
  4448.        the water seems to move. This is done by making the phase 
  4449.        increment slowly between frames. The range from 0.0 to 1.0 
  4450.        gives one complete cycle of a wave.
  4451.        
  4452.        The waves and ripples textures also respond to a parameter 
  4453.  
  4454.        
  4455.                                                   POV-Ray V1.0 Page  89
  4456.        
  4457.        
  4458.        called frequency. If you increase the frequency of the 
  4459.        waves, they get closer together. If you decrease it, they 
  4460.        get farther apart. 
  4461.        
  4462.        bumps - Bump Pattern
  4463.        Syntax: 
  4464.          bumps (bump size #) 
  4465.        Example : 
  4466.          bumps .4
  4467.        
  4468.        Approximately the same turbulence function as spotted, but 
  4469.        uses the derived value to perturb the surface normal or, in 
  4470.        other words, make the surface look bumpy. This gives the 
  4471.        impression of a "bumpy" surface, random and irregular, sort 
  4472.        of like an orange. After the bumps keyword, supply a single 
  4473.        floating point value for the amount of surface perturbation. 
  4474.        Values typically range from 0.0 (No Bumps) to 1.0 or 
  4475.        greater(Extremely Bumpy). 
  4476.        
  4477.        dents - Bump Pattern
  4478.        Syntax: 
  4479.          dents (dent size #) 
  4480.        Example : 
  4481.          dents .4
  4482.        
  4483.        Interesting when used with metallic textures, it gives 
  4484.        impressions into the metal surface that look like dents. A 
  4485.        single value is supplied after the dents keyword to indicate 
  4486.        the amount of denting required. Values range from 0.0 
  4487.        (Showroom New) to 1.0 (Insurance Wreck). Use larger values 
  4488.        at your own risk, they will raise your rates, anyway. Scale 
  4489.        the pattern to make the pitting more or less frequent.
  4490.        
  4491.        wrinkles - Bump Pattern
  4492.        Syntax: wrinkles (wrinkle size #) 
  4493.        Example : wrinkles .7
  4494.        
  4495.        This is sort of a 3-D bumpy granite. It uses a similar 1/f 
  4496.        fractal noise function to perturb the surface normal in 3-D 
  4497.        space. With a transparent color pattern, could look like 
  4498.        wrinkled cellophane. Requires a single value after the 
  4499.        wrinkles keyword to indicate the amount of wrinkling 
  4500.        desired. Values from 0.0 (No Wrinkles) to 1.0 (Very 
  4501.        Wrinkled) are typical. 
  4502.        
  4503.  
  4504.        
  4505.                                                   POV-Ray V1.0 Page  90
  4506.        
  4507.        
  4508.        
  4509.        
  4510.        Mapping Textures
  4511.        
  4512.        Mapping textures apply a picture to the surface of a shape 
  4513.        or object. Maps are used to color objects, make them look 
  4514.        bumpy, and to apply different textures to an object, all 
  4515.        based on the color of the pixels in the mapped image.
  4516.        
  4517.        There are several different types of mapping, and several 
  4518.        different methods to apply the map.
  4519.        
  4520.        
  4521.        Mapping Types:
  4522.        image_map:
  4523.             Applies the colors in the image to the surface of the 
  4524.             shape.
  4525.        bump_map:
  4526.             Makes the surface look bumpy based on the color of the 
  4527.             pixels in the mapped image.
  4528.        material_map:
  4529.             Changes the texture on the surface based on the color 
  4530.             of the pixels in the mapped image.
  4531.        
  4532.        Mapping Method:
  4533.        0 - Planar:
  4534.             Like a slide projector, it casts and image onto the 
  4535.             surface from 0,0 to 1,1.
  4536.        1 - Spherical:
  4537.             Wraps the image once around a sphere with radius 1.
  4538.        2 - Cylindrical: 
  4539.             Wraps the image once around a cylinder with radius 1, 
  4540.             length 1.
  4541.        3 - Torus:
  4542.             Wraps the image around a torus (donut) with inner and 
  4543.             outer radius of 1.
  4544.        
  4545.        The documentation for image_map explains the basic options 
  4546.        which are true for all mapping types.
  4547.        
  4548.        image_map - Color Pattern.
  4549.        Syntax:
  4550.        image_map { [map_type #] [<gradient>] image_type "filename" 
  4551.        [alpha # #] [once] [interpolate #] }
  4552.        
  4553.        This is a special color pattern that allows you to import a 
  4554.        bitmapped image file in GIF, TGA, IFF, or DUMP format and 
  4555.        map that bitmap onto an object. 
  4556.        
  4557.        For example:
  4558.        
  4559.        // Use planar (type 0) mapping to project falwell.gif 
  4560.  
  4561.        
  4562.                                                   POV-Ray V1.0 Page  91
  4563.        
  4564.        
  4565.        // onto the shape in a repeating pattern.
  4566.        // Set interpolation to 2 (bilinear) so the mapped GIF will 
  4567.        
  4568.        // be smoothed and not look jaggy.
  4569.        image_map {   
  4570.          map_type 0 <1 0 -1> gif "falwell.gif" interpolate 2 
  4571.        }
  4572.        
  4573.        or
  4574.        
  4575.        // Use spherical (type 1) mapping to 
  4576.        // wrap earth.tga once onto a unit sphere
  4577.        // No interpolation is used, so it may look 
  4578.        // jaggy
  4579.        image_map {   
  4580.          map_type 1 tga "earth.tga" 
  4581.        }
  4582.        or
  4583.        // Use cylindrical (type 2) mapping to wrap 
  4584.        // cambells.gif once onto a unit cylinder.
  4585.        // Set interpolation to 4 (normalized distance)
  4586.        // so the mapped GIF will be smoothed and not look jaggy.
  4587.        //  Norm dist isn't as good as bi-linear, but it's faster.
  4588.        image_map {   
  4589.          map_type 2 <1 -1 0> gif "cambells.gif" interpolate 4
  4590.        }
  4591.        
  4592.        The texture in the first example will be mapped onto the 
  4593.        object as a repeating pattern. The once keyword places only 
  4594.        one image onto the object instead of an infinitely repeating 
  4595.        tiled pattern. When once is used, the color outside the 
  4596.        mapped texture is set to transparent. You can use the 
  4597.        layered textures to place other textures or colors below the 
  4598.        image.
  4599.        
  4600.        The image map methods sphere, cylinder, and torus, wrap the 
  4601.        image once and only once around a unit shape of the same name. The 
  4602.        map may be scaled uniformly to apply to larger shapes. The maps 
  4603.        may be applied to any shapes, but the results are undefined.
  4604.        
  4605.        The planar image map method is like a slide projector and 
  4606.        will work the same for any shape.
  4607.        
  4608.        You can specify the alpha values for the color 
  4609.        palette/registers of GIF or IFF pictures (at least for the 
  4610.        modes that use palettes/colormaps). You can do this by 
  4611.  
  4612.        
  4613.                                                   POV-Ray V1.0 Page  92
  4614.        
  4615.        
  4616.        putting the keyword alpha immediately following the filename 
  4617.        followed by the register/color number value and 
  4618.        transparency. If the all keyword is used instead of a 
  4619.        register/color number, then all colors in that colormap get 
  4620.        that alpha value.
  4621.        
  4622.        Eg.
  4623.           image_map { 
  4624.             map_type 0 <1.0 -1.0 0.0> gif "mypic.gif"
  4625.             alpha all 0.2 // Make all colors 20% transparent 
  4626.             ...
  4627.        
  4628.              or
  4629.            alpha 0   0.5 // Make color 0 50% transparent
  4630.            alpha 1   1.0 // Make color 1 100% transparent
  4631.            alpha 2   0.3 // Make color 2 30% transparent
  4632.            ...
  4633.            once
  4634.            ...
  4635.            }
  4636.        
  4637.        NOTE: Alpha works as a filter, so adding alpha to the color 
  4638.        black still leaves you with black no matter how high alpha 
  4639.        is. If you want a color to be clear, add alpha 1 to the 
  4640.        color white.
  4641.        
  4642.        By default, the image is mapped onto the X-Y plane in the 
  4643.        range (0.0, 0.0) to (1.0, 1.0). If you would like to change 
  4644.        this default, you may use an optional gradient <x, y, z> 
  4645.        vector after the word image_map. This vector indicates which 
  4646.        axes are to be used as the u and v (local surface X-Y) axes. 
  4647.        The vector should contain one positive number and one 
  4648.        negative number to indicate the "u" and "v" axes, 
  4649.        respectively. You may translate, rotate, and scale the 
  4650.        texture to map it onto the object's surface as desired. Here 
  4651.        is an example:
  4652.        
  4653.             object {
  4654.                  plane { < 0 0 1 > -20 } 
  4655.                   // make this texture use the x and z axes for 
  4656.        the
  4657.                   // image mapping. 
  4658.                  texture {   
  4659.                     image_map { 0 <1.0  0.0  -1.0> gif "image.gif" }
  4660.                     scale <40.0 40.0 40.0>
  4661.                  }
  4662.              }
  4663.  
  4664.        
  4665.                                                   POV-Ray V1.0 Page  93
  4666.        
  4667.        
  4668.        
  4669.        The gradient vector and scaling will not affect a spherical 
  4670.        image map. Nor will the "once" keyword. Spherical image maps 
  4671.        auto-scale so that they wrap once around the sphere.
  4672.        
  4673.        Filenames specified in the image_map statements will be 
  4674.        searched for in the home (current) directory first, and if 
  4675.        not found, will then be searched for in directories 
  4676.        specified by any "-l" (library path) options active. This 
  4677.        would facilitate keeping all your image maps (.dis, .gif or 
  4678.        .iff) files in a "textures" subdirectory, and giving an "-l" 
  4679.        option on the command line to where your library of image 
  4680.        maps are. Turbulence will affect image maps.
  4681.        
  4682.        bump_map - A Bump Pattern
  4683.        Syntax:
  4684.        bump_map { [map_type #]  [<gradient>] image_type  "filename"  
  4685.        [bump_size #] [once] [interpolate #] [use_color] 
  4686.        [use_index]}
  4687.        
  4688.        Instead of placing the color of the image on the shape, 
  4689.        bump_map perturbs the surface normal based on the color of 
  4690.        the image at that point. By default, bump_map uses the 
  4691.        actual color of the pixel. This can also be specifically 
  4692.        directed by using the use_color keyword. 
  4693.        
  4694.        The height of the bump is based on how bright the pixel is. 
  4695.        Black is not bumpy, white is very bumpy. Colors are 
  4696.        converted to grey scale internally before calculating 
  4697.        height.
  4698.        
  4699.        If you specify use_index, bump_map uses the color's palette 
  4700.        number as the height of the bump at that point. So, color #0 
  4701.        would not be bumpy and color #255 would be very bumpy. The 
  4702.        actual color of the pixels doesn't matter when using the 
  4703.        index.
  4704.        
  4705.        The relative bump_size can be scaled using bump_size #. The 
  4706.        bump_size number can be any number other than 0. Valid 
  4707.        numbers are 2, .5, -33, 1000, etc.
  4708.        Examples:
  4709.        //  Use planar (type 0) mapping to project falwell.gif
  4710.        // onto the shape in a repeating pattern.
  4711.        //  Set interpolation to 2 (bilinear) so the mapped GIF
  4712.        //  will be smoothed and not look jaggy.
  4713.        // Black and white pictures make interesting bump_maps. 
  4714.        bump_map {   
  4715.          map_type 0 <1 0 -1> gif "falwell.gif" 
  4716.  
  4717.        
  4718.                                                   POV-Ray V1.0 Page  94
  4719.        
  4720.        
  4721.          interpolate 2 bump_size 5
  4722.        }
  4723.        
  4724.        or
  4725.        
  4726.        // Use spherical (type 1) mapping to wrap 
  4727.        // earth.tga once onto a unit sphere
  4728.        // No interpolation is used, so it may look jaggy
  4729.        bump_map {   
  4730.          map_type 1 tga "earth.tga" bump_size -3
  4731.        }
  4732.        
  4733.        or
  4734.        
  4735.        // Use cylindrical (type 2) mapping to wrap cambells.gif
  4736.        // once onto a unit cylinder.
  4737.        //  Use color number of pixel for bump height 
  4738.        //  instead of actual color.
  4739.        bump_map {   
  4740.          map_type 2 <1 -1 0> gif "cambells.gif" use_index
  4741.        }
  4742.        
  4743.        General information on maps can be found above in the 
  4744.        section on image_map.
  4745.        
  4746.        material_map - A texture pattern
  4747.        Syntax: 
  4748.        material_map { map_type #  [<gradient>] image_type  
  4749.        "filename"  [once] [interpolate #]  
  4750.            texture{... } // First used for color 0
  4751.            texture {...} // Second texture used for color 1
  4752.            texture {...} // Third texture used for color 2
  4753.            texture {...} // Fourth texture used for color 3
  4754.                          // Color 4 will use texture 5
  4755.                          // Color 5 will use texture 6 and so on.
  4756.           }
  4757.        
  4758.        Like the tiles texture pattern, material_map applies other 
  4759.        textures to a surface. It maps the image to the surface, and 
  4760.        then picks the texture for each point on the surface based 
  4761.        on the color index in the mapped image.
  4762.        
  4763.        Imagine a GIF image of blue squiggles on a black background, 
  4764.        we'll call it SQUIG.GIF. Looking at the image's palette you 
  4765.        can see that black is color 0 and blue is color 1. You can 
  4766.        view the palette using a paint program. So, we make a 
  4767.        material map for it like this:
  4768.        
  4769.  
  4770.        
  4771.                                                   POV-Ray V1.0 Page  95
  4772.        
  4773.        
  4774.        material_map { 
  4775.            map_type 0  gif "squig.gif"  
  4776.            texture { DMFWood2 } // First texture used 
  4777.                                 // for color 0 Black
  4778.            texture { Gold_Metal } // Second texture used 
  4779.                                   // for color 1 Blue
  4780.           }
  4781.        
  4782.        This map applied to a sphere would put DMFWood1 everywhere 
  4783.        the black would be and Gold_Metal everywhere it finds blue 
  4784.        squiggles. The effect is of gold inlaid metal on a wooden 
  4785.        sphere! It can be very effective when used correctly. 
  4786.        
  4787.        NOTE: Layered textures don't work properly with material 
  4788.        maps. Only the top layer of layered textures will show on 
  4789.        them.
  4790.        
  4791.        General information on maps can be found above in the 
  4792.        section on image_map.
  4793.        
  4794.        
  4795.        Interpolation
  4796.        Interpolation smooths the jaggies on an image or bump map by 
  4797.        using a technique similar to anti-aliasing. Basically, when 
  4798.        POV-Ray asks for the color from a bump or image map, it 
  4799.        often asks for a point that is not directly on top of one 
  4800.        pixel, but sort of between several different colored pixels. 
  4801.        Interpolations returns an "in-between" value so that the 
  4802.        steps between the pixels in the image or bump map will look 
  4803.        smoother.
  4804.        
  4805.        There are currently two types of interpolation:
  4806.        
  4807.           Normalized Distance -- interpolate 4
  4808.           Bilinear            -- interpolate 2
  4809.        
  4810.        Default is no interpolation. Normalized distance is the 
  4811.        slightly faster of the two, bilinear does a better job of 
  4812.        picking the between color. Normally, bilinear is used.
  4813.        
  4814.        If your bump or image map looks jaggy, try using 
  4815.        interpolation instead of going to a higher resolution image. 
  4816.        The results can be very good.
  4817.        
  4818.  
  4819.        
  4820.                                                   POV-Ray V1.0 Page  96
  4821.        
  4822.        
  4823.        Misc Features
  4824.        
  4825.        
  4826.        Fog
  4827.        The ray tracer includes the ability to render fog. To add 
  4828.        fog to a scene, place the following declaration outside of 
  4829.        any object definitions: 
  4830.        
  4831.             fog {
  4832.                  color White // the fog color
  4833.                  200.0       // the fog distance
  4834.             }
  4835.        
  4836.        The fog to color ratio is calculated as:
  4837.        
  4838.           1-exp(- depth/distance)
  4839.        
  4840.        So at depth 0, the color is pure (1.0) with no fog (0.0). 
  4841.        At the fog distance, you'll get 63% of the color from the 
  4842.        object's color and 37% from the fog color.
  4843.        
  4844.  
  4845.        
  4846.                                                   POV-Ray V1.0 Page  97
  4847.        
  4848.        
  4849.        
  4850.        Default Texture
  4851.        When a texture is first created, POV-Ray initializes it with 
  4852.        default values for all options. The default values are:
  4853.        
  4854.        color red 0 green 0 blue 0 alpha 0
  4855.        ambient .1
  4856.        diffuse .6
  4857.        phong 0
  4858.        phong_size 40
  4859.        specular 0
  4860.        roughness .05
  4861.        brilliance 1
  4862.        metallic FALSE
  4863.        reflection 0
  4864.        refraction 0
  4865.        ior 1
  4866.        turbulence 0
  4867.        octaves 6
  4868.        texture randomness (dither) 0
  4869.        phase 0
  4870.        frequency 1
  4871.        color map NONE
  4872.        
  4873.        These values can be changed with the default texture 
  4874.        feature. After the parser reads a default texture, it will 
  4875.        initialize new textures with the new default values. The 
  4876.        syntax of the default texture is:
  4877.        
  4878.        #default { 
  4879.          texture {..} 
  4880.        }
  4881.        
  4882.        Any texture values may be used. A Common use for the default 
  4883.        texture is to change the ambient and diffuse values through 
  4884.        the entire scene. For example:
  4885.        
  4886.        #default { texture { ambient .5 diffuse .9} }
  4887.        
  4888.        Would make any textures created after this line use ambient 
  4889.        .5 and diffuse .9. All other values will remain at their old 
  4890.        default values. Ambient .5 diffuse .9 won't look good, but 
  4891.        it'll brighten up the scene if you need help positioning 
  4892.        objects.
  4893.        
  4894.        Any textures that specifically list a value will override 
  4895.  
  4896.        
  4897.                                                   POV-Ray V1.0 Page  98
  4898.        
  4899.        
  4900.        the default value. Default textures may be used more than 
  4901.        once in a scene. The new defaults will affect every texture 
  4902.        that is created following the default definition.
  4903.        
  4904.        Max trace level
  4905.        Syntax: max_trace_level #    (default = 5)
  4906.        
  4907.        Max_trace_level sets the number of levels that POV-Ray will 
  4908.        trace a ray. This is used when a ray is reflected or is 
  4909.        passing through a transparent object. When a ray hits a 
  4910.        reflective surface, it spawns another ray to see what that 
  4911.        point reflects, that's trace level 1. If it hits another 
  4912.        reflective surface, then another ray is spawned and it goes 
  4913.        to trace level 2. The maximum level by default is 5. 
  4914.        
  4915.        If max trace level is reached before a non-reflecting 
  4916.        surface is found, then the color is returned as black. Raise 
  4917.        max_trace_level if you see black in a reflective surface 
  4918.        where there should be a color.
  4919.        
  4920.        The other symptom you could see is with transparent objects. 
  4921.        For instance, try making a union of concentric spheres with 
  4922.        the Cloud_Sky texture on them. Make ten of them in the union 
  4923.        with radius's from 1-10 then render the Scene. The image 
  4924.        will show the first few spheres correctly, then black. Raise 
  4925.        max_trace_level to fix this problem.
  4926.        
  4927.        Note: Raising max_trace_level will use more memory and time 
  4928.        and it could cause the program to crash with a stack 
  4929.        overflow error. Values for max_trace_level are not 
  4930.        restricted, so it can be set to any number as long as you 
  4931.        have the time and memory. 
  4932.        
  4933.        
  4934.  
  4935.        
  4936.                                                   POV-Ray V1.0 Page 99
  4937.        
  4938.        
  4939.        
  4940.        
  4941.        Advanced Lessons
  4942.        
  4943.        The information in this section is designed for people who 
  4944.        are reasonably familiar with the raytracer and want more 
  4945.        information on how things work. You probably don't need this 
  4946.        level of detail to make interesting scene files, but if you 
  4947.        suddenly get confused about something the program did, this 
  4948.        section may help you figure it out. 
  4949.        
  4950.  
  4951.        
  4952.                                                   POV-Ray V1.0 Page 100
  4953.        
  4954.        
  4955.        
  4956.        Camera
  4957.        
  4958.        Cameras are internally defined by the four vectors: 
  4959.        Location, Direction, Up and Right. The other keywords in a 
  4960.        camera block are used to modify some or all of those four 
  4961.        values.
  4962.        
  4963.        The location is simply the X, Y, Z coordinates of the 
  4964.        camera. The camera can be located anywhere in the 
  4965.        ray-tracing universe.
  4966.        
  4967.        The direction vector describes the distance from the 
  4968.        location of the camera to the viewplane. It also specifies 
  4969.        the angle of view. Specifically, it's a vector that starts 
  4970.        at the location and points to the center of the viewplane.
  4971.        
  4972.        The up vector defines the height of the viewplane.
  4973.        The right vector defines the width of the viewplane.
  4974.        
  4975.        This figure illustrates the relationship of these vectors:
  4976.        
  4977.                                      |\
  4978.                                      | \
  4979.                                      |  \
  4980.                                      |   \
  4981.                                      |  ^ \
  4982.                                      |  |  |Up=Height of viewplane
  4983.                                      |\ |  |
  4984.                 (Camera)             | \|  |
  4985.            Location *------------------->  |          THE SCENE
  4986.                        Direction     |  |\ |
  4987.                        = Distance    |  | \|Right= Width of 
  4988.        viewplane
  4989.                        from camera   \  |  |
  4990.                        to viewplane   \ |  |
  4991.                                        \|  |
  4992.                                         \  |
  4993.                                          \ |
  4994.                                           \|
  4995.        
  4996.        The viewplane is divided up according to the image 
  4997.        resolution specified and rays are fired through the pixels 
  4998.        out into the scene.
  4999.        
  5000.        This camera model is very flexible. It allows you to use 
  5001.        left-handed or right-handed coordinate systems. It also 
  5002.  
  5003.        
  5004.                                                   POV-Ray V1.0 Page 101
  5005.        
  5006.        
  5007.        doesn't require that the direction, up, and right vectors be 
  5008.        mutually orthogonal. If you want, you can distort the camera 
  5009.        to get really bizarre results.
  5010.        
  5011.        For an eye ray, therefore, the equation of the ray is: 
  5012.        
  5013.          Location + t (Direction + ((height - y)*up) + (x*right))
  5014.        
  5015.        where "t" is a parameter that determines the distance from 
  5016.        the eye to the object being tested. The Y coordinate is 
  5017.        inverted by subtracting it from height because most graphics 
  5018.        systems put 0,0 in the top left corner of the screen.
  5019.        
  5020.        
  5021.        Once the basic four vectors are specified, it's possible to 
  5022.        use the sky and look_at vectors to point the camera. You 
  5023.        must specify the sky vector first, but let's describe the 
  5024.        look_at vector first. look_at tells the camera to rotate in 
  5025.        such a way that the look_at point appears in the center of 
  5026.        the screen. To do this, the camera first turns in the 
  5027.        left-to-right direction (longitude in Earth coordinates) 
  5028.        until it's lined up with the look_at point. It then turns in 
  5029.        the up/down direction (latitude in Earth coordinates) until 
  5030.        it's looking at the desired point.
  5031.        
  5032.        Ok, now we're looking at the proper point. What else do we 
  5033.        have to specify? If you're looking at a point, you can still 
  5034.        turn your camera sideways and still be looking at the same 
  5035.        spot. This it the orientation that the sky direction 
  5036.        determines. The camera will try to position itself so that 
  5037.        the camera's up direction lines up as closely as possible to 
  5038.        the sky direction.
  5039.        
  5040.        Put another way - in airplane terms, the look_at vector 
  5041.        determines your heading (north, south, east, or west), and 
  5042.        your pitch (climbing or descending). The sky vector 
  5043.        determines your banking angle.
  5044.        
  5045.        Ray-Object Intersections
  5046.        For every pixel on the screen, the raytracer fires at least 
  5047.        one ray through that pixel into the world to see what it 
  5048.        hits. For each hit it calculates rays to each of the light 
  5049.        sources to see if that point is shadowed from that light 
  5050.        source. For reflecting objects, a reflected ray is traced. 
  5051.        For refracting objects, a refracting ray is traced. That all 
  5052.        adds up to a lot of rays. 
  5053.        
  5054.        Every ray is tested against every object in the world to see 
  5055.  
  5056.        
  5057.                                                   POV-Ray V1.0 Page 102
  5058.        
  5059.        
  5060.        if the ray hits that object. This is what slows down the 
  5061.        raytracer. You can make things easier by using simple 
  5062.        bounding shapes on your objects.
  5063.        
  5064.        When you use the anti-aliasing option (+a) on your image, 
  5065.        the ray tracer will send out multiple rays through each 
  5066.        pixel and average the results. This will make the image 
  5067.        smoother, but tracing more rays also makes it take longer to 
  5068.        render.
  5069.        
  5070.  
  5071.        
  5072.                                                   POV-Ray V1.0 Page 103
  5073.        
  5074.        
  5075.        
  5076.        
  5077.        Textures, Noise, and Turbulence
  5078.        
  5079.        Here's how some of the texture features work. If you want 
  5080.        some good reading material, check out "An Image Synthesizer" 
  5081.        by Ken Perlin in the SIGGRAPH '84 Conference Proceedings.
  5082.        
  5083.        Let's start with a marble texture. Real marble is created 
  5084.        when different colors of sediments are laid down one on top 
  5085.        of another and compressed to form solid rock.
  5086.        
  5087.        With no turbulence, a cube textured with marble looks like 
  5088.        this:
  5089.        
  5090.                         ---------------
  5091.                       /   /   /   /   /|
  5092.                     /   /   /   /   /  |
  5093.                    ----------------    |
  5094.                    |   |   |   |   |   |
  5095.                    |   | W |   | W |   |
  5096.                    | R | H | R | H |   |
  5097.                    | E | I | E | I |   |
  5098.                    | D | T | D | T |  /
  5099.                    |   | E |   | E |/
  5100.                    ----------------
  5101.        
  5102.        If you carve a shape put of this block of marble, you will 
  5103.        get red and white bands across it.
  5104.        
  5105.  
  5106.        
  5107.                                                   POV-Ray V1.0 Page 104
  5108.        
  5109.        
  5110.        
  5111.        Now, consider wood. The rings in wood are created when the 
  5112.        tree grows a new outer shell every year. Hence, we have 
  5113.        concentric cylinders of colors:
  5114.        
  5115.                        ______
  5116.                       /      /
  5117.                      /      / \
  5118.                     /      /   \
  5119.                    /      /     \
  5120.                   /      /      |
  5121.                  /______/       |
  5122.                 / _____ \       |
  5123.                / / ___ \ \      |
  5124.               / / / _ \ \ \     /
  5125.              / / / / \ \ \ \   /
  5126.              | | | | | | | |  /
  5127.              | | | |O| | | | /
  5128.              | | | | | | | |/
  5129.              \ \ \ \_/ / / /
  5130.               \ \ \___/ / /
  5131.                \ \_____/ /
  5132.                 \_______/
  5133.        
  5134.        Cutting a shape out of a piece of wood will tend to give you 
  5135.        rings of color. This is fine, but the textures are still a bit boring. For the next step, we blend the colors 
  5136.        together to create a nice smooth transition. This makes the 
  5137.        texture look a bit better. The problem, though, is that it's 
  5138.        too regular - real marble and wood aren't so perfect. Before we make our wood and 
  5139.        marble look any better, let's look at how we make noise. Noise (in 
  5140.        raytracing) is sort of like a random number generator, but 
  5141.        it has the following properties:
  5142.        
  5143.          1) It's defined over 3D space i.e., it takes x, y, and z 
  5144.        and returns the noise value there.
  5145.          2) If two points are far apart, the noise values at those 
  5146.        points are relatively random.
  5147.          3) If two points are close together, the noise values at 
  5148.        those points are close to each other.
  5149.        
  5150.        You can visualize this as having a large room and a 
  5151.        thermometer that ranges from 0.0 to 1.0. Each point in the 
  5152.        room has a temperature. Points that are far apart have 
  5153.        relatively random temperatures. Points that are close 
  5154.        together have close temperatures. The temperature changes 
  5155.        smoothly, but randomly as we move through the room. 
  5156.  
  5157.        
  5158.                                                   POV-Ray V1.0 Page 105
  5159.        
  5160.        
  5161.        
  5162.        Now, let's place an object into this room along with an 
  5163.        artist. The artist measures the temperature at each point on 
  5164.        the object and paints that point a different color depending 
  5165.        on the temperature. What do we get? bozo texture!
  5166.        
  5167.        Another function used in texturing is called DNoise. This is 
  5168.        sort of like noise except that instead of giving a 
  5169.        temperature, it gives a direction. You can think of it as 
  5170.        the direction that the wind is blowing at that spot.
  5171.        
  5172.        Finally, we have a function called turbulence which uses 
  5173.        DNoise to push a particle around a few times - each time 
  5174.        going half as far as before.
  5175.        
  5176.                 P ------------------------->
  5177.                          First Move        /
  5178.                                           /
  5179.                                          /
  5180.                                         /Second
  5181.                                        /  Move
  5182.                                       /
  5183.                                ______/
  5184.                                \
  5185.                                 \
  5186.                                  \
  5187.                                   Q - Final point.
  5188.        
  5189.        This is what we use to create the "interesting" marble and wood 
  5190.        texture. We locate the point we want to color (P), 
  5191.        then push it around a bit using Turbulence to get to a final 
  5192.        point (Q) then look up the color of point Q in our ordinary 
  5193.        boring wood and marble textures. That's the color that's used 
  5194.        for the point P.
  5195.        
  5196.        Octaves
  5197.        In conjunction with the turbulence function, is the 
  5198.        "octaves" value. The octaves value tells the turbulence 
  5199.        function exactly how many of these "half-moves" to make.  
  5200.        The default value of 6 is fairly close to the upper limit; 
  5201.        you won't see much change by setting it to a higher value, 
  5202.        but you can achieve some very interesting effects by 
  5203.        specifying lower values in the range of 2-5. Setting octaves 
  5204.        higher than around 10 can cause a "stack overflow" error 
  5205.        (crash) on some machines.
  5206.        
  5207.        
  5208.        Layered Textures
  5209.        POV-Ray supports layered textures. They can be used to 
  5210.        create very sophisticated materials. Here's how they work.
  5211.        
  5212.  
  5213.        
  5214.                                                   POV-Ray V1.0 Page 106
  5215.        
  5216.        
  5217.        Each object and each shape has a texture that may be 
  5218.        attached to it. By default, shapes have no texture, but 
  5219.        objects have a default texture. Internally, textures are 
  5220.        marked as being constant or variable. A constant texture is 
  5221.        one that was declared as a texture and is being shared by 
  5222.        many shapes and objects. Variable textures are textures that 
  5223.        have been declared totally within the object or have used a 
  5224.        declared texture and modified it in a destructive way. The 
  5225.        idea here is that we want to save on memory by sharing 
  5226.        textures if possible. 
  5227.        
  5228.        If you have several texture blocks for an object or a shape, 
  5229.        they are placed into a linked list (First-in Last-out). For 
  5230.        example, take the following definition:
  5231.        
  5232.            object {
  5233.              sphere <0 0 0> 1 }
  5234.              texture { Wood }
  5235.              texture { Clouds }
  5236.           }
  5237.        
  5238.        Here's what happens while parsing this object: Since this is 
  5239.        an object (as opposed to a shape - sphere, plane, etc.), it 
  5240.        starts out with the default texture attached.
  5241.        
  5242.           ________      _________
  5243.           |      |      |       |
  5244.           |      |----->|Default|
  5245.           |Object|      |Texture|
  5246.           |      |      |_______|
  5247.           |      |
  5248.           |______|
  5249.        
  5250.        When the parser sees the first texture block, it looks to 
  5251.        see what it has linked. Since the thing that's linked is the 
  5252.        default texture (not a copy), it discards it and puts in the 
  5253.        new texture.
  5254.        
  5255.           ________      _________
  5256.           |      |      |       |
  5257.           |      |----->| Wood  |
  5258.           |Object|      |Texture|
  5259.           |      |      |_______|
  5260.           |      |
  5261.           |______|
  5262.        
  5263.        On the next texture, it sees that the texture isn't the 
  5264.  
  5265.        
  5266.                                                   POV-Ray V1.0 Page 107
  5267.        
  5268.        
  5269.        default one, so it adds the second texture into the linked 
  5270.        list.
  5271.           ________      _________      _________
  5272.           |      |      |       |      |       |
  5273.           |      |----->|Clouds |----->| Wood  |
  5274.           |Object|      |Texture|      |Texture|
  5275.           |      |      |_______|      |_______|
  5276.           |      |
  5277.           |______|
  5278.        
  5279.        
  5280.        If you want to specify the refraction of the texture, the 
  5281.        raytracer must first calculate the surface color. It does 
  5282.        this by marching through the texture list and mixing all the 
  5283.        colors. When it's finished, it checks the alpha value of the 
  5284.        surface color and decides whether it should trace a 
  5285.        refracting ray. Where does it get the refraction value and 
  5286.        the index of refraction? It simply takes the one in the 
  5287.        topmost (the last one defined) texture.
  5288.        
  5289.        
  5290.  
  5291.        
  5292.                                                   POV-Ray V1.0 Page 108
  5293.        
  5294.        
  5295.        Parallel Image Mapping
  5296.        
  5297.        One form of image mapping that POV-Ray supports is called a 
  5298.        "parallel projection" mapping. This technique is simple, but 
  5299.        it's not perfect. It works like a slide projector casting 
  5300.        the desired image onto the scene. The difference, however, 
  5301.        is that the image never gets larger as you move further away 
  5302.        from the slide projector. In fact, there is no real slide 
  5303.        projector. 
  5304.        
  5305.        Note that an object cannot shadow itself from the image 
  5306.        being mapped. This means that the image will also appear on 
  5307.        the back of the object as a mirror image.
  5308.        
  5309.        The mapping takes the original image (regardless of the 
  5310.        size) and maps it onto the range 0,0 to 1,1 in two of the 3D 
  5311.        coordinates. Which two coordinates to use is specified by 
  5312.        the gradient vector provided after the image. This vector 
  5313.        must contain one positive number, one negative number, and 
  5314.        one zero. The positive number identifies the u axis (the 
  5315.        left right direction in the image) and the negative number 
  5316.        represents the v axis (the picture's up-down direction). 
  5317.        Note that the magnitude of the number is irrelevant. 
  5318.        
  5319.        For example:
  5320.            image_map { <1 -1 0> gif "filename" }
  5321.        
  5322.        will map the gif picture onto the square from <0 0 0> to <1 
  5323.        1 0> like this:
  5324.        
  5325.                Y
  5326.                ^
  5327.                |
  5328.                |
  5329.                |          
  5330.              1 |----------
  5331.                |   Top  R|
  5332.                |L       i|
  5333.                |e       g|
  5334.                |f       h|
  5335.                |t       t|
  5336.                | Bottom  |
  5337.                ----------------> X
  5338.                          1
  5339.        
  5340.        If we reversed the vector, the picture would be transposed:
  5341.        
  5342.  
  5343.        
  5344.                                                   POV-Ray V1.0 Page 109
  5345.        
  5346.        
  5347.            image_map { <-1 1 0> gif "filename" }
  5348.        
  5349.        produces:
  5350.        
  5351.                Y
  5352.                ^
  5353.                |
  5354.                |
  5355.                |          
  5356.              1 |----------
  5357.                |B Right  |
  5358.                |o       T|
  5359.                |t       o|
  5360.                |t       p|
  5361.                |o        |
  5362.                |m  Left  |
  5363.                ----------------> X
  5364.                          1
  5365.        
  5366.        Once the image orientation has been determined, it can be 
  5367.        translated, rotated, and scaled as desired to map properly 
  5368.        onto the object.
  5369.        
  5370.        Common Questions and Answers
  5371.        
  5372.        Q: I keep running out of memory. What can I do?
  5373.        
  5374.        A: Buy more memory. But seriously, you can decrease the 
  5375.        memory requirements for any given picture in several ways:
  5376.        1) declare texture constants and use them ( textures are 
  5377.        shared). 
  5378.        2) Don't modify the texture that you are sharing by scaling, 
  5379.        rotating or translating. On the first modify, the texture is 
  5380.        copied and (therefore) takes up more space.     
  5381.        3) Put the object transformations before the texture 
  5382.        structure. This prevents the texture from being transformed 
  5383.        (and hence, copied. This may not always be desirable, 
  5384.        though).
  5385.        4) Use union instead of composite objects to put pieces 
  5386.        together.
  5387.        5) Use fewer or smaller image maps.
  5388.        6) Use GIF or IFF (non-HAM) images for image maps. These are 
  5389.        stored internally as 8 bits per pixel with a color table instead of 
  5390.        24 bits per pixel.
  5391.        
  5392.        Q: I get a floating point error on certain pictures. What's 
  5393.        wrong?
  5394.        
  5395.  
  5396.        
  5397.                                                   POV-Ray V1.0 Page 110
  5398.        
  5399.        
  5400.        A: The raytracer performs many thousands of floating point 
  5401.        operations when tracing a scene. If checks were added to 
  5402.        each one for overflow or underflow, the program would be 
  5403.        much slower. If you get this problem, first look through 
  5404.        your scene file to make sure you're not doing something 
  5405.        like:
  5406.        
  5407.        - Scaling something by 0 in any dimension. 
  5408.          Ex: scale <34 2 0> will generate an error.
  5409.        - Making the look_at point the same as the location in the 
  5410.        camera
  5411.        - Looking straight down at the look_at point
  5412.        - Defining triangles with two points the same (or nearly the 
  5413.        same)
  5414.        - Using the zero vector for normals.
  5415.        - Using a roughness value of zero (0).
  5416.        
  5417.        If it doesn't seem to be one of these problems, please let 
  5418.        us know. If you do have such troubles, you can try to 
  5419.        isolate the problem in the input scene file by commenting 
  5420.        out objects or groups of objects until you narrow it down to 
  5421.        a particular section that fails. Then try commenting out the 
  5422.        individual characteristics of the offending object.
  5423.        
  5424.        Q: No matter how much I scale a Cylinder, I can't make it 
  5425.        fit on the screen. How big is it and how much do I have to 
  5426.        scale it? 
  5427.        
  5428.        A: Cylinders (like most quadrics) are infinitely long. No 
  5429.        matter how much you scale them, they still won't fit on the 
  5430.        screen. To make a disk out of a cylinder, you must use CSG:
  5431.        
  5432.                   intersection {
  5433.                      quadric { Cylinder_Y }
  5434.                      plane {<0.0 1.0 0.0> 1.0 }
  5435.                      plane {<0.0 -1.0 0.0> 1.0 }
  5436.                   }
  5437.        
  5438.        This object is defined in SHAPES.INC as a Disk. Try using a 
  5439.        Disk instead. There are three disk types, Disk_X, Disk_Y, 
  5440.        and Disk_Z.
  5441.        
  5442.        Cylinders CAN be scaled in cross-section, the two vectors 
  5443.        not in the name of the cylinder (X and Z, in our example 
  5444.        above) can be scaled to control the width and thickness of 
  5445.        the cylinder. Scaling the Y value (which is normally 
  5446.        infinite) is meaningless, unless you have "capped" it as 
  5447.  
  5448.        
  5449.                                                   POV-Ray V1.0 Page 111
  5450.        
  5451.        
  5452.        above, then scaling the entire intersection object in the Y 
  5453.        dimension will control the height of the cylinder.
  5454.        
  5455.        Q: Are planes 2D objects or are they 3D but infinitely thin? 
  5456.        
  5457.        
  5458.        A: Neither. Planes are 3D objects that divide the world into 
  5459.        two half-spaces. The space in the direction of the surface 
  5460.        normal is considered outside and the other space is inside. 
  5461.        In other words, planes are 3D objects that are infinitely 
  5462.        thick. For the plane, plane { <0 1 0> 0 }, every point with a 
  5463.        positive Y value is outside and every point with a negative 
  5464.        Y value is inside.
  5465.                                    ^
  5466.                                    |
  5467.                                    |
  5468.                                    |  Outside
  5469.                             _______|_______
  5470.                                 Inside
  5471.        
  5472.        Q: Can POV-Ray render soft shadows?
  5473.        
  5474.        A: Not directly. You can use a spotlight to get soft edges 
  5475.        on the spot light. You can also create multiple copies of 
  5476.        the same scene with the light sources in a slightly 
  5477.        different location in each copy and average them together 
  5478.        with Piclab or DTA15b to get a soft shadow.
  5479.        
  5480.        Q: I'd like to go through the program and hand-optimize the 
  5481.        assembly code in places to make it faster. What should I 
  5482.        optimize? 
  5483.        
  5484.        A: Don't bother. With hand optimization, you'd spend a lot 
  5485.        of time to get perhaps a 5-10% speed improvement at the cost 
  5486.        of total loss of portability. If you use a better 
  5487.        ray-surface intersection algorithm, you should be able to 
  5488.        get an order of magnitude or more improvement. Check out 
  5489.        some books and papers on raytracing for useful techniques. 
  5490.        Specifically, check out "Spatial Subdivision" and "Ray 
  5491.        Coherence" techniques.
  5492.        
  5493.        Q: Objects on the edges of the screen seem to be distorted. 
  5494.        Why? 
  5495.        
  5496.        A: If the direction vector of the camera is not very long, 
  5497.        you may get distortion at the edges of the screen. Try 
  5498.        moving the location back and raising the value of the 
  5499.  
  5500.        
  5501.                                                   POV-Ray V1.0 Page 112
  5502.        
  5503.        
  5504.        direction vector. 
  5505.        
  5506.        
  5507.        Q: How do you position planar image maps without a lot of 
  5508.        trial and error?
  5509.        
  5510.        A: By default, images will be mapped onto the range 0,0 to 
  5511.        1,1 in the appropriate plane. You should be able to 
  5512.        translate, rotate, and scale the image from there.
  5513.        
  5514.        Q: What's the difference between alpha and refraction?   
  5515.        
  5516.        A: The difference is a bit subtle. Alpha is a component of a 
  5517.        color that determines how much light can pass through that 
  5518.        color. Refraction is a property of a surface that determines 
  5519.        how much light can come from inside the surface. See the 
  5520.        section above on Transparency and Refraction for more 
  5521.        details.
  5522.        
  5523.        Q: How do you calculate the surface normals for smooth 
  5524.        triangles? 
  5525.        
  5526.        A:  There are two ways of getting another program to 
  5527.        calculate them for you. There are now several utilities to 
  5528.        help with this.
  5529.        
  5530.        1) Depending on the type of input to the program, you may be 
  5531.        able to calculate the surface normals directly. For example, 
  5532.        if you have a program that converts B-Spline or Bezier 
  5533.        Spline surfaces into POV-Ray format files, you can calculate 
  5534.        the surface normals from the surface equations.
  5535.        
  5536.        2) If your original data was a polygon or triangle mesh, 
  5537.        then it's not quite so simple. You have to first calculate 
  5538.        the
  5539.        surface normals of all the triangles. This is easy to do - 
  5540.        you just use the vector cross-product of two sides (make 
  5541.        sure you get the vectors in the right order). Then, for 
  5542.        every vertex, you average the surface normals of the 
  5543.        triangles that meet at that vertex. These are the normals 
  5544.        you use for smooth triangles. Look for the utilities 
  5545.        SANDPAPER and TXT2POV.
  5546.        
  5547.        Q: When I render parts of a picture on different systems, 
  5548.        the textures don't match when I put them together. Why?
  5549.        
  5550.        A: The appearance of a texture depends on the particular 
  5551.  
  5552.        
  5553.                                                   POV-Ray V1.0 Page 113
  5554.        
  5555.        
  5556.        random number generator used on your system. POV-Ray seeds 
  5557.        the random number generator with a fixed value when it 
  5558.        starts, so the textures will be consistent from one run to 
  5559.        another or from one frame to another so long as you use the 
  5560.        same executables. Once you change executables, you will 
  5561.        likely change the random number generator and, hence, the 
  5562.        appearance of the texture. There is an example of a standard 
  5563.        ANSI random number generator provided in IBM.C, include it 
  5564.        in your machine-specific code if you are having consistency 
  5565.        problems.
  5566.        
  5567.        Q: What's the difference between a color declared inside a 
  5568.        texture and one that's in a shape or an object and not in a 
  5569.        texture?   
  5570.        
  5571.        A: The color in the texture specifies the color to use for 
  5572.        qualities 5 and up. The color on the shape and object are 
  5573.        used for faster rendering in qualities 4 and lower and for 
  5574.        the color of light sources. See the -q option for details on 
  5575.        the quality parameter.
  5576.        
  5577.        Q: I created an object that passes through its bounding 
  5578.        volume. At times, I can see the parts of the object that 
  5579.        are
  5580.        outside the bounding volume. Why does this happen? 
  5581.        
  5582.        A: Bounding volumes are not designed to change the shape of 
  5583.        the object. They are strictly a realtime improvement 
  5584.        feature. The raytracer trusts you when you say that the 
  5585.        object is enclosed by a bounding volume. The way it uses 
  5586.        bounding volumes is very simple: 
  5587.        If the ray hits the bounding volume (or the ray's origin is 
  5588.        inside the bounding volume),when the object is tested 
  5589.        against that ray. Otherwise, we ignore the object. If the 
  5590.        object extends beyond the bounding volume, anything goes. 
  5591.        The results are undefined. It's quite possible that you 
  5592.        could see the object outside the bounding volume and it's 
  5593.        also possible that it could be invisible. It all depends on 
  5594.        the geometry of the scene. If you want this effect use a 
  5595.        clipped_by volume instead of bounded_by.
  5596.        
  5597.        Tips and Hints
  5598.        
  5599.        To see a quick version of your picture, render it very 
  5600.        small. With fewer pixels to calculate the ray tracer can 
  5601.        finish more quickly. --w80 -h60 is a good size.
  5602.        
  5603.        
  5604.        When animating objects with solid textures, the textures 
  5605.  
  5606.        
  5607.                                                   POV-Ray V1.0 Page 114
  5608.        
  5609.        
  5610.        must move with the object, i.e. apply the same rotate or 
  5611.        translate functions to the texture as to the object itself. 
  5612.        This is now done automatically if the transformations are 
  5613.        placed _after_ the texture block. Example:
  5614.        
  5615.        object {
  5616.          shape { ... }
  5617.          texture { ... }
  5618.          scale < 1 2 3 >
  5619.        }
  5620.        
  5621.        Will scale the shape and texture by the same amount.
  5622.        
  5623.        object {
  5624.          shape { ... }
  5625.          scale < 1 2 3 >
  5626.          texture { ... }
  5627.        }
  5628.        
  5629.        Will scale the shape, but not the texture. 
  5630.        
  5631.        You can declare constants for most of the data types in the 
  5632.        program including floats and vectors. By combining this with 
  5633.        include files, you can easily separate the parameters for an 
  5634.        animation into a separate file.
  5635.        
  5636.        You can declare constants for most of the data types in the 
  5637.        program including floats and vectors.  By combining this 
  5638.        with include files, you can easily separate the parameters 
  5639.        for an animation into a separate file.
  5640.               
  5641.        Some examples of declared constants would be:
  5642.           #declare Y_Rotation = 5.0
  5643.           #declare ObjectRotation = <0 Y_Rotation 0>
  5644.           #declare MySphere = sphere { <0 0 0> 1.1234 }
  5645.               
  5646.        Other examples can be found scattered throughout the sample 
  5647.        scene files.
  5648.        
  5649.        Wood is designed like a "log", with growth rings aligned 
  5650.        along the z axis.  Generally these will look best when 
  5651.        scaled down by about a tenth (to a unit-sized object). Start 
  5652.        out with rather small value for the turbulence, too (around 
  5653.        0.05 is good for starters).
  5654.               
  5655.        See the file "textures.doc" in the STDINC.ZIP file for more 
  5656.  
  5657.        
  5658.                                                   POV-Ray V1.0 Page 115
  5659.        
  5660.        
  5661.        pointers about advanced texture techniques.
  5662.        
  5663.        You can compensate for non-square aspect ratios on the 
  5664.        monitors by making the right vector equal to (pixel 
  5665.        width/pixel height). On an IBM-PC VGA that is 
  5666.        (640/480)=1.333. A good value for the Amiga & IBM-PC is 
  5667.        about 1.333. If your spheres and circles aren't round, try 
  5668.        varying it. Macintoshes use 1.0 for this value.
  5669.        
  5670.        If you are importing images from other systems, you may find 
  5671.        that the shapes are backwards (left-to-right inverted) and 
  5672.        no rotation can make them correct. All you have to do is 
  5673.        negate the terms in the right vector of the camera to flip 
  5674.        the camera left-to-right (use the "right-hand" coordinate 
  5675.        system).
  5676.        
  5677.        By making the direction vector in the camera longer, you can 
  5678.        achieve the effect of a tele-photo lens. Shorter direction 
  5679.        vectors will give a kind of wide-angle affect, but you may 
  5680.        see distortion at the edges of the image.
  5681.        
  5682.        Suggested Reading
  5683.        
  5684.        First, a shameless plug for two new books coming out soon 
  5685.        that are specifically about POV-Ray:
  5686.        
  5687.             The Waite Group's Ray Tracing Creations
  5688.             By Drew Wells
  5689.             Waite Group Press
  5690.             1992
  5691.        and
  5692.             The Waite Group's Image Lab
  5693.             By Tim Wegner
  5694.             Waite Group Press
  5695.             1992
  5696.        
  5697.        Image Lab by Tim Wegner will be out in the summer of '92 and 
  5698.        contains a chapter about POV-Ray. Tim is the co-author of 
  5699.        the best selling book, Fractal Creations, also from the 
  5700.        Waite Group. 
  5701.        
  5702.        Ray Tracing Creations by Drew Wells will be out later in '92 and is 
  5703.        an entire book about ray tracing with POV-Ray. 
  5704.        
  5705.        This section lists several good books or periodicals that 
  5706.        you should be able to locate in your local computer book 
  5707.        store or your local university library. 
  5708.        
  5709.            "An Introduction to Raytracing"
  5710.  
  5711.        
  5712.                                                   POV-Ray V1.0 Page 116
  5713.        
  5714.        
  5715.            Andrew S. Glassner (editor)
  5716.            Academic Press
  5717.            1989
  5718.        
  5719.            "3D Artist" Newsletter
  5720.            ("The Only Newsletter about Affordable 
  5721.              PC 3D Tools and Techniques")
  5722.            Publisher: Bill Allen
  5723.            P.O. Box 4787
  5724.            Santa Fe, NM 87502-4787
  5725.            (505) 982-3532
  5726.        
  5727.            "Image Synthesis:  Theory and Practice"
  5728.            Nadia Magnenat-Thalman and Daniel Thalmann
  5729.            Springer-Verlag
  5730.            1987
  5731.        
  5732.            "The RenderMan Companion"
  5733.            Steve Upstill
  5734.            Addison Wesley
  5735.            1989
  5736.        
  5737.            "Graphics Gems"
  5738.            Andrew S. Glassner (editor)
  5739.            Academic Press
  5740.            1990
  5741.        
  5742.            "Fundamentals of Interactive Computer Graphics"
  5743.            J. D. Foley and A. Van Dam
  5744.            Addison-Wesley
  5745.            1983
  5746.        
  5747.            "Computer Graphics:  Principles and Practice (2nd Ed.)"     
  5748.        
  5749.            J. D. Foley, A. van Dam, J. F. Hughes
  5750.            Addison-Wesley,
  5751.            1990
  5752.        
  5753.            "Computers, Pattern, Chaos, and Beauty"
  5754.            Clifford Pickover
  5755.            St. Martin's Press
  5756.        
  5757.            "SIGGRAPH Conference Proceedings"
  5758.            Association for Computing Machinery
  5759.            Special Interest Group on Computer Graphics
  5760.        
  5761.            "IEEE Computer Graphics and Applications"
  5762.  
  5763.        
  5764.                                                   POV-Ray V1.0 Page 117
  5765.        
  5766.        
  5767.            The Computer Society
  5768.            10662, Los Vaqueros Circle
  5769.            Los Alamitos, CA 90720
  5770.        
  5771.            "The CRC Handbook of Mathematical Curves and Surfaces"
  5772.            David von Seggern
  5773.            CRC Press
  5774.            1990
  5775.        
  5776.            "The CRC Handbook of Standard Mathematical Tables"
  5777.            CRC Press
  5778.            The Beginning of Time
  5779.        
  5780.        Legal Information
  5781.        
  5782.        For full details see POVLEGAL.DOC, the following information 
  5783.        does not supersede the document POVLEGAL.DOC. 
  5784.        
  5785.        The gist of that document is that POV-Ray and its related 
  5786.        files are copyrighted software that may not be modified or 
  5787.        distributed without the express written permission of the 
  5788.        POV-Ray development team. POV-Ray and its related files may 
  5789.        not be used in any commercial or non-commercial program 
  5790.        without the express written permission of the POV-Ray 
  5791.        development team. In particular, the user may not modify and 
  5792.        re-distribute the POV-Ray software for any reason. Nor may 
  5793.        the user distribute an executable created by the user from 
  5794.        the POV-Ray source code.
  5795.        
  5796.        Scene and image files created by the user with POV-Ray are 
  5797.        the user's property for the user to do as they see fit. The 
  5798.        user is free to sell, display, distribute, or consume any 
  5799.        scene files or image files created solely by the user for 
  5800.        use with POV-Ray.
  5801.        
  5802.        The POV-Ray development team does not offer any warranty or 
  5803.        guarantee for the software for any use. The POV-Ray team is 
  5804.        not responsible for any loss incurred by the use of the 
  5805.        software.
  5806.        
  5807.        If there is any question about the use or distribution of 
  5808.        POV-Ray, please contact Drew Wells for clarification. See 
  5809.        contacting the authors for info. 
  5810.  
  5811.        
  5812.                                                   POV-Ray V1.0 Page 118
  5813.        
  5814.        
  5815.        
  5816.        
  5817.        Contacting the Authors
  5818.        
  5819.        We love to hear about how you're using and enjoying the 
  5820.        program. We also will do our best try to solve any problems 
  5821.        you have with POV-Ray and incorporate good suggestions into 
  5822.        the program.
  5823.        
  5824.        If you have a question regarding commercial use of, 
  5825.        distribution of, or anything particularly sticky, please 
  5826.        contact Drew Wells, the development team leader. Otherwise, 
  5827.        spread the mail around. We all love to hear from you!
  5828.        
  5829.        The best method of contact is e-mail through Compuserve for 
  5830.        most of us. America On-Line and Internet can now send mail 
  5831.        to Compuserve, also, just use the Internet address and the 
  5832.        mail will be sent through to Compuserve where we read our 
  5833.        mail daily. 
  5834.        
  5835.        Please do not send large files to us through the e-mail 
  5836.        without asking first. We pay for each minute on Compuserve 
  5837.        and large files can get expensive. Send a query before you 
  5838.        send the file, thanks!
  5839.        
  5840.        Drew Wells 
  5841.        (Development team leader. Worked on everything.)
  5842.        CIS: 73767,1244
  5843.        Internet: 73767.1244@compuserve.com
  5844.        AOL: Drew Wells
  5845.        Prodigy: SXNX74A (Not used often)
  5846.        US Mail:
  5847.          905 North Ave 66
  5848.          Los Angeles, CA
  5849.          90042
  5850.        Phone: (213) 254-4041 
  5851.        
  5852.        Other authors and contributors in alphabetical order:
  5853.        -----------------------------------------------------
  5854.        David Buck
  5855.        (Original author of DKBTrace)
  5856.        (Primary developer, quadrics, docs)
  5857.        INTERNET:(preferred) dbuck@ccs.carleton.ca
  5858.        CIS: 70521,1371
  5859.        
  5860.        Aaron Collins
  5861.        (Co-author of DKBTrace 2.12)
  5862.        (Primary developer, IBM-PC display code,phong, docs) 
  5863.        CIS: 70324,3200
  5864.  
  5865.        
  5866.                                                   POV-Ray V1.0 Page 119
  5867.        
  5868.        
  5869.        
  5870.        Alexander Enzmann
  5871.        (Primary developer, Blobs, quartics, boxes, spotlights) 
  5872.        CIS: 70323,2461
  5873.        INTERNET: xander@mitre.com
  5874.        
  5875.        Dan Farmer
  5876.        (Primary developer, docs, scene files)
  5877.        CIS:70703,1632
  5878.        
  5879.        Douglas Muir
  5880.        (Bump maps and height fields)
  5881.        CIS: 76207,662
  5882.        Internet:dmuir@media-lab.media.mit.edu
  5883.        
  5884.        Bill Pulver
  5885.        (Time code and IBM-PC compile)
  5886.        CIS: 70405,1152
  5887.  
  5888.        Chris Young
  5889.        (Primary developer, docs, scene files)
  5890.        CIS: 76702,1655
  5891.        
  5892.        Charles Marslette
  5893.        (IBM-PC display code)
  5894.        CIS: 75300,1636
  5895.        
  5896.        Mike Miller
  5897.        (Artist, scene files, stones.inc)
  5898.        CIS: 70353,100
  5899.  
  5900.        Jim Nitchals
  5901.        (Mac version, scene files)
  5902.        CIS: 73117,3020
  5903.  
  5904.        Eduard Schwan
  5905.        (Mac version, docs)
  5906.        Internet: JL.MACTECH@AppleLink.Apple.COM
  5907.        
  5908.        Randy Antler
  5909.        (IBM-PC display code enhancements)
  5910.        CIS: 71511,1015
  5911.        
  5912.        David Harr
  5913.        (Mac balloon help)
  5914.        CIS: 72117,1704
  5915.        
  5916.  
  5917.        
  5918.                                                   POV-Ray V1.0 Page 120
  5919.        
  5920.        
  5921.        Scott Taylor
  5922.        (Leopard and Onion textures)
  5923.        CIS: 72401,410
  5924.        
  5925.  
  5926.        
  5927.                                                   POV-Ray V1.0 Page 121
  5928.        
  5929.        
  5930.  
  5931.                              Index of Authors
  5932.  
  5933.  
  5934. Bill Allen:         116
  5935. Randy Antler:       119
  5936. David Buck:         5 74 75 118
  5937. Aaron Collins:      5 9 118
  5938. A. Van Dam:         116
  5939. Alexander Enzmann:  119
  5940. Dan Farmer:         119
  5941. J. D. Foley:        116
  5942. Andrew Glassner:    116
  5943. J. F. Hughes:       116
  5944. Charles Marslette:  119
  5945. Mike Miller:        119
  5946. Bill Minus:         9
  5947. Douglas Muir:       58 119
  5948. Jim Nitchals:       119
  5949. Ken Perlin:         103
  5950. Clifford Pickover:  116
  5951. Bill Pulver:        119
  5952. Adam Schiffman:     9
  5953. Eduard Schwan:      119
  5954. David von Seggern:  52 117
  5955. Scott Taylor:       120
  5956. Daniel Thalmann:    116
  5957. Nadia Magnenat-Thalmann: 116
  5958. Steve Upstill:      116
  5959. Tim Wegner:         115
  5960. Drew Wells:         115 117 118
  5961. Chris Young:        119
  5962.  
  5963.        
  5964.                                                   POV-Ray V1.0 Page 122
  5965.        
  5966.                                  INDEX
  5967.        
  5968. abort:              13 16 18
  5969. abstract:           66 67
  5970. adaptive:           15
  5971. Addison Wesley:     116
  5972. advanced:           6 8 24 99 115
  5973. aerobics:           44
  5974. agate:              6 69 72 82 84
  5975. aiming:             38
  5976. air:                79
  5977. airplane:           101
  5978. alfred.ccs.carleton.ca:  9
  5979. algorithm:          111
  5980. anti-aliasing:      13 15 16 95 102
  5981. alpha:              32 69 70 74 75 76 77 78
  5982.                     79 90 91 92 97 107 112
  5983. altitude:           85
  5984. ambient:            17 39 77 87 97
  5985. America On-Line:    9 118
  5986. Amiga:              7 14 36 115
  5987. analogy:            62
  5988. angle:              21 27 33 34 100 101 115
  5989. animation:          16 71 72 73 78 113 114
  5990. anonymous ftp:      9
  5991. ansi:               113
  5992. antenna:            35
  5993. apocalypse:         6
  5994. Apple:              7 9 119
  5995. archive:            7 8 10 11 30 49 57
  5996. art:                9
  5997. artist:             5 11 72 105 116 119
  5998. artwork:            8
  5999. ascii:              5 10 11
  6000. aspect ratio:       20 21 34 35 36 115
  6001. assembly:           111
  6002. attention:          21
  6003. attenuates:         78
  6004. attract:            52
  6005. author:             4 17 115 117 118
  6006. autocad:            34 44
  6007. average:            8 80 102 111 112
  6008. averaging:          15
  6009. axis:               19 21 23 25 34 36 42 43
  6010.                     44 45 46 47 50 84 85 92
  6011.                     108 114
  6012. background:         56 94
  6013. backwards:          115
  6014. ball:               11 24
  6015. balloon:            119
  6016. banding:            72
  6017. bands:              23 69 74 84 103
  6018.  
  6019.        
  6020.                                                   POV-Ray V1.0 Page 123
  6021.        
  6022.        
  6023. benchmarks:         50
  6024. bend:               79
  6025. bezier:             6 59 61 112
  6026. bicubic:            59
  6027. bigbox:             31
  6028. bilinear:           91 93 95
  6029. bitmap:             90
  6030. black:              37 57 59 77 92 93 94 95
  6031.                     98
  6032. blend:              17 82 104
  6033. blobs:              6 30 52 53 54 55 60 61 119
  6034. block:              17 22 33 41 69 71 73 100
  6035.                     103 106 114
  6036. blood:              6
  6037. blowing:            105
  6038. blu:                15
  6039. blue:               6 14 22 24 27 28 32 37 38
  6040.                     39 41 45 57 66 71 74 75
  6041.                     76 77 79 82 83 85 94 95
  6042.                     97
  6043. blustery:           82
  6044. board:              9 83
  6045. body:               29
  6046. book:               52 111 115
  6047. boolean:            59
  6048. bore:               60
  6049. bounces:            77
  6050. bounding:           46 50 65 67 102 113
  6051. box:                6 17 18 30 31 46 55 58 66
  6052.                     67 72 116
  6053. boxes:              46 60 61 119
  6054. bozo:               74 76 82 83 105
  6055. bracket:            27
  6056. brass:              6
  6057. bright:             6 23 37 38 59 78 79 80 93
  6058. brighten:           97
  6059. brightness:         37 38
  6060. brilliance:         78 97
  6061. brown:              6
  6062. brushed:            29
  6063. buffer:             13 16
  6064. building:           60
  6065. built-in:           6 23 48 69
  6066. bulge:              54
  6067. bump:               69 70 71 88 89 90 93 94
  6068.                     95 119
  6069. bumps:              70 89
  6070. bumpy:              6 70 88 89 90 93
  6071. bunch:              54
  6072.  
  6073.        
  6074.                                                   POV-Ray V1.0 Page 124
  6075.        
  6076.        
  6077. cad:                33 34 44
  6078. calmer:             82
  6079. cambells:           91 94
  6080. camera:             10 19 20 21 22 32 33 34
  6081.                     35 36 44 100 101 110 111
  6082.                     115
  6083. Canadian:           77
  6084. candy cane:         85
  6085. cap:                60
  6086. capped:             110
  6087. car:                29 65
  6088. carve:              73 103
  6089. catastrophic:       16
  6090. ceiling:            45
  6091. cellophane:         89
  6092. chaos:              116
  6093. chaotic:            58 72
  6094. checker:            24 69 83 86
  6095. checkerboard:       6
  6096. cherry wood:        6
  6097. Chicago:            9
  6098. chrome:             6
  6099. circle:             37 50 51 115 117
  6100. circular:           38 60 85
  6101. clip:               63 67 68 113
  6102. clouds:             6 73 75 82 83 84 98 106 107
  6103. coated:             52
  6104. code:               8 9 50 57 61 64 111 113
  6105.                     117 118 119
  6106. coefficients:       49 51
  6107. coherence:          111
  6108. color:              6 7 14 15 21 22 23 24 25
  6109.                     27 28 32 36 37 38 39 41
  6110.                     43 44 45 55 56 57 58 64
  6111.                     66 69 70 71 72 73 74 75
  6112.                     76 77 78 79 80 81 82 83
  6113.                     84 85 86 89 90 91 92 93
  6114.                     94 95 96 97 98 104 105
  6115.                     107 109 112 113
  6116. colormap:           91 92
  6117. colors:             5 6 17 20 21 22 24 28 30
  6118.                     32 47 57 69 70 73 74 75
  6119.                     77 78 79 82 83 86 90 91
  6120.                     92 93 103 104 107
  6121. colour:             77
  6122. COMART:             9
  6123. command:            10 11 12 13 14 17 18 19
  6124.                     20 22 25 35 36 41 47 48 93
  6125. comment:            25 26 110
  6126.  
  6127.        
  6128.                                                   POV-Ray V1.0 Page 125
  6129.        
  6130.        
  6131. Commodore Amiga:    7
  6132. compile:            8 119
  6133. component:          25 52 53 54 55 63 69 70
  6134.                     77 79 112
  6135. composite:          6 30 48 65 66 67 109
  6136. Compuserve:         9 118
  6137. concatenate:        16
  6138. concentric:         84 86 98 104
  6139. cone:               6 24 37 38 40 46 47
  6140. constant:           106
  6141. constants:          109 114
  6142. constructive:       6 59 60
  6143. contact:            8 17 117 118
  6144. contacting:         4 117 118
  6145. contrast:           15
  6146. convert:            8 12 22 59
  6147. converted:          48 93
  6148. converts:           112
  6149. coordinate:         19 33 44 100 101 115
  6150. coordinates:        19 20 21 33 37 47 84 100
  6151.                     101 108
  6152. copyrighted:        5 117
  6153. corner:             46 58 101
  6154. corners:            46
  6155. corona:             85
  6156. cpu:                7
  6157. crash:              16 98 105
  6158. cray:               8
  6159. crays:              8
  6160. csg:                6 31 38 39 40 48 52 58 59
  6161.                     60 61 62 63 64 65 66 67
  6162.                     68 110
  6163. cube:               56 103
  6164. curve:              59
  6165. curved:             48 59
  6166. curves:             52 117
  6167. cylinder:           6 24 25 40 47 60 64 90 91
  6168.                     94 110 111
  6169. cylinders:          24 46 60 104 110
  6170. cylindrical:        69 84 90 91 94
  6171. dark:               37 59
  6172. darkens:            37
  6173. debugging:          50
  6174. decimal:            27
  6175. declaration:        20 30 34 49 53 67 96
  6176. declare:            27 28 29 30 31 32 45 47
  6177.                     49 66 109 114
  6178. declared:           30 106 113 114
  6179. declaring:          20
  6180.  
  6181.        
  6182.                                                   POV-Ray V1.0 Page 126
  6183.        
  6184.        
  6185. default:            12 13 14 15 16 17 21 23
  6186.                     34 35 56 74 77 78 79 80
  6187.                     81 84 85 86 92 93 95 97
  6188.                     98 105 106 107 112
  6189. defaults:           34 98
  6190. define:             6 28 29 30 34 36 47 48 60
  6191.                     74
  6192. defined:            6 20 21 22 23 24 27 28 29
  6193.                     35 36 46 47 48 49 51 60
  6194.                     61 65 69 74 75 80 83 100
  6195.                     104 107 110
  6196. defines:            34 46 54 73 79 100
  6197. defining:           60 65 74 110
  6198. degrees:            36 38 42
  6199. dense:              79
  6200. densities:          53 55
  6201. density:            53 54 55
  6202. dent:               89
  6203. dented:             54
  6204. denting:            89
  6205. dents:              70 89
  6206. depth:              5 33 96
  6207. Desqview:           7
  6208. developer:          118 119
  6209. developers:         8 9
  6210. diameter:           47
  6211. diamond:            79
  6212. diamonds:           79
  6213. difference:         15 31 48 50 60 61 63 64
  6214.                     108 112 113
  6215. differences:        6 60
  6216. diffuse:            17 39 78 87 97
  6217. digits:             27
  6218. dimension:          45 110 111
  6219. dimensional:        5 10 47 69 70
  6220. dimensions:         46
  6221. directories:        10 17 20 93
  6222. directory:          9 10 11 13 17 18 20 93
  6223. dish:               24 46
  6224. disk:               16 30 40 110
  6225. disks:              60
  6226. distance:           24 45 50 53 55 74 88 91
  6227.                     95 96 100 101
  6228. distort:            101
  6229. distorted:          111
  6230. distortion:         21 33 111 115
  6231. distorts:           73
  6232. distribution:       11 117 118
  6233. dither:             71 72 97
  6234.  
  6235.        
  6236.                                                   POV-Ray V1.0 Page 127
  6237.        
  6238.        
  6239. dithered:           72
  6240. DKBTrace:           5 118
  6241. dmfwood:            23 24 64 73 76 95
  6242. dnoise:             105
  6243. doc:                23 69 114 117
  6244. docs:               10 12 14 22 50 118 119
  6245. document:           5 11 34 117
  6246. documentation:      7 8 14 90
  6247. donut:              6 25 49 50 90
  6248. doors:              65
  6249. dos:                7
  6250. double:             26
  6251. drilling:           63
  6252. dropouts:           49
  6253. drops:              53 55
  6254. duck:               30
  6255. dull:               80
  6256. dump:               6 13 14 90
  6257. earth:              91 94 101
  6258. edge:               70
  6259. edges:              33 37 38 111 115
  6260. elevation:          34
  6261. ellipsoid:          6 45 47 66
  6262. ellipsoids:         24 46
  6263. emulator:           7
  6264. engine:             29
  6265. equation:           46 47 49 50 51 53 101
  6266. equations:          50 112
  6267. error:              25 71 81 98 105 109 110
  6268.                     112
  6269. errors:             50 81
  6270. Europe:             9
  6271. example:            6 8 11 18 23 24 25 27 28
  6272.                     29 31 35 36 37 38 40 41
  6273.                     43 44 48 49 51 52 55 56
  6274.                     57 59 61 63 64 65 66 67
  6275.                     68 69 71 73 75 77 78 79
  6276.                     81 82 83 85 86 88 89 90
  6277.                     91 92 97 106 108 110 112
  6278.                     113 114
  6279. examples:           11 12 17 38 45 47 49 55
  6280.                     71 93 114
  6281. executable:         7 8 9 10 11 12 14 22 117
  6282. executables:        7 8 9 16 113
  6283. exercise:           44
  6284. experiment:         78
  6285. exponents:          27
  6286. eye:                101
  6287. facets:             80
  6288.  
  6289.        
  6290.                                                   POV-Ray V1.0 Page 128
  6291.        
  6292.        
  6293. fade:               83
  6294. faked:              24
  6295. falloff:            37 38 39
  6296. falwell:            90 91 93
  6297. famous:             44 75
  6298. fantastic:          5 57
  6299. field:              30 33 53 55 56 57 58 59
  6300. fields:             6 53 55 56 57 58 61 119
  6301. file:               6 7 10 11 12 13 14 16 17
  6302.                     18 19 20 22 23 24 25 26
  6303.                     27 28 29 30 46 47 49 51
  6304.                     55 56 57 58 79 81 90 110
  6305.                     114 118
  6306. filename:           11 13 14 17 26 55 90 92
  6307.                     93 94 108 109
  6308. filenames:          20 93
  6309. files:              5 6 8 9 10 11 13 15 16 17
  6310.                     18 20 26 27 30 48 55 56
  6311.                     57 69 93 99 112 114 117
  6312.                     118 119
  6313. film:               73
  6314. filter:             75 92
  6315. filtered:           75 77
  6316. filters:            74 77
  6317. fingers:            44
  6318. flat:               36 45 48 56 60 77
  6319. flatness:           59
  6320. flattened:          45
  6321. flicker:            16 73
  6322. flip:               64 115
  6323. flipped:            61
  6324. float:              27
  6325. floating:           25 27 53 72 89 109 110
  6326. floats:             27 114
  6327. floor:              11 24 45 61
  6328. floors:             61
  6329. flying:             73
  6330. focus:              33
  6331. fog:                96
  6332. folder:             9
  6333. fpu:                50
  6334. fract:              55
  6335. fractal:            6 9 55 56 57 85 89 115
  6336. fractals:           9
  6337. fractint:           9 57 58 59
  6338. frame:              16 113
  6339. frames:             88
  6340. freeware:           5 57
  6341. frequencies:        88
  6342.  
  6343.        
  6344.                                                   POV-Ray V1.0 Page 129
  6345.        
  6346.        
  6347. frequency:          88 89 97
  6348. front:              21 23 26 27 42 45
  6349. fundamentals:       116
  6350. future:             86
  6351. galvanized:         84
  6352. garbage:            84
  6353. geometry:           6 59 60 113
  6354. Gerono:             51
  6355. gif:                22 55 56 57 58 90 91 92
  6356.                     93 94 95 108 109
  6357. glass:              6 79
  6358. glop:               52
  6359. glossiness:         80
  6360. glows:              77
  6361. gold:               6 95
  6362. gradient:           82 84 85 90 92 93 94 108
  6363. gradients:          84 85
  6364. grain:              73
  6365. granite:            6 82 85 86 89
  6366. gray:               59
  6367. green:              14 22 25 27 28 32 37 38
  6368.                     39 41 43 57 66 71 74 75
  6369.                     76 77 79 82 83 85 97
  6370. grey:               37 75 76 83 93
  6371. halt:               7
  6372. halted:             7
  6373. ham:                7 109
  6374. hand:               34 44 48 59 111 115
  6375. handbook:           52 117
  6376. handed:             33 100
  6377. handedness:         33 44
  6378. hardware:           8
  6379. heading:            101
  6380. headquarters:       9
  6381. height:             6 11 13 18 30 36 55 56 57
  6382.                     58 59 61 93 94 100 101
  6383.                     111 115 119
  6384. hicolor:            6
  6385. highlight:          22 23 71 80 81
  6386. highlighted:        70
  6387. highlighting:       6 78 79 80
  6388. highlights:         6 22 37 71 78 80 81 88
  6389. hints:              4 5 113
  6390. historical:         21
  6391. hole:               50 51 60 63
  6392. home:               9 17 20 93
  6393. honey:              52
  6394. horizons:           80
  6395. hotspot:            38
  6396.  
  6397.        
  6398.                                                   POV-Ray V1.0 Page 130
  6399.        
  6400.        
  6401. hourglass:          46
  6402. humans:             25
  6403. hyperboloid:        6
  6404. hyperboloids:       24 46
  6405. ibm:                6 7 8 9 13 14 15 18 36 50
  6406.                     57 58 113 115 118 119
  6407. identifier:         37
  6408. iff:                90 91 93 109
  6409. image:              4 5 6 7 11 12 13 14 15 16
  6410.                     17 18 19 21 22 34 35 36
  6411.                     55 56 57 59 73 90 91 92
  6412.                     93 94 95 98 100 102 103
  6413.                     108 109 112 115 116 117
  6414. inaccuracies:       61
  6415. include:            5 6 8 10 17 20 24 26 27
  6416.                     30 46 47 67 113 114
  6417. included:           7 8 9 10 11 12 14 22 25
  6418.                     30 38 57 58 59
  6419. includes:           5 9 20 96
  6420. index:              55 56 58 79 93 94 107
  6421. indigo:             57
  6422. indoors:            82
  6423. infinite:           24 25 45 60 63 69 110
  6424. infinitely:         91 110 111
  6425. infinity:           24 25
  6426. inlaid:             95
  6427. input:              11 13 14 17 20 26 110 112
  6428. inside:             39 47 48 53 61 62 63 64
  6429.                     67 87 111 112 113
  6430. install:            9
  6431. installation:       7 9
  6432. installing:         9
  6433. instance:           34 98
  6434. intermediate:       57
  6435. internet:           9 118 119
  6436. interpolate:        90 91 93 94 95
  6437. interpolation:      48 82 91 93 94 95
  6438. interpolations:     95
  6439. intersect:          65
  6440. intersected:        58
  6441. intersection:       31 40 48 58 60 61 63 64
  6442.                     65 66 67 80 110 111
  6443. intersections:      6 50 60 101
  6444. intersects:         58
  6445. inverse:            61 64
  6446. invert:             60
  6447. inverted:           101 115
  6448. invisible:          22 37 38 113
  6449. ior:                78 79 97
  6450.  
  6451.        
  6452.                                                   POV-Ray V1.0 Page 131
  6453.        
  6454.        
  6455. islands:            56
  6456. jade:               6 11 84 86
  6457. jaggies:            15 95
  6458. jaggy:              15 91 93 94 95
  6459. japan:              9
  6460. jittered:           15
  6461. jittering:          15
  6462. key:                18
  6463. keypress:           13
  6464. keyword:            9 23 28 30 34 35 38 39 41
  6465.                     49 52 61 64 72 81 84 89
  6466.                     91 92 93
  6467. keywords:           79 84 100
  6468. kilobytes:          16
  6469. landscape:          36
  6470. landscapes:         6 55 56 57
  6471. language:           5 6 10 19 25 26 27 30
  6472. latitude:           101
  6473. layer:              73 75 87 95
  6474. layered:            4 31 73 76 79 86 87 91 95
  6475.                     105
  6476. layering:           75
  6477. layers:             73 86
  6478. lemnisca:           51
  6479. lemniscate:         49 51
  6480. lens:               20 21 33 35 115
  6481. leopard:            6 86 120
  6482. library:            6 13 17 18 20 93 115
  6483. light:              5 17 22 23 25 32 36 37 38
  6484.                     39 70 74 75 77 78 79 80
  6485.                     81 88 101 111 112 113
  6486. lighting:           5 6 8 17 44 50
  6487. lights:             10 37 41
  6488. location:           20 33 34 36 37 38 55 71
  6489.                     100 101 110 111
  6490. longitude:          101
  6491. lowercase:          20
  6492. Macintosh:          7 9 115 119
  6493. macro:              30
  6494. mactech:            119
  6495. magnenat:           116
  6496. magnify:            23
  6497. magnitude:          108 111
  6498. mail:               118
  6499. map:                58 69 74 76 82 83 84 85
  6500.                     86 90 91 92 93 94 95 97
  6501.                     108 109
  6502. mapped:             58 85 90 91 92 93 94 108
  6503.                     112
  6504.  
  6505.        
  6506.                                                   POV-Ray V1.0 Page 132
  6507.        
  6508.        
  6509. mapping:            4 82 90 91 92 93 94 108
  6510. maps:               69 74 82 83 86 90 91 93
  6511.                     94 95 108 109 112 119
  6512. marble:             6 11 40 41 42 69 73 82 84
  6513.                     86 103 104 105
  6514. marching cubes:     107
  6515. masonry:            84
  6516. material:           6 40 90 94 95 103
  6517. materials:          6 8 69 105
  6518. math:               7 49 50
  6519. mathematical:       24 46 49 52 69 117
  6520. mathematically:     5 51 55
  6521. metal:              81 84 89 95
  6522. metallic:           78 80 81 89 97
  6523. metals:             6
  6524. mickey:             28 29
  6525. microscopic:        80
  6526. mirror:             6 25 80 108
  6527. mirrored:           25 78
  6528. mirroring:          85
  6529. model:              80 100
  6530. modelling:          53
  6531. modes:              91
  6532. monitors:           115
  6533. moose:              31
  6534. mountains:          6
  6535. moving:             5 72 111
  6536. mypic:              92
  6537. mysphere:           114
  6538. nature:             15
  6539. negate:             115
  6540. negative:           19 47 52 54 92 108 111
  6541. neighbor:           15
  6542. nested:             20 26 27
  6543. newsletter:         116
  6544. noise:              15 73 83 84 85 89 103 104
  6545.                     105
  6546. normalized:         91 95
  6547. normals:            48 110 112
  6548. north:              101 118
  6549. number:             9 15 16 17 24 27 30 32 52
  6550.                     53 55 56 57 59 74 82 85
  6551.                     88 92 93 94 98 104 108
  6552.                     113
  6553. numbers:            15 17 28 53 57 74 77 82
  6554.                     93
  6555. numeric:            30 32 82
  6556. numerical:          61
  6557. object:             6 14 15 21 22 23 24 25 26
  6558.  
  6559.        
  6560.                                                   POV-Ray V1.0 Page 133
  6561.        
  6562.        
  6563.                     28 29 30 31 32 38 39 40
  6564.                     41 42 43 44 45 47 48 49
  6565.                     50 59 60 61 64 65 66 67
  6566.                     68 71 72 73 74 75 77 78
  6567.                     80 81 82 83 84 90 91 92
  6568.                     96 98 101 102 105 106 107
  6569.                     108 109 110 111 113 114
  6570. objectrotation:     114
  6571. objects:            6 10 15 25 28 30 33 37 40
  6572.                     41 44 48 58 59 60 62 63
  6573.                     65 66 67 69 73 75 77 78
  6574.                     80 90 97 98 101 102 106
  6575.                     109 110 111 113
  6576. oblate:             45
  6577. ocean:              88
  6578. octaves:            97 105
  6579. onion:              6 86 120
  6580. opaque:             74 77
  6581. operating:          8 9 10
  6582. optimization:       111
  6583. optimize:           111
  6584. optimized:          67
  6585. optimum:            14
  6586. option:             14 15 16 17 18 20 41 83
  6587.                     88 93 102 113
  6588. optional:           15 27 49 56 71 72 86 92
  6589. options:            7 12 14 17 18 20 22 90 93
  6590.                     97
  6591. orange:             57 89
  6592. organ:              84
  6593. organic:            52
  6594. orientation:        16 29 33 36 101 109
  6595. orientations:       50
  6596. oriented:           85
  6597. origin:             24 45 46 47 48 58 113
  6598. orthogonal:         101
  6599. overflow:           98 105 110
  6600. override:           18 19 97
  6601. overwrite:          12
  6602. paint:              56 57 94
  6603. paints:             105
  6604. palette:            55 56 57 59 91 93 94
  6605. palettes:           91
  6606. panther:            11
  6607. papers:             111
  6608. paraboloid:         6 47
  6609. paraboloids:        24 46
  6610. parameter:          13 16 17 21 56 58 69 71
  6611.                     77 88 101 113
  6612.  
  6613.        
  6614.                                                   POV-Ray V1.0 Page 134
  6615.        
  6616.        
  6617. parameters:         12 13 14 17 18 27 40 69
  6618.                     70 71 88 114
  6619. parser:             97 106
  6620. parsing:            106
  6621. particle:           105
  6622. pathname:           17
  6623. pattern:            24 69 70 71 73 74 82 83
  6624.                     84 85 86 88 89 90 91 93
  6625.                     94 116
  6626. patterns:           23 69 70 74 82 83 85 88
  6627. pause:              13
  6628. PCGRAPHICS:         9
  6629. penumbral:          24
  6630. periodicals:        115
  6631. perspective:        5 21
  6632. perturb:            89
  6633. perturbation:       88 89
  6634. perturbed:          73
  6635. perturbs:           93
  6636. phase:              88 97
  6637. phone:              9 118
  6638. phong:              6 22 23 29 32 45 48 64 71
  6639.                     72 73 74 76 78 79 80 81
  6640.                     88 97 118
  6641. Piclab:             15 111
  6642. pine:               6
  6643. pinhole:            33
  6644. pink:               57
  6645. pinkalabaster:      66
  6646. pipe:               84
  6647. piriform:           51
  6648. pitch:              101
  6649. pixel:              14 15 36 55 57 58 93 94
  6650.                     95 101 102 109 115
  6651. pixels:             6 11 13 16 18 21 36 49 55
  6652.                     73 90 93 95 100 113
  6653. planar:             90 91 93 112
  6654. plane:              6 24 45 46 58 61 67 92
  6655.                     106 110 111 112
  6656. planes:             45 60 61 83 111
  6657. planets:            48
  6658. plastic:            77 80 81
  6659. point:              11 19 21 25 26 27 33 34
  6660.                     35 36 37 38 39 41 42 44
  6661.                     47 53 54 56 59 61 63 72
  6662.                     73 74 82 83 89 93 94 95
  6663.                     98 101 104 105 109 110
  6664.                     111
  6665. points:             24 27 35 37 38 44 46 53
  6666.  
  6667.        
  6668.                                                   POV-Ray V1.0 Page 135
  6669.        
  6670.        
  6671.                     59 61 83 100 104 110
  6672. polished:           80
  6673. polygon:            112
  6674. portability:        111
  6675. portable:           8
  6676. pot:                55 56 57 58
  6677. povibm:             7
  6678. povlegal:           117
  6679. povmap:             55
  6680. povray:             7 9 10 11 12 17 18 19 22
  6681. povrayopt:          12 18 19
  6682. preview:            59
  6683. primitive:          44 45 61
  6684. primitives:         6 48 61
  6685. prodigy:            118
  6686. project:            90 93
  6687. projection:         59 108
  6688. projections:        58
  6689. projector:          90 91 108
  6690. publisher:          116
  6691. putty:              52
  6692. qcone:              47
  6693. QRT:                14
  6694. quadric:            24 25 44 45 46 47 50 64
  6695.                     66 110
  6696. quadrics:           24 46 47 49 50 110 118
  6697. qualities:          113
  6698. quality:            6 13 17 41 69 113
  6699. quartic:            49 50 51 52
  6700. quartics:           6 49 50 119
  6701. radii:              54
  6702. radius:             21 23 24 37 38 39 44 47
  6703.                     49 50 51 52 53 54 55 90
  6704.                     98
  6705. random:             15 16 17 49 71 72 84 89
  6706.                     104 113
  6707. randomly:           58 104
  6708. randomness:         72 73 97
  6709. range:              6 11 13 17 77 78 80 81 82
  6710.                     83 88 89 92 105 108 112
  6711. ranges:             74 104
  6712. ranging:            69
  6713. raw:                6 13 14 15
  6714. raytracer:          26 58 59 99 101 102 107
  6715.                     110 113
  6716. raytracers:         19
  6717. raytracing:         9 16 45 104 111 115
  6718. readability:        26
  6719. readable:           25
  6720.  
  6721.        
  6722.                                                   POV-Ray V1.0 Page 136
  6723.        
  6724.        
  6725. realtime:           113
  6726. red:                11 14 15 21 22 24 27 28
  6727.                     32 37 38 39 41 57 66 71
  6728.                     74 75 76 77 79 82 83 85
  6729.                     86 97 103
  6730. reflect:            37 71 78
  6731. reflected:          17 25 79 98 101
  6732. reflecting:         98 101
  6733. reflection:         25 69 71 78 79 87 97
  6734. reflections:        5 88
  6735. reflective:         70 80 98
  6736. reflectivity:       44
  6737. reflects:           70 88 98
  6738. refracted:          17 78
  6739. refracting:         101 107
  6740. refraction:         78 79 97 107 112
  6741. refractive:         70
  6742. register:           92
  6743. registers:          14 91
  6744. Renderman:          116
  6745. repeatable:         15
  6746. requirements:       109
  6747. requires:           7 49 88 89
  6748. resolution:         56 95 100
  6749. reverse:            74
  6750. reversed:           108
  6751. revolved:           50
  6752. right:              11 19 20 21 22 23 25 27
  6753.                     33 34 35 36 42 43 44 73
  6754.                     100 101 108 109 112 115
  6755. ring:               50 51
  6756. rings:              69 104 114
  6757. ripple:             88
  6758. ripples:            6 70 87 88
  6759. rock:               103
  6760. roof:               65
  6761. room:               25 77 104 105
  6762. rotate:             27 28 35 36 40 41 42 44
  6763.                     45 46 47 48 58 70 71 72
  6764.                     73 88 92 101 112 114
  6765. rotated:            29 34 36 41 42 46 48 49
  6766.                     51 52 57 59 60 72 83 109
  6767. rotates:            21 42
  6768. rotating:           36 42 49 109
  6769. rotation:           42 44 48 114 115
  6770. rotations:          42 44 48
  6771. rough:              15 23 81
  6772. roughly:            23 53
  6773. roughness:          80 81 97 110
  6774.  
  6775.        
  6776.                                                   POV-Ray V1.0 Page 137
  6777.        
  6778.        
  6779. round:              70 115
  6780. rule:               23 61
  6781. saddle:             24 46
  6782. sandpaper:          112
  6783. sapphire:           6
  6784. satellite:          24
  6785. saturation:         80
  6786. scale:              23 25 28 32 40 41 42 43
  6787.                     45 46 47 48 52 58 59 64
  6788.                     66 70 71 72 73 74 75 76
  6789.                     85 88 89 92 93 110 112
  6790.                     114
  6791. scaled:             23 25 29 41 45 46 48 49
  6792.                     52 56 57 59 60 72 83 91
  6793.                     93 109 110 114
  6794. scales:             40 41 51
  6795. scaling:            23 25 44 51 84 85 86 93
  6796.                     109 110 111
  6797. scan:               16
  6798. scanline:           16
  6799. scanlines:          16
  6800. scanned:            57
  6801. scene:              5 6 7 8 9 10 11 12 13 15
  6802.                     16 17 18 19 20 21 22 25
  6803.                     26 27 28 29 30 32 33 35
  6804.                     37 39 40 41 46 55 71 78
  6805.                     96 97 98 99 100 108 110
  6806.                     111 113 114 117 119
  6807. scenes:             5 6 8 10 11 21 27 49 59
  6808.                     67
  6809. screen:             11 16 19 21 33 36 101 110
  6810.                     111
  6811. screens:            36
  6812. SGI:                8
  6813. shade:              85
  6814. shaded:             6 48 70
  6815. shades:             74
  6816. shading:            5 69 70 88
  6817. shadow:             24 38 39 77 108 111
  6818. shadowed:           78 101
  6819. shadows:            17 24 37 111
  6820. shape:              6 21 24 29 30 31 36 38 39
  6821.                     40 41 42 44 45 47 48 49
  6822.                     51 52 56 58 59 60 61 62
  6823.                     63 64 65 66 67 68 69 70
  6824.                     71 72 73 77 83 88 90 91
  6825.                     93 103 104 106 113 114
  6826. shapes:             5 6 8 20 24 28 30 31 37
  6827.                     38 40 41 44 46 47 48 49
  6828.  
  6829.        
  6830.                                                   POV-Ray V1.0 Page 138
  6831.        
  6832.        
  6833.                     50 51 52 58 59 60 61 62
  6834.                     63 65 66 67 68 69 91 102
  6835.                     106 110 115
  6836. shapesq:            49
  6837. shell:              104
  6838. shinier:            80
  6839. shininess:          78
  6840. shining:            23 77 78
  6841. shiny:              6 22 23 70 71 78 79
  6842. sideways:           101
  6843. Sierra:             6
  6844. SIGGRAPH:           103 116
  6845. sign:               27 33
  6846. sine:               55
  6847. sky:                6 33 34 35 57 73 83 98
  6848.                     101
  6849. slash:              26
  6850. slide:              90 91 108
  6851. smooth:             6 15 23 48 49 54 57 59 70
  6852.                     74 81 82 85 104 112
  6853. smoothed:           91 93
  6854. smoother:           15 56 57 95 102
  6855. smoothing:          13
  6856. smoothly:           52 53 73 74 104
  6857. smooths:            95
  6858. soft:               24 33 37 38 111
  6859. software:           5 7 8 117
  6860. solid:              6 56 58 59 60 62 69 73 83
  6861.                     103 113
  6862. solidly:            83
  6863. south:              101
  6864. spatial:            111
  6865. specular:           6 22 78 79 80 81 97
  6866. speed:              16 45 65 67 111
  6867. speeds:             50 67
  6868. spelling:           77
  6869. sphere:             6 21 22 23 24 28 30 31 32
  6870.                     39 40 41 42 43 44 45 47
  6871.                     48 50 53 54 60 64 65 66
  6872.                     67 68 70 72 73 74 75 78
  6873.                     90 91 93 94 95 106 114
  6874. spheres:            19 39 44 45 46 52 53 54
  6875.                     59 61 86 98 115
  6876. spherical:          90 91 93 94
  6877. spheroids:          45
  6878. spikes:             58
  6879. spin:               48
  6880. spline:             82 112
  6881. spotlight:          37 38 39 111
  6882.  
  6883.        
  6884.                                                   POV-Ray V1.0 Page 139
  6885.        
  6886.        
  6887. spotlights:         6 38 119
  6888. spotted:            82 84 89
  6889. sqrt:               49
  6890. square:             36 56 108 115
  6891. squares:            83
  6892. squig:              94 95
  6893. squiggles:          94 95
  6894. squish:             23 42
  6895. stack:              98 105
  6896. stdinc:             114
  6897. steel:              29
  6898. steering:           29
  6899. stone:              9 84 86
  6900. stones:             69 86 119
  6901. storage:            57
  6902. stormy:             84
  6903. Sturm:              49 52
  6904. subdirectories:     10
  6905. subdirectory:       9 10 20 93
  6906. sunset:             6
  6907. supercomputer:      8
  6908. superimpose:        60
  6909. surface:            6 17 21 24 25 44 45 46 47
  6910.                     48 49 50 53 54 59 61 69
  6911.                     70 71 73 77 78 79 81 83
  6912.                     87 88 89 90 92 93 94 98
  6913.                     107 111 112
  6914. surfaces:           6 24 41 46 47 49 50 51 52
  6915.                     60 112 117
  6916. swirled:            84
  6917. syntax:             30 36 37 38 42 44 47 49
  6918.                     52 55 59 71 77 82 83 84
  6919.                     85 86 88 89 90 93 94 97
  6920.                     98
  6921. Targa:              6 13 14 15 17
  6922. telephoto:          33
  6923. temperature:        104 105
  6924. temperatures:       104
  6925. temple:             11
  6926. texture:            6 17 21 22 23 24 25 28 29
  6927.                     31 32 38 39 40 41 42 43
  6928.                     45 60 64 65 66 70 71 72
  6929.                     73 74 75 76 77 78 79 81
  6930.                     82 84 85 86 87 88 90 91
  6931.                     92 94 95 97 98 103 104
  6932.                     105 106 107 109 112 113
  6933.                     114 115
  6934. textured:           29 82 103
  6935. textures:           4 5 6 8 16 17 20 23 28 30
  6936.  
  6937.        
  6938.                                                   POV-Ray V1.0 Page 140
  6939.        
  6940.        
  6941.                     31 41 47 69 71 72 73 74
  6942.                     75 76 79 81 86 87 88 89
  6943.                     90 91 93 94 95 97 98 103
  6944.                     104 105 106 109 112 113
  6945.                     114 120
  6946. texturing:          83 105
  6947. thermometer:        104
  6948. thick:              111
  6949. thickness:          110
  6950. thin:               58 111
  6951. threshold:          15 52 53 54
  6952. tile:               86
  6953. tiled:              11 91
  6954. tiles:              86 87 94
  6955. tips:               4 5 24 113
  6956. tolerance:          15
  6957. torus:              6 25 49 50 51 90 91
  6958. trace:              9 27 52 98 107
  6959. traceaholics:       9
  6960. traced:             15 44 101
  6961. tracer:             5 24 25 26 33 40 56 58 59
  6962.                     67 70 74 96 102 113
  6963. tracers:            33
  6964. tracing:            5 8 13 14 16 20 33 35 37
  6965.                     58 65 67 78 83 100 102
  6966.                     110 115
  6967. transform:          46 48 71 72
  6968. transformation:     40 41 43 48 70 85
  6969. transformations:    40 41 48 58 65 70 71 72
  6970.                     109 114
  6971. transformed:        41 58 109
  6972. transforming:       43
  6973. translate:          25 28 29 35 36 41 42 43
  6974.                     45 46 47 48 58 64 66 67
  6975.                     70 71 72 73 85 88 92 112
  6976.                     114
  6977. translated:         29 36 41 46 48 49 51 52
  6978.                     57 59 60 72 83 109
  6979. translates:         43 74
  6980. translating:        36 43 49 109
  6981. translation:        48
  6982. translations:       44
  6983. transmit:           79
  6984. transmitted:        17
  6985. transparency:       69 73 77 78 92 112
  6986. transparent:        38 69 70 73 74 75 76 77
  6987.                     78 79 89 91 92 98
  6988. transposed:         108
  6989. tree:               10 30 69 104
  6990.  
  6991.        
  6992.                                                   POV-Ray V1.0 Page 141
  6993.        
  6994.        
  6995. triangle:           6 48 55 58 62 112
  6996. triangles:          6 48 55 56 57 58 59 61 62
  6997.                     110 112
  6998. turbulent:          83 84
  6999. tutorial:           5 19
  7000. undefined:          67 91 113
  7001. underflow:          110
  7002. union:              28 29 31 39 40 48 60 63
  7003.                     65 66 98 109
  7004. unions:             6 60
  7005. unit:               21 23 27 55 56 58 91 94
  7006.                     114
  7007. units:              20 21 22 27 42 43 45 46
  7008.                     47
  7009. universe:           20 27 33 35 100
  7010. unix:               8
  7011. utilities:          8 48 59 112
  7012. utility:            10 59
  7013. vapor:              83
  7014. vaqueros:           117
  7015. variable:           12 17 18 19 106
  7016. variables:          49
  7017. vax:                8
  7018. vector:             21 24 27 33 34 35 44 49
  7019.                     84 85 92 93 100 101 108
  7020.                     110 111 112 115
  7021. vectors:            20 27 32 33 34 35 36 41
  7022.                     100 101 110 112 114 115
  7023. vein:               74
  7024. veins:              74
  7025. verbose:            86
  7026. verlag:             116
  7027. vertex:             58 112
  7028. vertexes:           58
  7029. vertical:           69
  7030. vertices:           48
  7031. VGA:                36 115
  7032. viewplane:          100
  7033. viewpoint:          33
  7034. virtual:            22
  7035. visible:            38 60 73
  7036. vision:             5
  7037. visual:             53
  7038. visualize:          104
  7039. volume:             113
  7040. volumes:            113
  7041. Waite Group:        115
  7042. wall:               45 46
  7043. water:              55 56 58 79 83 88
  7044.  
  7045.        
  7046.                                                   POV-Ray V1.0 Page 142
  7047.        
  7048.        
  7049. wave:               88
  7050. waves:              6 70 87 88 89
  7051. west:               9 101
  7052. wheel:              29
  7053. wheels:             65
  7054. white:              22 27 28 37 39 57 59 75
  7055.                     76 77 78 83 92 93 96 103
  7056. wide:               6 11 21 33 36 47 55 115
  7057. width:              11 13 18 21 36 47 49 100
  7058.                     110 115
  7059. wind:               105
  7060. windows:            7 8
  7061. wood:               6 23 69 71 73 74 75 76 82
  7062.                     84 86 88 104 105 106 107
  7063.                     114
  7064. wooden:             24 95
  7065. wrinkle:            89
  7066. wrinkled:           6 89
  7067. wrinkles:           70 89
  7068. wrinkling:          89
  7069. yellow:             63 64 66 82 83
  7070. zero:               16 25 38 43 53 54 56 72
  7071.                     78 108 110
  7072. zip:                7 114
  7073.