home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-06-01 | 268.2 KB | 7,073 lines |
-
-
-
-
- Persistence of Vision Ray Tracer (POV-Ray)
- Version 1.0
- July 18, 1992
-
-
- Introduction.............................................5
- Program Description -- What is Ray Tracing?..............5
- Which Version of POV-Ray Should You Use?.................7
- IBM-PC and compatibles..............................7
- Apple Macintosh.....................................7
- Commodore Amiga.....................................7
- UNIX and other systems..............................8
- All Versions........................................8
- Where to find POV-Ray files..............................8
- Computer Art Forum on CompuServe....................9
- PC Graphics area on America On-Line.................9
- You Can Call Me Ray BBS in Chicago..................9
- The Graphics Alternative BBS in Oakland.............9
- Internet............................................9
- Quick Start..............................................9
- Installing POV-Ray.......................................9
- Using Sample Scenes......................................10
- Command Line Parameters.............................12
- Beginning Tutorial.......................................19
- Your First Image.........................................19
- Phong Highlights.........................................22
- Simple Textures..........................................23
- More Shapes..............................................24
- Quadric Shapes...........................................24
- Scene Description Language Reference.....................25
- Comments............................................25
- Include Files.......................................26
- Float...............................................27
- Vector..............................................27
- Declare.............................................27
- What can be declared?...............................30
- Camera..............................................32
- Telephoto and Wide-Angle.......................33
- Sky and Look_at................................34
- Aspect Ratio...................................35
- Translating and Rotating the Camera............36
- light_source........................................36
- spotlight light_source..............................37
- no_shadow...........................................38
- Objects..................................................40
-
-
-
-
-
- Quick Render Color.......................................41
- Transformations..........................................41
- Scale...............................................41
- Rotate..............................................41
- Translate...........................................41
- Transformation order................................43
- "Handedness" -- Rotation Direction..................44
- Shapes...................................................44
- Spheres.............................................44
- Planes..............................................45
- Boxes...............................................46
- Quadric Shapes......................................46
- Quadric surfaces the easy way.......................47
- Triangles...........................................48
- Quartic Surfaces....................................49
- Blob................................................52
- How do blobs work?..................................53
- Threshold:.....................................53
- Strength:......................................53
- Radius:........................................54
- Center:........................................54
- The Formula....................................55
- Height Fields.......................................55
- Bezier/Bicubic Patches..............................59
- Constructive Solid Geometry (CSG)........................59
- Inside and outside..................................61
- union { A B }......................................63
- intersection { A B }................................63
- difference { A B }.................................63
- Inverse.............................................64
- Composite Objects........................................65
- Bounding Shapes..........................................67
- Clipping Shapes..........................................67
- Textures.................................................69
- Color Pattern.......................................69
- Bump Patterns.......................................70
- Surface Properties..................................70
- Texture Syntax......................................71
- Textures and Animation..............................71
- Random Dither..................................72
- Layered Textures...............................73
- More about Textures......................................73
- Turbulence or Noise.................................73
- Color Maps..........................................74
- Alpha...............................................74
- Layering Textures...................................75
- Texture Surface Properties...............................77
-
-
-
-
-
- Color...............................................77
- ambient value.......................................77
- diffuse value.......................................78
- brilliance value....................................78
- reflection value....................................78
- refraction value....................................78
- ior value...........................................79
- phong value.........................................79
- phong_size value....................................80
- specular value......................................80
- roughness value.....................................80
- metallic............................................81
- Color Pattern Texture Types..............................82
- Color Maps..........................................82
- checker - Color Pattern.............................83
- bozo - Color Pattern................................83
- spotted - Color Pattern.............................84
- marble - Color Pattern..............................84
- wood - Color Pattern................................84
- agate - Color Pattern...............................84
- gradient - Color Pattern............................84
- granite - Color Pattern.............................85
- onion - Color Pattern...............................86
- leopard - Color Pattern.............................86
- tiles - A texture pattern...........................86
- Bump Patterns............................................88
- ripples - Bump Pattern..............................88
- waves - Bump Pattern................................88
- bumps - Bump Pattern................................89
- dents - Bump Pattern................................89
- wrinkles - Bump Pattern.............................89
- Mapping Textures.........................................90
- Mapping Types:......................................90
- Mapping Method:.....................................90
- image_map - Color Pattern...........................90
- bump_map - A Bump Pattern...........................93
- material_map - A texture pattern....................94
- Interpolation.......................................95
- Misc Features............................................96
- Fog.................................................96
- Default Texture.....................................97
- Max trace level.....................................98
- Advanced Lessons.........................................99
- Camera..............................................100
- Ray-Object Intersections............................101
- Textures, Noise, and Turbulence..........................103
- Octaves.............................................105
-
-
-
-
-
- Layered Textures....................................105
- Parallel Image Mapping..............................108
- Common Questions and Answers.............................109
- Tips and Hints...........................................113
- Suggested Reading........................................115
- Legal Information........................................118
- Contacting the Authors...................................118
-
-
-
-
-
-
-
- Introduction
-
- This document details the use of the Persistence of Vision
- Ray Tracer (POV-Ray) and is broken down into several
- sections.
-
- The first section describes the program POV-Ray, explains
- what ray tracing is and also describes where to find the
- latest version of the POV-Ray software.
-
- The next section is a quick start that helps you quickly
- begin to use the software.
-
- After the quick start is a more in-depth tutorial for
- beginning POV-Ray users.
-
- Following the beginning tutorial is a scene description
- language reference that describes the language used with
- POV-Ray to create an image.
-
- The last sections include some tips and hints, suggested
- reading, and legal information.
-
-
-
- POV-Ray is based on DKBTrace 2.12 by David Buck & Aaron A.
- Collins
-
- Program Description -- What is Ray Tracing?
-
- The Persistence of Vision Ray Tracer (POV-Ray) is a
- copyrighted freeware program that allows a user to easily
- create fantastic, three dimensional, photo-realistic images
- on just about any computer. POV-Ray reads standard ASCII
- text files that describe the shapes, colors, textures and
- lighting in a scene and mathematically simulates the rays of
- light moving through the scene to produce a photo-realistic
- image!
-
- No traditional artistic or programming skills are required
- to use POV-Ray. First, you describe a picture in POV-Ray's
- scene description language, then POV-Ray takes your
- description and automatically creates an image of it with
- perfect shading, perspective, reflections and lighting.
-
- The standard POV-Ray package also includes a large
- collection of sample scene files that have been created by
- other artists using the program. These scenes can be
- rendered and enjoyed even before learning the scene
-
-
- POV-Ray V1.0 Page 6
-
-
- description language. They can also be modified to create
- new scenes.
-
- Here are some highlights of POV-Ray's features:
- -Easy to use scene description language
- -Image size up to 4096 x 4096 pixels and larger
- -Large library of stunning example scene files
- -Standard include files that pre-define many shapes,
- colors and textures
- -Very high quality output image files (24-bit color.)
- -16 bit color display on IBM-PC's using the Sierra
- HiColor chip
- -Create fractal landscapes using height fields
- -Spotlights for sophisticated lighting
- -Phong and specular highlighting for more
- realistic-looking surfaces.
- -Several image file output formats including Targa,
- dump and raw
- -Wide range of shapes:
- -Basic Shape Primitives such as...
- Sphere, Box, Ellipsoid, Cylinder, Cone, Triangle and
- Plane
- -Advanced Shape Primitives such as...
- Torus (Donut), Hyperboloid, Paraboloid, Bezier Patch,
- Height Fields (Mountains), Blobs, Quartics, Smooth
- Triangles (Phong shaded)
- -Shapes can easily be combined to create new complex
- shapes. This feature is called Constructive Solid
- Geometry (CSG). POV-Ray supports unions, intersections
- and differences in CSG.
- -Multiple objects can be combined into one object using
- the composite feature
- -Objects and shapes are assigned materials, these
- materials are called textures.
- (A texture describes the coloring and surface
- properties of a shape, its material.)
-
- -Many built-in textures such as...
- Marble, Checkerboard, Wood, Bumpy, Agate, Clouds,
- Granite, Ripples, Waves, Leopard, Wrinkled,
- -Users can create their own textures or use pre-defined
- textures such as...
- Mirror, Metals like Chrome, Brass, Gold and Silver,
- Bright Blue Sky with Clouds, Sunset with Clouds,
- Sapphire Agate, Jade, Shiny, Brown Agate, Apocalypse,
- Blood Marble, Glass, Brown Onion , Pine Wood, Cherry Wood
- -Combine textures for sophisticated or novel effects
-
-
- POV-Ray V1.0 Page 7
-
-
- -Display image while computing (not available on all
- computers)
- -Halt rendering when part way through
- -Continue rendering a halted partial scene later
-
-
- Which Version of POV-Ray Should You Use?
-
- There are specific versions of POV-Ray available for three
- different computers, the IBM-PC, the Apple Macintosh, and
- the Commodore Amiga.
-
-
- IBM-PC and compatibles
- The IBM-PC version is called POVRAY.EXE and is found in the
- archive POVIBM.ZIP. It can be run on any IBM-PC with a 386
- or 486 CPU and 2 megabytes of memory. A math co-processor is
- not required, but it is recommended. This version of POV-Ray
- may be run under DOS, OS\2, and Windows. It will not run
- under Desqview at this time. A version that runs on IBM-PC's
- using the 286 CPU will be available soon.
-
-
- Apple Macintosh
- The Apple Macintosh version can be found in the file
- POVMAC.SIT. It requires a 68020 or better processor, 32 bit
- Color Quickdraw, and a math co-processor or software
- emulation of a math co-processor to run.
-
- The math co-processor emulator is needed on the Mac LC and
- Powerbook 140. The documentation included with the
- executable describes where to find a math co-processor
- emulator.
-
- 32 bit Color Quickdraw is part of System 7's automatic
- installation on color Macs. Owners of Mac SE/30 and other
- non-color Macs will need to use custom installation options
- to add 32 bit Color Quickdraw.
-
- The installation of QuickTime will enhance POV-Ray's ability
- to save pictures by allowing it to save in QuickTime
- compressed formats.
-
- Commodore Amiga
- The Commodore Amiga version of POV-Ray can be found in the
- file POVAMI.LZH. Two executables are supplied, one for
- computers with a math co-processor, and one for computers
- without a math co-processor. This version will run on Amiga
- 500, 1000, 2000, and 3000's and should work under AmigaDOS
- 1.3 or 2.xx. The Amiga version supports HAM mode as well as
- HAM-E and the Firecracker.
-
-
- POV-Ray V1.0 Page 8
-
-
-
-
- UNIX and other systems
- POV-Ray is written in highly portable C source code and it
- can be compiled and run on many different computers. There
- is specific source code in the source archive for UNIX,
- X-Windows, VAX, and generic computers. If you have one of
- these, you can use the C compiler included with your
- operating system to compile a POV-Ray executable for your
- own use. This executable may not be distributed. See the
- source documentation for more details. Users on high powered
- computers like Suns, SGI, RS-6000's, Crays, and so on use
- this method to run POV-Ray.
-
-
- All Versions
- All versions of the program share the same ray tracing
- features like shapes, lighting and textures. In other words,
- an IBM-PC can create the same pictures as a Cray
- supercomputer as long as it has enough memory.
-
- The user will want to get the executable that best matches
- their computer hardware. See the section "Where to find
- POV-Ray files" for where to find these files. You can
- contact those sources to find out what the best version is
- for you and your computer.
-
-
- Where to find POV-Ray files
-
- POV-Ray is a complex piece of software made up of many
- files. At the time of this writing, the POV-Ray package was
- made up of several archives including executables,
- documentation, and example scene files.
-
- The average user will need an executable for their computer,
- the example scene files and the documentation. The example
- scenes are invaluable for learning about POV-Ray, and they
- include some exciting artwork.
-
- Advanced users, developers, or the curious may want to
- download the C source code as well.
-
- There are also many different utilities for POV-Ray that
- generate scenes, convert scene information from one format
- to another, create new materials, and so on. You can find
- these files from the same sources as the other POV-Ray
- files. No comprehensive list of these utilities is available
- at the time of this writing.
-
- The latest versions of the POV-Ray software are available
-
-
- POV-Ray V1.0 Page 9
-
-
- from these sources:
-
- Computer Art Forum on CompuServe
- POV-Ray headquarters are on CompuServe Comart forum
- Raytracing section 16. We meet there to share info and
- graphics and discuss raytracing, fractals and other kinds of
- computer art. Comart is also the home of the Stone Soup
- Group, developers of Fractint, a popular IBM-PC fractal
- program. Everyone is welcome to join in on the action on CIS
- Comart. Hope to see you there! You can get information on
- joining CompuServe by calling (800)848-8990. CompuServe
- access is also available in Japan, Europe and many other
- countries.
-
- PC Graphics area on America On-Line
- There's an area now on America On-Line dedicated to POV-Ray
- support and information. You can find it in the PC Graphics
- section of AOL. Jump keyword "PCGRAPHICS". This area
- includes the Apple Macintosh executables also.
-
- You Can Call Me Ray BBS in Chicago
- There is a ray-trace specific BBS in the (708) Area Code
- (Chicago suburbia, United States) for all you Traceaholics
- out there. The phone number of this BBS is (708)
- 358-5611.Bill Minus is the sysop and Aaron Collins is
- co-sysop of that board, and it's filled with interesting
- stuff.
-
-
- The Graphics Alternative BBS in Oakland
- For those on the West coast, you may want to find the
- POV-Ray files on The Graphics Alternative BBS at (510)
- 524-2780. It's a great graphics BBS run by Adam Schiffman.
-
- Internet
- The POV-Ray files are also available over Internet by
- anonymous FTP from alfred.ccs.carleton.ca (134.117.1.1).
-
- Quick Start
-
- The next section describes how to quickly install POV-Ray
- and render a sample scene on your computer.
-
- Installing POV-Ray
-
- Specific installation instructions are included with the
- executable program for your computer. In general, there are
- two ways to install POV-Ray.
-
- [ Note that the generic word "directory" is used
- throughout.
- Your operating system may use another word
- (subdirectory, folder, etc.) ]
-
- 1-- The messy way: Create a directory called POVRAY and copy
- all POV-Ray files into it. Edit and run all files and
-
-
- POV-Ray V1.0 Page 10
-
-
- programs from this directory. This method works, but is not
- recommended.
-
- Or the preferred way:
- 2-- Create a directory called POVRAY and several
- subdirectories called
- INCLUDE, SAMPLES, SCENES, UTIL.
- The file tree for this should look something like this:
- \--
- |
- +POVRAY --
- |
- +INCLUDE
- |
- +SAMPLES
- |
- +SCENES
- |
- +UTIL
-
- Copy the executable file and docs into the directory POVRAY.
- Copy the standard include files into the subdirectory
- INCLUDE. Copy the sample scene files into the subdirectory
- SAMPLES. And copy any POV-Ray related utility programs and
- their related files into the subdirectory UTIL. Your own
- scene files will go into the SCENES subdirectory. Also,
- you'll need to add the directories \POVRAY and \POVRAY\UTIL to
- your "search path" so the executable programs can be run
- from any directory.
-
- *Note that some operating systems don't
- *have an equivalent to the
- *multi-path search command.
-
- The second method is a bit more difficult to set-up, but is
- preferred. There are many files associated with POV-Ray and
- they are far easier to deal with when separated into several
- directories.
-
- Using Sample Scenes
-
- This section describes how to render a sample scene file.
- You can use these steps to render any of the sample scene
- files included in the sample scenes archive.
-
- A scene file is a standard ASCII text file that contains a
- description in the POV-Ray language of a three dimensional
- scene. The scene file text describes objects and lights in
- the scene, and a camera to view the scene. Scene files have
-
-
- POV-Ray V1.0 Page 11
-
-
- the file extension .POV and can be created by any word
- processor or editor that can save in standard ASCII text
- format.
-
- Quite a few example scenes are provided with this
- distribution in the example scenes archive. These have been
- organized into separate archives within the main archive and
- are grouped by complexity and category.
-
- These scene files range from a simple red ball on a tiled
- floor, to a jade panther in a marble temple. They have been
- created by users of POV-Ray all over the world, and were
- picked to give examples of the variety of features in POV-Ray.
- Many of them are stunning in their own right.
-
- The scenes were graciously donated by the artists because
- they wanted to share what they had created with other users.
- Feel free to use these scenes for any purpose. You can just
- marvel at them as-is, you can study the scene files to learn
- the artists techniques, or you can use them as a starting
- point to create new scenes of your own.
-
- Here's how to make these sample scenes into images you can
- view on your computer. We'll use SIMPLE.POV as an example,
- just substitute another filename to render a different
- image.
-
- The file SIMPLE.POV was included with this document and
- should now be in the POVRAY directory.
-
- Note: The sequence of commands is not the same for
- every version of POV-Ray. There should be a
- document with the executable describing the
- specific commands to render a file.
-
- Make POVRAY the active directory, and then at the command
- line, type:
-
- POVRAY +iSIMPLE.POV +v +w80 +h60<ENTER>
-
- POVRAY is the name of your executable, +i<filename.pov>
- tells POV-Ray what scene file it should use as input, and +v
- tells the program to output its status to the text screen as
- it's working. +w and +h set the width and height of the
- image in pixels. This image will be 80 pixels wide by 60 pixels
- high.
-
-
-
- POV-Ray V1.0 Page 12
-
-
- POV-Ray will read in the text file SIMPLE.POV and begin
- working to render the image. It will write the image to a
- file called DATA.TGA. The file DATA.TGA contains a 24 bit
- image of the scene file SIMPLE.POV. Because many computers
- can't display a 24 bit image, you will probably have to
- convert DATA.TGA to an 8 bit format before you can view it
- on your computer. The docs included with your executable
- lists the specific steps required to convert a 24 bit file
- to an 8 bit file.
-
- Command Line Parameters
- The following section gives a detailed description of the
- command-line options.
-
- The command-line parameters may be specified in any order.
- Repeated parameters overwrite the previous values.
- Default parameters may also be specified in a file called
- "povray.def" or by the environment variable "POVRAYOPT".
- Some examples follow this table.
-
-
- POV-Ray V1.0 Page 13
-
-
- Table 1-1 Command Line Parameters
- Parameter.....|.....Range.....|...Description..............
- -----------------------------------------------------------
- -? | | Turn on/off feature off
- -?(val) | | Turn feature on with
- | | parameter val.
- +? | | Turn feature on.
- +i<filename> | Varies w/ sys | Input scene file name,
- | | generally ends in .pov.
- +o<filename> | Varies w/ sys | Output image filename.
- +w##### | 1-32,768 | Width of image in pixels.
- +h##### | 1-32,768 | Height of image in pixels.
- +v(#) | Varies w/sys | Display image stats while
- | | rendering.
- +d(??) | Varies w/sys | Display image graphically
- | | while rendering (Not avail
- | | on all vers).
- +x | | Allow abort with
- | | keypress.(IBM-PC).
- +f(?) | t, d or r | Output file format:
- | | Targa, dump or raw.
- -f | | Disable file output.
- +s##### | 1-32,768 | Start line for tracing
- | | a portion of a scene.
- +e##### | 1-32,768 | End line for tracing
- | | a portion of a scene.
- +c | | Continue an aborted
- | | partial image.
- +p | | Pause and wait for keypress
-
- | | after tracing image.
- +b##### | Varies w/ sys | Output file buffer size.
- +a##### | 0.0 to 1.0 | Render picture with
- | | anti-aliasing,or
- | |"smoothing", on.
- | | Lower values cause more
- | | smoothing.
- +q# | 0 to 9 | Image quality:
- | | 9 highest(default) to
- | | 0 lowest.
- +l<path> | Varies w/ sys | Library path: POV-Ray will
- | | search for files in the
- | | directory listed here.
- | | Multiple lib paths may be
- | | specified.
- ----------------------------------------------------------
-
-
- POV-Ray V1.0 Page 14
-
-
-
- Normally, you don't need to specify the +f? option. The
- default setting will create the correct format image file
- for your computer. The docs included with the executable
- specify which format is used.
-
- You can disable image file output by using the command line
- option -f. This is only useful if your computer has display
- options and should be used in conjunction with the +p
- option. If you disable file output using -f, there will be
- no record kept of the image file generated. This option is
- not normally used.
-
- Unless file output is disabled (-f) POV-Ray will create an
- image file of the picture. This output file describes each
- pixel with 24 bits of color information. Currently, three
- output file formats are directly supported:
-
- +ft - Uncompressed Targa-24 format (IBM-PC Default)
- +fd - Dump format (QRT-style)
- +fr - Raw format - one file each for Red, Green and Blue.
-
-
- If the +d option is used and your computer supports a
- graphic display, then the image will be displayed while the
- program performs the ray tracing. On most systems, the
- picture displayed is not as good as the one created by the
- post-processor because it does not try to make optimum
- choices for the color registers.
-
- The +d parameters are listed in the executable
- documentation.
-
-
- -ifilename Set the input filename
- -ofilename Set output filename
-
- The default input filename is "object.pov". The default
- output filename is "data" and the suffix for your default
- file type.
-
- IBM-PC default file type is Targa, so the file is
- "data.tga".
-
- Amiga uses dump format and the default outfile name is
- "data.dis".
-
-
-
- POV-Ray V1.0 Page 15
-
-
- Raw mode writes three files, "data.red", "data.grn" and
- "data.blu". On IBM-PC's, the default extensions for raw mode
- are ".r8", ".g8", and ".b8" to conform to Piclab's "raw"
- format. Piclab is a widely used free-ware image processing
- program. Normally, Targa files are used with Piclab, not raw
- files.
-
- +a[xxx] Anti-alias - xxx is an optional tolerance level
-
- (default 0.3)
- -a Don't anti-alias
-
- Anti-aliasing is a technique used to make the ray traced
- image look smoother. Often the color difference between two
- objects creates a "jaggy" appearance. When anti-aliasing is
- turned on, POV-Ray attempts to "smooth" the jaggies by
- shooting more rays into the scene and averaging the results.
- This technique can really improve the appearance of the
- final image. Be forewarned though, anti-aliasing drastically
- slows the time required to render a scene since it has do
- many more calculations to "smooth" the image. Lower numbers
- mean more anti-aliasing and also more time. Use
- anti-aliasing for your final version of a picture, not the
- rough draft.
-
- The +a option enables adaptive anti-aliasing. The number
- after the +a option determines the threshold for the
- anti-aliasing.
-
- If the color of a pixel differs from its neighbor (to the
- left or above) by more than the threshold, then the pixel is
- subdivided and super-sampled.
-
- If the anti-aliasing threshold is 0.0, then every pixel is
- super-sampled. If the threshold is 1.0, then no
- anti-aliasing is done.
-
- The lower the contrast, the lower the threshold should be.
- Higher contrast pictures can get away with higher tolerance
- values.
-
- Good values seem to be around 0.2 to 0.4.
-
-
- The super-samples are jittered to introduce noise and make
- the pictures look better. Note that the jittering "noise"
- is non-random and repeatable in nature, based on an object's
-
-
- POV-Ray V1.0 Page 16
-
-
- 3-D orientation in space. Thus, it's okay to use
- anti-aliasing for animation sequences, as the anti-aliased
- pixels won't vary and flicker annoyingly from frame to
- frame.
-
- +bxxx Use an output file buffer of xxx kilobytes.
- (if 0, flush and write the output file on every line - this
- is the default)
-
- The +b option allows you to assign large buffers to the
- output file. This reduces the amount of time spent writing
- to the disk and prevents unnecessary wear. If this parameter
- is zero, then as each scanline is finished, the line is
- written to the file and the file is flushed. On most
- systems, this operation insures that the file is written to
- the disk so that in the event of a system crash or other
- catastrophic event, at least part of the picture has been
- stored properly and retrievably on disk.(see also the +c
- option below.)
- +b30 is a good value to use to speed up small renderings.
-
- +c Continue Rendering
-
- If you abort a render while it's in progress or if you used
- the -exxx option (below) to end the render prematurely, you
- can use the +c option to continue the render when you get
- back to it. This option reads in the previously generated
- output file, displays the image to date on the screen, then
- proceeds with the raytracing. In many cases, this feature
- can save you a lot of rendering time when things go wrong.
-
- +sxxx Start tracing at line number xxx.
- +exxx End tracing at line number xxx.
-
-
- The +s option allows you to begin the rendering of an image
- at a specific scan line. This is useful for rendering part
- of a scene to see what it looks like without having to
- render the entire scene from the top. You can also use this
- option to render groups of scanlines on different systems
- and concatenate them later.
-
- WARNING: Image files created on with different executables
- on the same or different computers may not look exactly the
- same due to different random number generators used in some
- textures. If you need to merge image files from different
-
-
- POV-Ray V1.0 Page 17
-
-
- computers contact the authors for more info.
-
- If you are merging output files from different systems, make
- sure that the random number generators are the same. If not,
- the textures from one will not blend in with the textures
- from the other.
-
- +q# Rendering quality
-
- The +q option allows you to specify the image rendering
- quality, for quickly rendering images for testing. The
- parameter can range from 0 to 9. The values correspond to
- the following quality levels:
-
- 0,1 Just show quick colors. Ambient lighting only.
- Quick colors are specified outside the texture block
- and affect only the low quality renders.
- 2,3 Show Diffuse and Ambient light
- 4,5 Render shadows
- 6,7 Create surface textures
- 8,9 Compute reflected, refracted, and transmitted rays.
-
- The default is +q9 (maximum quality) if not specified.
-
- +l<path> - Library search path
- The +l option may be used to specify a "library" pathname to
- look in for include, parameter and image files. Up to 10 +l
- options may be used to specify a search path. The home
- (current) directory will be searched first followed by the
- indicated library directories in order.
-
- Default Parameter File and Environment Variable
- You may specify the default parameters by modifying the file
- "povray.def" which contains the parameters in the above
- format. This filename contains a complete command line as
- though you had typed it in, and is processed before any
- options supplied on the command line are recognized. You may
- put commands on more than one line in the "povray.def"
- file.
-
- Examples:
-
- povray +ibox.pov +obox.tga +v +x +w320 +h200
-
- +ibox.pov = Use the scene file box.pov for input
- +obox.tga = Output the image as a
- Targa file to box.tga
- +v = Show line numbers while rendering.
-
-
- POV-Ray V1.0 Page 18
-
-
- +x = Allow key press to abort render.
- +w320 = Set image width to 320 pixels
- +h200 = Set image height to 200 pixels
-
- Some of these parameters could have been put in the
- POVRAYOPT environment variable to save typing:
-
- SET POVRAYOPT = +v +x +w320 +h200
-
- Then you could just type:
-
- povray +ibox.pov +obox.tga
-
- Or, you could create a file called POVRAY.DEF in the same
- directory as the scene file box.pov that contains the
- command line options.
-
- POVRAY.DEF contains "+v +x +w320 +h200"
-
- Then you could also type:
-
- povray +ibox.pov +obox.tga
-
- With the same results. You could also create an option file
- with a different name and specify it on the command line:
-
- For example, if QUICK.DEF contains "+v +x +w80 +h60"
-
- Then you could also type:
-
- povray +ibox.pov +obox.tga QUICK.DEF
-
- When POV-Ray sees QUICK.DEF, it will read it in just as if
- you typed it on the command line.
-
- The order that the options are read in for the IBM-PC
- version are as follows:
-
- POVRAYOPT environment variable
-
- POVRAY.DEF in current directory or,
- if not found, in library path
-
- Command line and command line option files
-
-
- For example, +v in POVRAY.DEF would override -v in
-
-
- POV-Ray V1.0 Page 19
-
-
- POVRAYOPT. +x on the command line would override -x in
- POVRAY.DEF and so on.
-
- Other computer's versions read in the POVRAY.DEF file before
- the POVRAYOPT environment variable.
-
-
- Beginning Tutorial
-
- This section describes how to create a scene using POV-Ray's
- scene description language and how to render this scene.
-
- Your First Image
-
- Let's create the scene file for a simple picture. Since
- raytracers thrive on spheres, that's what we'll render
- first.
-
- First, we have to tell POV-Ray where our camera is and where
- it's looking. To do this, we use 3D coordinates. The usual
- coordinate system for POV-Ray has the positive Y axis
- pointing up, the positive X axis pointing to the right, and
- the positive Z axis pointing into the screen as follows:
-
- ^+Y
- | /+Z
- | /
- | /
- |/ +X
- |-------->
-
-
- he the negative values of the axes point the other
- direction, as follows:
-
-
- ^+Y
- | /+Z
- | /
- | /
- -X |/ +X
- <-------|-------->
- /|
- / |
- / |
- -Z/ |
- v-Y
-
-
- Using your personal favorite text editor, create a file
- called "picture1.pov". Now, type in the following (note: The
-
-
- POV-Ray V1.0 Page 20
-
-
- input is case sensitive, so be sure to get capital and
- lowercase letters correct):
-
- #include "colors.inc" // The include files contain
- #include "shapes.inc" // pre-defined scene elements
- #include "textures.inc"
-
- camera {
- location <0 1 -3>
- direction <0 0 1.5>
- up <0 1 0>
- right <1.33 0 0>
- look_at <0 1 2>
- }
-
- The first include statement reads in definitions for various
- useful colors. The second and third include statements read
- in some useful shapes and textures respectively. When you
- get a chance, have a look through them to see but a few of
- the many possible shapes and textures available.
-
- Include files may be nested, if you like but only 10 files
- may be active at once.
- You may have as many include files as needed in a scene
- file. Include files may themselves contain include files,
- but you are limited to declaring includes only 10 "deep".
-
-
- Filenames specified in the include statements will be
- searched for in the home (current) directory first, and if
- not found, will then be searched for in directories
- specified by any "-l" (library path) options active. This
- would facilitate keeping all your "include" (.inc) files
- such as shapes.inc, colors.inc, and textures.inc in an
- "include" subdirectory, and giving an "-l" option on the
- command line to where your library of include files are.
-
- The camera declaration describes where and how the camera
- sees the scene. It gives X, Y, Z coordinates to indicate the
- position of the camera and what part of the scene it is
- pointing at. And the camera definition has direction vectors
- to describe the properties of the camera like the aspect
- ratio and lens length. Details can be found in the section
- on cameras.
-
- Briefly, "location <0 1 -3>" places the camera three units
- back from the center of the ray-tracing universe which is at
-
-
- POV-Ray V1.0 Page 21
-
-
- <0 0 0>. Remember that by default +Z is into the screen and
- -Z is back out of the screen.
-
- The line "direction <0 0 1.5>" says we're looking in the +Z
- direction with a "lens length" of 1.5 units. 1.5 is used
- instead of the default 1.0 to avoid "wide-angle" distortion
- that occurs when the lens is too short. In other words, the
- value 1.5 gives a slight "tele-photo" effect which reduces
- perspective distortion. The default value of 1 is used for
- historical reasons. The direction vector should be higher in
- most cases to avoid perspective distortion.
-
- The parameter "up <0 1 0>" tells POV-Ray that "up" or the
- top of the image is in the positive Y axis direction.
-
- The parameter "right <1.33 0 0>" indicates that "right" or
- the right side of the image is in the direction of the
- positive X axis.
-
- The size of the up and right values also indicate the aspect
- ratio of the scene. Most scenes are 1.33 times wider than
- they are high. This corresponds to the popular computer
- graphics image size of 640 pixels wide by 480 pixels high.
-
- Finally, "look_at <0 1 2>" rotates the camera to point at X,
- Y, Z coordinates <0 1 2>. A point 6 units in front of and 1
- unit higher than the camera. The look_at point should be the
- center of attention of your image.
-
- Now that the camera is set up to record the scene, let's
- place a red sphere into the scene:
-
- object {
- sphere { <0 1 2> 1 }
- texture {color Red } // Red is pre-defined in COLORS.INC
- // You could also use "color red 1"
- }
-
- The center of this sphere at Z=2 is approx. 5 units in front
- of the camera at Z=-3. It has a radius of 1 unit. Since the
- radius is 1/2 the width of a sphere, the sphere 2 units
- wide.
-
- Note that any parameter that changes the appearance of the
- surface (as opposed to the shape of the surface) is called a
- texture parameter and must be placed into a texture { ... }
-
-
- POV-Ray V1.0 Page 22
-
-
- block. In this case, we are just setting the color of the
- sphere using a pre-defined color from COLORS.INC. We could
- manually set this color by specifying the amount of red,
- green, and blue in the color like this:
-
- color red # green # blue #
-
- Values for red, green, and blue are between 0-1. If one is
- not specified it is assumed to be 0. Colors are explained in
- more detail later.
-
- One more detail, we need a light source. Until you create
- one, there is no light in this virtual world:
-
- object { light_source { < 2 4 -3 > color White } }
-
- This white light is 2 units to our right, and 4 units above
- the camera. The light_source is invisible, it only casts
- light, so no texture is needed.
-
- That's it! Close the file and render a small picture of it
- using this command:
-
- povray -w160 -h120 +p +x +d1 -v -ipicture1.pov
-
- If your computer does not use the command line, see the
- executable docs for the correct command to render a scene.
-
- You may set any other command line options you like, also.
- The scene is output to the image file DATA.TGA (or some
- suffix other than TGA if your computer uses a different file
- format). You can convert DATA.TGA to a GIF image using the
- commands listed in the docs included with your executable.
-
- Phong Highlights
-
- You've now rendered your first picture. Let's add a nice
- little specular highlight (shiny spot) to the sphere. It
- gives it that neat "computer graphics" look. Change the
- definition of the sphere to this:
-
- object {
- sphere{ <0 1 2> 1 }
- texture {
- color Red
- phong 1
- }
- }
-
-
-
- POV-Ray V1.0 Page 23
-
-
- Now render this the same way you did before. The phong
- keyword adds a highlight the same color of the light shining
- on the object. It adds a lot of credibility to the picture
- and makes the object look smooth and shiny. Lower values of
- phong will make the highlight less bright. Phong can be
- between 0 and 1.
-
-
- Simple Textures
-
- POV-Ray has some very sophisticated textures built-in and
- ready to use. Change the definition of our sphere to the
- following and then re-render it:
-
- object {
- sphere { <0 1 3> 1 }
- texture {
- DMFWood1 // Pre-defined texture from textures.inc
- scale <.2 .2 1> // Shrink the wood along the
- // X & Y axes and leave
- // the Z axis unchanged.
- phong 1
- }
- }
-
- The texture patterns are set up by default to give you one
- "feature" across a sphere of radius 1.0. A "feature" is very
- roughly defined as a color transition. For example, a wood
- texture would have one band on a sphere of radius 1.0. By
- scaling the wood by <.2 .2 1>, we shrink the texture to on
- the X and Y axes to give us about five bands. The Z axis is
- scaled by 1, which leaves it unchanged.
-
- Please note that "one feature across a unit sphere" is not a
- hard and fast rule. It's only meant to give you a rough idea
- for the scale to use for a texture.
-
- One note about the scale operation. You can magnify or
- shrink along each direction separately. The first term tells
- how much to magnify or shrink on the X axis or in the
- left-right direction. The second term controls the Y axis or
- up-down direction and the third term controls the Z axis or
- front-back direction. Scale values larger than 1 will
- stretch an element. Scale values smaller than one will
- squish an element. And scale value 1 will leave and element
- unchanged.
-
- Look through the TEXTURES.DOC file to see what textures are
- defined in TEXTURES.INC and try them out. Just insert the
-
-
- POV-Ray V1.0 Page 24
-
-
- name of the new texture where DMFWood1 is now and re-render
- your file.
-
- More Shapes
-
- So far, we've just used the sphere shape. There are many
- other types of shapes that can be rendered by POV-Ray.
- Let's try out a computer graphics standard - "The Checkered
- Floor." Add the following object to your .pov file:
-
- object {
- plane {<0 1 0> 0 }
- texture {
- checker
- color Red
- color Blue
- }
- }
-
-
- The object defined here is an infinite plane. The vector <0
- 1 0> is the surface normal of the plane (i.e., if you were
- standing on the surface, the normal points straight up.)
- The number afterward is the distance that the plane is
- displaced along the normal from the origin - in this case,
- the floor is placed at Y=0 so that the sphere at Y=1,
- radius= 1, is resting on it. The texture uses the checker
- color pattern and specifies that the two colors red and
- blue be used in the checker pattern.
-
- Looking at the floor, you'll notice that the wooden ball
- casts a shadow on the floor. Shadows are calculated very
- accurately by the ray tracer and creates precise, sharp
- shadows. In the real world, penumbral or "soft" shadows are
- often seen. POV-Ray does not simulate penumbral shadows, but
- they can be "faked." See the advanced section for tips if
- you need soft shadows.
-
-
- Quadric Shapes
-
- Another kind of shape you can use is called a quadric
- surface. There are many types of quadric surfaces. These are
- all described by a certain kind of mathematical formula (see
- the section on Quadrics in the next chapter). They include
- cylinders, cones, paraboloids (like a satellite dish),
- hyperboloids (saddle-shaped) and ellipsoids.
-
- All quadrics except for ellipsoids are infinite in at least
- one direction. For example, a cylinder has no top or bottom
- - it goes to infinity at each end. Quadrics all have one
-
-
- POV-Ray V1.0 Page 25
-
-
- common feature, if you draw any straight line through a
- quadric, it will hit the surface at most twice. A torus
- (donut), for example, is not a quadric since a line can hit
- the surface up to four times going through.
-
- Let's render a quadric. While we're at it, we'll add a few
- features to the surface. Add the following definition to
- your scene file:
-
- object {
- quadric { Cylinder_Y }
- texture {
- color green .5 // This color is 50% green
- reflection .5
- }
- scale <.4 .4 .4>
- translate <2 0 5>
- }
-
-
- This object is a cylinder along the Y (up-down) axis. It's
- green in color and has a mirrored surface, reflection 0.5,
- this means that half the light coming from the cylinder is
- reflected from other objects in the room. A reflection of
- 1.0 is a perfect mirror.
-
- The object has been shrunk by scaling it by <0.4 0.4 0.4>.
- Note that since the cylinder is infinite along the Y axis,
- the middle term is kind of pointless. One four tenths of
- infinity is still infinity.
-
- Note: Scene elements can't be scaled by zero, that will
- cause a divide by zero floating point error. Use a scale
- value of 1 if you wish to leave a component unchanged.
-
- Finally, the cylinder has been moved back and to the right
- by the translate command so you can see it more clearly.
-
- Scene Description Language Reference
-
- The Scene Description Language allows the user to describe
- the world in a readable and convenient way.
-
- Comments
- Comments are text in the scene file included to make the
- scene file easier to read or understand. They are ignored by
- the ray tracer and are there for humans to read.
-
- There are two types of comments in POV-Ray:
-
-
-
- POV-Ray V1.0 Page 26
-
-
- // This line is ignored
-
- Anything on a line after a double slash // is ignored by the
- ray tracer. You can have scene file information on the line
- in front of the comment, as in:
-
- object { // this is an object
-
- The other type of comment is used for multiple lines.
-
- /* These lines
- Are ignored
- By the
- Raytracer */
-
- This type of comment starts with /* and ends with */
- everything in-between is ignored. This can be useful if you
- want to temporarily remove elements from a scene file. Just
- comment them out, comments and all.
-
- Use comments liberally and generously. Well used, they
- really improve the readability of scene files.
-
- /*...*/ comments can "comment out" lines containing the
- other // comments, and thus can be used to temporarily or
- permanently comment out parts of a scene.
- /*..*/ comments can be nested, the following is legal:
-
- /* This is a comment
- // This too
- /* This also */
- */
-
-
- Include Files
- The language allows include files to be specified by placing
- the line:
-
- #include "filename.inc"
-
- at any point in the input file . The filename must be
- enclosed in double quotes and may be up to 40 characters
- long (or your computer's limit), including the two
- double-quote (") characters.
-
- The include file is read in as if it were inserted at that
- point in the file. Using include is the same as actually
-
-
- POV-Ray V1.0 Page 27
-
-
- cutting and pasting the entire contents of this file into
- your scene.
-
- Include files may be nested. You may have at most 10
- include'd files per scene trace, whether nested or not.
-
- Generally, include files have data for scenes, but are not
- scenes in themselves. Scene files should end in .pov.
-
- Float
- A float is a floating point number, or a number with a
- decimal point.
-
- Floats are represented by an optional sign (-), some digits,
- an optional decimal point, and more digits. This version
- supports scientific notation for exponents. The following
- are all valid floats:
- 1.0 -2.0 -4 34 3.4e6 2e-5 .3 0.6
-
- Vector
- Vectors are arrays of three or more floats. They are
- bracketed by angle brackets ( < and > ), and the three terms
- usually represent x, y, and z. For example:
-
- < 1.0 3.2 -5.4578 >
-
- Vectors often refer to relative points. For example, the
- vector:
-
- <1 2 3>
-
- means the point that's 1 unit to the right, 2 units up, and
- 3 units in front the center of the "universe" at <0 0 0>.
- Vectors are not always points, though. They can also refer
- to an amount to size, move, or rotate a scene element.
-
- Declare
- The parameters used to describe the scene elements can be
- tedious to use at times. Some parameters are often repeated
- and it seems wasteful to have to type them over and over
- again. To make this task easier, the program allows users to
- create synonyms for a pre-defined set of parameters and use
- them anywhere the parameters would normally be used. For
- example, the color white is defined in the POV-Ray language
- as:
-
- color red 1 green 1 blue 1
-
- This can be pre-defined in the scene as:
-
-
-
- POV-Ray V1.0 Page 28
-
-
- #declare White = color red 1 green 1 blue 1
-
- and then substituted for the full description in the scene
- file, for example:
-
- object {
- sphere { <0 0 0> 1 }
- texture { color red 1 green 1 blue 1 }
- }
-
- becomes:
- #declare White = color red 1 green 1 blue 1
-
- object {
- sphere { <0 0 0> 1 }
- texture { color White }
- }
-
- This is much easier to type and to read. The pre-defined
- element may be used many times in a scene.
-
- You use the keyword "declare" to pre-define a scene element
- and give it a one-word synonym. This pre-defined scene
- element is not used in the scene until you invoke its
- synonym. Shapes, textures, objects, colors, numbers and more
- can be predefined.
-
- Pre-defined elements may be modified when they are used, for
- example:
-
- #declare Mickey = // Pre-define a union called Mickey
- union {
- sphere { <0 0 0> 2 }
- sphere { <-2 2 0> 1}
- sphere { <2 2 0> 1}
- }
-
- // Use Mickey
- object{
- union {
- Mickey
- scale <3 3 3>
- rotate <0 20 0>
- translate <0 8 10>
- }
- texture {
- color red 1
-
-
- POV-Ray V1.0 Page 29
-
-
- phong .7
- }
- }
-
- This scene will only have one "Mickey", the Mickey that is
- described doesn't appear in the scene. Notice that Mickey is
- scaled, rotated, translated, and a texture is added to it.
- The Mickey synonym could be used many times in a scene file,
- and each could have a different size, position, orientation,
- and texture.
-
- Declare is especially powerful when used to create a complex
- shape or object. Each part of the shape or object is defined
- separately using declare. These parts can be tested,
- rotated, sized, positioned, and textured separately then
- combined in one shape or object for the final sizing,
- positioning, etc. For example, you could define all the
- parts of a car like this:
-
- #declare Wheel = shape_type {...}
- #declare Seat = shape_type {...}
- #declare Body = shape_type {...}
- #declare Engine = shape_type {...}
- #declare Steering_Wheel = shape_type {...}
-
- #declare Car =
- union {
- shape_type { Wheel translate <1 1 2>}
- shape_type { Wheel translate <-1 1 2>}
- shape_type { Wheel translate <1 1 -2>}
- shape_type { Wheel translate <-1 1 -2>}
- shape_type { Seat translate <.5 1.4 1>}
- shape_type { Seat translate <-.5 1.4 1>}
- shape_type { Steering_Wheel translate <-.5 1.6 1.3>}
- shape_type { Body texture { Brushed_Steel } }
- shape_type { Engine translate <0 1.5 1.5>
- }
-
- and then it like this:
-
- // Here is a car
- object {
- union { Car }
- translate <4 0 23>
- }
-
- Notice that the Wheel and Seat are used more than once. A
-
-
- POV-Ray V1.0 Page 30
-
-
- declared element can be used as many times as you need.
- Declared elements may be placed in "include" files so they
- can be used with more than one scene.
- Declare can be used anywhere in a scene or include file.
-
- There are several files included with POV-Ray that use
- declare to pre-define many shapes, colors, and textures. See
- the archive INCLUDE for more info.
-
- NOTE: Declare is not the same as the C language's define.
- Declare creates an internal object of the type specified
- that POV-Ray can recognize when it is prefaced by the object
- type, while define substitutes like a macro. The only
- declared object type that doesn't need to be prefaced with a
- keyword is numeric, which can be used wherever a number is
- expected.
-
- What can be declared?
- Here's a list of what can be declared, how to declare the
- element, and how to use the declaration. See the reference
- section for element syntax.
-
- Objects:
- #declare Tree = object {...}
-
- object {
- Tree
- (object_modifiers)
- }
-
- Composite Objects:
- #declare Duck = composite {...}
-
- composite {
- Duck
- (object_modifiers)
- }
-
- Shapes:
- (Any shape type may be declared, sphere, box,
- height_field, blob,
- etc.)
- #declare Disk = shape_type {...}
-
- object {
- shape_type { Disk (shape_modifiers) }
- (object_modifiers)
- }
-
-
- POV-Ray V1.0 Page 31
-
-
-
- Specific Shape Example:
- #declare BigBox = box {<0 0 0> <10 10 10>}
-
- object {
- box { BigBox (shape_modifiers) }
- (object_modifiers)
- }
-
-
- CSG Shapes:
- Declare and use these just like a normal shape type. The
- CSG shape types are union, intersection, and difference.
-
- #declare Moose = csg_shape_type {...}
-
- object {
- shape_type { Moose (shape_modifiers) }
- (object_modifiers)
- }
-
- Textures:
- #declare Fred = texture {...}
-
- object {
- sphere { <0 0 0> 1 }
- texture {
- Fred
- (texture_modifiers)
- }
- }
-
- Layered textures:
- #declare Fred =
- texture {...}
- texture {...}
- texture {...} (etc.)
-
- object {
- sphere { <0 0 0> 1 }
- texture {
- Fred
- (texture_modifiers)
- }
- }
-
-
-
-
- POV-Ray V1.0 Page 32
-
-
- Colors:
- #declare Fred = color red # green # blue # alpha #
-
- object {
- sphere { <0 0 0> 1 }
- texture {
- color Fred
- }
- }
-
- Numeric Values:
- #declare Fred = 3.45
- #declare Fred2 = .02
- #declare Fred3 = .5
-
- object { // Use the numeric value synonym
- // anywhere a number would go
- sphere { <-Fred 2 Fred> Fred }
- texture {
- color red 1
- phong Fred3
- }
- }
-
- Camera:
- #declare Fred = camera {..}
-
- camera { Fred }
-
- Vectors:
- #declare Fred = <9 3 2>
- #declare Fred2 = <4 4 4>
-
- object {
- sphere { Fred 1 }
- scale Fred2
- }
-
- Light sources:
- #declare Light1 = light_source {...}
-
- object {
- light_source { Light1 (modifiers) }
- }
-
-
- Camera
- Every scene in POV-Ray must have one and only one camera
-
-
- POV-Ray V1.0 Page 33
-
-
- definition. The camera definition describes the position,
- angle and properties of the camera viewing the scene.
- POV-Ray uses this definition to do a simulation of the
- camera in the ray-tracing universe and "take a picture" of
- your scene.
-
- The camera simulated in POV-Ray is a pinhole camera. Pinhole
- cameras have a fixed focus so all elements of the scene will
- always be perfectly in focus. The pinhole camera is not able
- to do soft focus or depth of field effects.
-
- The camera block tells the ray tracer the location and
- orientation of the camera or viewpoint. The camera is
- described by several vectors -
- Location, Direction, Up, and Right, Sky, and Look_at.
-
- Location specifies the position of the camera in X, Y, Z
- coordinates. The camera can be positioned at any point in
- the ray-tracing universe.
-
- Telephoto and Wide-Angle
- Direction serves two purposes. It is a vector describing
- what direction the camera is pointing. The direction vector
- is usually set to point straight ahead. The look_at vector
- described below is used to point the camera. It is also used
- as a kind of lens length setting. Shorter is more wide
- angle, longer is more telephoto.
-
- Be careful with short direction vector lengths like 1.0 and
- less. You'll end up with distortion on the edges of your
- images. Objects will appear to be shaped strangely. If this
- happens, move the location back and make the direction
- vector longer.
-
- The Up vector describes the "up" direction of the camera to
- POV-Ray. It tells POV-Ray where the top of your screen is.
-
- The Right vector describes the direction to the right of the
- camera. It tells POV-Ray where the right side of your screen
- is.The sign of the right vector also determines the
- "handedness" of the coordinate system in use. A normal
- (left-handed) right statement would be:
-
- right <1.33 0 0>
-
- To use a right-handed coordinate system, as is popular in
- some CAD programs and some other ray-tracers use a right
-
-
- POV-Ray V1.0 Page 34
-
-
- like:
-
- right <-1.33 0 0>
-
- Some CAD systems, like AutoCAD, also have the assumption
- that the Z axis is the "elevation" and is the "up" direction
- instead of the Y axis. If this is the case you will want to
- change your "up" statement to:
-
- up <0 0 1>
-
- Together the Up and Right vectors define the aspect ratio of
- the image being rendered. These vectors are described in
- more detail later in this document.
-
- Here's a basic declaration of a camera:
-
- camera {
- location <0 0 0>
- direction <0 0 1>
- up <0 1 0>
- right <1.33 0 0>
- }
-
- The above vectors are set to their default values. If you do
- not specify a value then these defaults are used. For
- instance, if your camera definition didn't have the line "up
- <0 1 0>", the up vector would still be set to "up <0 1 0>"
- because POV-Ray does that automatically, by default.
-
- These four vectors may be specified in any order. They
- should be specified before the modifiers sky and look_at
- which are described below.
-
- Sky and Look_at
- If the camera always pointed straight along an X, Y or Z
- axis this definition format would be easy enough. In almost
- all cases however, the camera angle is much more
- interesting. This format becomes cumbersome then because its
- difficult to compute the vectors by hand.
-
- Fortunately, POV-Ray doesn't require you to do any vector
- computations. The vectors Sky and Look_at make it easy to
- point the camera just the direction you'd like.
-
- The look_at keyword defines the specific point the camera
- should be pointing at. The camera is rotated as required to
-
-
- POV-Ray V1.0 Page 35
-
-
- point the "center of the lens" directly at that point.
-
- Normally, you will use the look_at keyword, not the
- direction vector to point the camera. The look_at command is
- the best way to rotate the camera to point at a scene
- element. Also, it should always be last in the camera
- definition. Rotate and translate may be used in the camera
- definition, but they should be used before look_at or the
- camera will probably not remain looking at the point
- specified.
-
- The sky keyword tells the camera where the sky in the
- ray-tracing universe is. POV-Ray uses the sky vector to keep
- the camera's up direction aligned as closely as possible to
- the sky.
-
- One subtle point: the sky direction is not necessarily the
- same as the up direction. For example, consider the
- following situation:
-
-
- S^
- | /U
- |/
- C
- \
- \
- \
- O
-
- If you said that the camera C has a sky direction S and is
- looking at O, the up direction will not point to the sky.
- Imagine hanging your camera from a string attached at the
- top of the camera. The string points to the sky. The up
- keyword is like putting an antenna on your camera. If you
- point the camera downwards using look_at, the antenna will
- no longer point straight up.
-
- Note that the default value for sky is <0 1 0>. Sky affects
- the other vectors when you use look_at.
-
- Sky must be defined before the look_at point.
-
-
- Aspect Ratio
- As mentioned before, the length of the up and right vectors
- controls the aspect ratio of the image. Typically computer
-
-
- POV-Ray V1.0 Page 36
-
-
- screens have an aspect ratio (width to height ratio) of 4:3.
- Most of the sample images distributed with POV-Ray were
- designed to fill the "landscape" orientation of a typical
- screen and they generally define "up <0 1 0>" and "right
- <1.33 0 0>". Thus the right-to-up ratio is 1.33:1 or about
- 4:3. A tall, slim picture might use "up <0 5 0> right <1 0
- 0>".
-
- Note that this is the ratio of the overall image and is
- independent of pixel size or shape. If you assume square
- pixels then the command line values "+w" and "+h" should
- also have this same ratio. If you have non-square pixels you
- should adjust the "+w" & "+h" values... not the up & right
- values.
-
- Suppose we have "up <0 1 0> right <1.33 0 0>" giving a 4:3
- ratio. On an IBM VGA 640x480 mode the pixels are square so
- you would specify "+w640 +h480" on the command line. Note
- that 640:480 = 4:3 = 1.33:1. However there is a mode on
- Amiga that has wide, flat pixels which fills the screen when
- 320 by 400 pixels are used. You would still keep the same up
- & right vectors because the image itself should still look
- 4:3 wide. But you would specify "+w320 +h400" on the command
- line to compensate for non-square pixels.
-
-
- Translating and Rotating the Camera
- Also, the "translate" and "rotate" commands can re-position
- the camera once you've defined it.
-
- For example:
- camera {
- location <0 0 0>
- direction <0 0 1>
- up <0 1 0>
- right <1 0 0>
- translate <5 3 4>
- rotate <30 60 30>
- }
-
- In this example, the camera is created, then translated to
- another point in space and rotated by 30 degrees about the X
- axis, 60 degrees about the Y axis, and 30 degrees about the
- Z axis.
-
- light_source
- Syntax: light_source { <center> color ...}
-
-
-
- POV-Ray V1.0 Page 37
-
-
- Light sources are treated like shapes, but they are
- invisible points from which light rays stream out. They
- light objects and create shadows and highlights. Because of
- the way ray tracing works, lights do not reflect. You can
- use many light sources in a scene, but each light source
- used will increase rendering time. The brightness of a light
- is determined by its color. A bright color is a bright
- light, a dark color, a dark one. White is the brightest
- possible light , Black is completely dark and Grey is
- somewhere in the middle.
- The syntax for a light source is:
-
- light_source { <X Y Z> color red # green # blue #}
-
- Where X, Y and Z are the coordinates of the location and
- color , is any color or color identifier. For example,
-
- light_source { <3 5 -6> color Grey}
-
- Is a Grey light at X=3, Y=5, Z=-6.
-
- spotlight light_source
- Syntax: light_source { <center> color red # green # blue
- #
- spotlight
- point_at <point>
- radius #
- falloff #
- tightness #
- }
-
- A spotlight is a point light source where the rays of light
- are constrained by a cone. The light is bright in the center
- of the spotlight and falls off/darkens to soft shadows at
- the edges of the circle.
-
-
- (+) Spotlight
- /|\
- / | \
- / ||| \
- / ||| \
- / ||||| \
- / ||||| \
- +-+ = radius
- +-----*-----+ =
- ^ point_at
-
-
-
- POV-Ray V1.0 Page 38
-
-
- The center and color of the spotlight is specified the same
- way as a normal light_source.
-
- Point_at <point> is the location that the cone of light is
- aiming at.
-
- The radius # is the radius in degrees of the bright circular
- hotspot at the center of the spotlight's area of affect.
-
- The falloff # is the falloff radius of the spotlight area in
- degrees. This is the value where the light "falls off" to
- zero brightness. Falloff should be larger than
- the radius. Both values should be between 1 and 180.
-
- The tightness value is how fast the light falls off at the
- edges. Low values will make the spot have very soft edges.
- High values will make the edges sharper, the spot
- "tighter".
-
- Spotlights may used anyplace that a normal light source is
- used. Like normal light sources, they are invisible points.
- They are treated as shapes and may be included in CSG
- shapes.
-
- Example:
- // This is the spotlight.
- light_source {
- <10 10 0>
- color red 1 green 1 blue 0.5
- spotlight
- point_at <0 1 0>
- tightness 50
- radius 11
- falloff 25
- }
-
-
- no_shadow
- Syntax: object { shape {...} texture {...} no_shadow }
-
- You may specify the no_shadow keyword in object and that
- object will be transparent to all light sources. It will not
- cast a shadow. This is useful for special effects and for
- creating the illusion that a light source actually is
- visible.
- Here are two examples of "visible" light sources using
- no_shadow:
-
-
-
- POV-Ray V1.0 Page 39
-
-
- // This a light masquerading as the sun.
- // Note: The texture does not affect the light,
- // only the sphere
- object {
- union { // the union is a CSG shape type,
- // see CSG for more info
- sphere { <0 50 200> 100 }
- light_source { <0 50 200> color red 1 green .5 }
- }
- texture {
- color red 1 green .5
- ambient 1
- diffuse 0
- }
- no_shadow
- }
- // This is the spotlight trying to be a small sphere.
- object {
- union { // the union is a CSG shape type,
- // see CSG for more info
- sphere { <10 10 0> 0.5 }
- light_source {
- <10 10 0>
- color red 1 green 1 blue 0.5
- spotlight
- point_at <0 1 0>
- tightness 50
- radius 11
- falloff 25
- }
- }
- texture { color White ambient 1 diffuse 0 }
- no_shadow
- }
-
- If no_shadow were not used here, the light inside the
- spheres would not escape the sphere and would not show up in
- the scene. The sphere would, in effect, cast a shadow over
- everything.
-
- Note that it does not mean 'this light_source casts no
- shadow'. No_shadow affects the entire object and means 'this
- object casts no shadow'." Although the no_shadow keyword is
- most often used with light_sources, it can be used in any
- object.
-
-
-
- POV-Ray V1.0 Page 40
-
-
-
-
- Objects
-
- An object is made out of three basic elements: a shape, a
- texture, and transformations.
-
- The shape is the form of the object, like a sphere, a cone
- or a cylinder. The shape can be any standard shape type or
- it can be a CSG shape type, like union, or intersection. The
- CSG shape types create one shape that is made up of multiple
- shapes. Any shape may have its own texture.
-
- The texture describes what a shape or object looks like, ie.
- its material.
-
- The transformations tell the ray tracer how to move, size or
- rotate the shape and/or the texture in the scene.
-
- Here's the basic layout for an object:
- object {
- shape {
- (shape parameters)
- [shape transformations]
- }
- [shape only transformations]
-
- texture {
- (texture parameters)
- [texture transformations]
- }
- [object,shape and texture, transformations]
- }
-
- For example:
-
- object {
- sphere { <1 2 3> 2 }
- texture { marble scale <2 2 2> }
- scale <5 5 5> // This transformation scales
- // both shape and texture
- }
-
- CSG shapes are the same:
-
- object {
- intersection { Disk_Y }
- scale < .2 1 .2 > // This scales shape only
- texture {
-
-
- POV-Ray V1.0 Page 41
-
-
- marble
- scale <2 2 2> // This scales texture only
- }
- scale <2 1 3> // This scales both shape and texture
- }
-
- Quick Render Color
-
- When used outside of the texture block in an object, the
- color keyword determines what color to use for a low quality
- rendering when textures are ignored. When the quality
- command option is set to +q0, +q1, ..., +q5, the program
- will use the quick color for objects instead of the texture.
- Normally, +q is set to +q9 and the quick color won't affect
- the object.
-
- Example:
- object {
- shape { ... }
- texture { ... }
- color red # green # blue # // This is the quick
- // render color
- }
-
- Transformations
-
- Often, vectors are used as a convenient notation but don't
- represent a point in space. This is the case for the
- transformations scale, rotate, and translate. Scale sizes a
- shape, texture or object. Translate moves a shape, texture
- or object. And rotate turns a shape, texture or object.
-
- Note: Transformations are relative to the current
- transformation of the scene element. That is, they are
- additive. For example, scale <2 0 0> scale <2 0 0> actually
- scales by 4 in X direction.
-
- Most scene elements like objects, shapes, and lights can be
- translated, rotated, and scaled just like surfaces.
-
- If an object is transformed, all textures attached to the
- object at that time are transformed as well. This means that
- if you have a translate, rotate, or scale in an object
- before a texture, the texture will not be transformed. If
- the scale, translate, or rotate is after the texture, the
- texture will be transformed.
-
- For example,
- object {
- sphere { <0 0 0> 1}
- texture { marble }
-
-
- POV-Ray V1.0 Page 42
-
-
- scale <3 3 3> // This scale affects the
- // shape and texture
- }
- object {
- sphere { <0 0 0> 1}
- scale <3 3 3> // This scale affects the
- // shape only
- texture { marble }
- }
-
-
-
- Scale
- Syntax:
- scale <xs ys zs>
-
- Scale the element by xs units in the left/right direction,
- ys units in the up/down direction and zs units in the
- front/back direction. Scale is used to "stretch" or "squish"
- an element. Values larger than 1 stretch the element on that
- axis. Values smaller than one are used to squish the element
- on that axis. Scale is relative to the current element size.
- If the element has been previously re-sized using scale,
- then scale will size relative to the new size. Multiple
- scale values may used.
-
- Rotate
- Syntax:
- rotate <xr yr zr>
-
- Rotate the element xr degrees about the X axis, then yr
- degrees about the Y axis, then zr degrees about the Z axis.
- Rotate turns the object relative to its current position.
- Multiple rotate values may used.
-
- Note that the order of the rotations does matter and you
- should use multiple rotation statements to get a correct
- multiple rotation. You should only rotate on one axis at a
- time. As in,
- rotate <0 30 0> // 30 degrees around Y axis then,
- rotate <-20 0 0> // -20 degrees around X axis then,
- rotate <0 0 10> // 10 degrees around Z axis.
-
- Note also that rotate always rotates around the point <0 0
- 0> so if you translate the object before rotating, it will
- be rotated "in orbit" around <0 0 0>.
-
- Translate
- Syntax:
- translate <x y z>
-
-
- POV-Ray V1.0 Page 43
-
-
-
- Move the element x units to the right, y units up, and z
- units away from us. Translate moves the element relative to
- it's current position. For example,
-
- object {
- sphere { <10 10 10> 1 }
- texture { color Green }
- translate <-5 2 1>
- }
-
- Will move the sphere from <10 10 10> to <5 12 11> not <5 2
- 1>. Translating by zero will leave the element unchanged on
- that axis. For example,
-
- object {
- sphere { <10 10 10> 1 }
- texture { color Green }
- translate <0 0 0>
- }
-
- Will not move the sphere at all.
-
- Multiple translates may be used.
-
-
- Transformation order
- Generally, this is the order that you should perform these
- operations in. If you scale after you translate, the scale
- will multiply the translate amount. For example:
-
- translate < 5 6 7>
- scale <4 4 4>
-
- Will translate to 20, 24, 28 instead of 5, 6, 7. Be careful
- when transforming to get the order correct for your
- purposes.
-
-
- POV-Ray V1.0 Page 44
-
-
-
-
- "Handedness" -- Rotation Direction
- To work out the rotation directions, you must perform the
- famous "Computer Graphics Aerobics" exercise. Hold up your
- left hand. point your thumb in the positive direction of the
- axis you want to rotate about. Your fingers will curl in the
- positive direction of rotation. This is the famous
- "left-hand coordinate system".
-
- ^
- +Y| +Z/ _
- | /_| |_ _
- | _| | | |/ \
- | | | | | | |
- | /| | | | | V
- -X |/ | | | | | +X
- <----------+--|-|-|-|-|------>
- /| | \____
- / | | ___|
- / | \ /
- / | | /
- -Z/ -Y|
- / |
-
- In this illustration, the left hand is curling around the X
- axis. The thumb points in the positive X direction and the
- fingers curl over in the positive rotation direction.
-
- If you want to use a right hand system, as some CAD systems
- such as AutoCAD do, the right vector in the camera needs to
- be changed. See the detailed description of the camera, and
- use your right hand for the "Aerobics".
-
- Shapes
-
- Shapes describe the shape of an object without mentioning
- any surface characteristics like color, surface lighting and
- reflectivity.
-
- Spheres
- Since spheres are so common in ray traced graphics, A sphere
- primitive has been added to the system. This primitive will
- render much more quickly than the corresponding quadric
- shape. The syntax is:
-
- sphere { <center> radius }
-
- You can also add translations, rotations, and scaling to the
- sphere. For example, the following two objects are
-
-
- POV-Ray V1.0 Page 45
-
-
- identical:
-
- object{
- sphere { < 0.0 25.0 0.0 > 10.0 }
- texture {
- color Blue
- phong .5
- }
- }
-
- object {
- sphere { < 0.0 0.0 0.0 > 1.0
- scale <10.0 10.0 10.0>
- translate <0.0 25.0 0.0>
- }
- texture {
- color Blue
- phong .5
- }
- }
-
- Note that Spheres may only be scaled uniformly. You cannot
- use:
-
- scale <10.0 5.0 2.0>
-
- on a sphere. If you need oblate (flattened) spheroids, use a
- quadric "Ellipsoid" shape instead, as it can be arbitrarily
- scaled in any dimension.
-
- Planes
- Another primitive provided to speed up the raytracing is the
- plane. This is a flat infinite plane. To declare a plane,
- you specify the direction of the surface normal to the plane
- (the up direction) and the distance from the origin of the
- plane to the world's origin. As with spheres, you can
- translate, rotate, and scale planes.
- Examples:
- A plane in the X-Z axes 10 units below the world origin.
- Like a floor or ceiling.
-
- plane { <0.0 1.0 0.0> -10.0 }
-
- A plane in the X-Z axes 10 units above the world origin.
- Like a wall in front of the viewer.
-
- plane { <0.0 1.0 0.0> 10.0 }
-
-
-
- POV-Ray V1.0 Page 46
-
-
- A plane in the X-Y axes 10 units behind the world origin.
- Like a wall to the side of the viewer.
-
- plane <0.0 0.0 1.0> -10.0 }
-
- Boxes
- A simple box can be defined by listing two corners of the
- box like this:
-
- box { <corner1> <corner2> }
- box { <0 0 0> <1 1 1> }
-
- Corner1 should be smaller than corner2. That is, each
- element of Corner1 should be less than the corresponding
- element in Corner2. If any elements of Corner1 are larger
- than Corner2, the box will not appear in the scene.
-
- Corner1 and corner2 are XYZ points. Boxes are calculated
- efficiently and make good bounding shapes. As with all
- shapes, they can be translated, rotated and scaled.
-
- Quadric Shapes
- Quadric Surfaces can produce shapes like ellipsoids
- (spheres), cones, cylinders, paraboloids (dish shapes), and
- hyperboloids (saddle or hourglass shapes).
-
- The easiest way to use these shapes is to include the
- standard file "SHAPES.INC" into your program. It contains
- several pre-defined quadrics and you can transform these
- pre-defined shapes (using translate, rotate, and scale) into
- the ones you want.
-
- To be complete, here are the mathematical principles behind
- quadric surfaces. Those who are not interested in the
- mathematical details can skip to the next section.
- The quadric:
- quadric {
- <A B C>
- <D E F>
- <G H I>
- J
- }
-
- defines a surface in three dimensions which satisfies the
- following equation:
-
- A y^2 + B y^2 + C z^2
- + D xy + E xz + F yz
- + G x + H y + I z + J = 0
-
-
- POV-Ray V1.0 Page 47
-
-
-
- Different values of A,B,C,...J will give different shapes.
- So, if you take any three dimensional point and use its x,
- y, and z coordinates in the above equation, the answer will
- be 0 if the point is on the surface of the object. The
- answer will be negative if the point is inside the object
- and positive if the point is outside the object. Here are
- some examples:
- X**2 + Y**2 + Z**2 - 1 = 0 Sphere
- X**2 + Y**2 - 1 = 0 Cylinder along the Z axis
-
- X**2 + Y**2 - Z**2 = 0 Cone along the Z axis
-
- Quadric surfaces the easy way
- The file "shapes.inc" uses the declare command to pre-define
- many quadric surfaces. You can invoke them by using the
- syntax,
-
- quadric { Quadric_Name }
-
- The pre-defined quadrics are centered about the origin <0 0
- 0> and have a radius of 1. Don't confuse radius with width.
- The radius is half the diameter or width making the standard
- quadrics 2 units wide.
-
- Some of the pre-defined quadrics are,
-
- Ellipsoid
- Cylinder_X, Cylinder_Y, Cylinder_Z
- QCone_X, QCone_Y, QCone_Z
- Paraboloid_X, Paraboloid_Y, Paraboloid_Z
-
- For a complete list, see the file SHAPES.INC.
-
- To use the pre-defined quadrics, you describe shapes simply
- as follows:
-
- #include "colors.inc"
- #include "shapes.inc" // The shape definitions are
- // in this file
- #include "textures.inc"
-
- quadric {
- Cylinder_X // This is the predefined quadric name
- scale <50 50 50>
- rotate <0 45 0>
- rotate <30 0 0>
- translate <2 5 6>
-
-
- POV-Ray V1.0 Page 48
-
-
- }
-
- You may have as many transformation commands (scale, rotate,
- and translate) as you like in any order. Usually, however,
- it's best to do a scale first, one or more rotations, then
- finally a translation. Otherwise, the results may not be
- what you expect.
-
- The transformations always transform the object about the
- origin. If you have a sphere at the origin and you translate
- it then rotate it, the rotation will spin the sphere around
- the origin like planets about the sun.
-
- Triangles
- The triangle shape is available in order to make more
- complex objects than the built-in shapes will permit.
- Triangles are usually not created by hand, but are converted
- from other files or generated by utilities.
-
- There are two different types of triangles: flat shaded
- triangles and smooth shaded (Phong) triangles.
-
- Flat shaded triangles are defined by listing the three
- vertices of the triangle. For example:
-
- triangle { <0 20 0> <20 0 0> <-20 0 0> }
-
- The smooth shaded triangles use a formula called Phong
- normal interpolation to calculate the surface normal for the
- triangle. This makes the triangle appear to be a smooth
- curved surface. In order to define a smooth triangle,
- however, you must supply not only the vertices,but also the
- surface normals at those vertices. For example:
-
- smooth_triangle {
- < 0 30 0 > <0 .7071 -.7071>
- < 40 -20 0 > <0 -.8664 -.5 >
- <-50 -30 0 > <0 -.5 -.8664>
- }
-
- As with the other shapes, triangles can be translated,
- rotated, and scaled.
-
- NOTE 1: Triangles cannot be used in CSG intersection or
- difference types (described next) since triangles have no
- clear "inside". The CSG union type works acceptably, but
- with no real difference from a composite made up of TRIANGLE
- primitives.
-
-
- POV-Ray V1.0 Page 49
-
-
-
- Quartic Surfaces
- Quartics are just like quadrics in that you don't have to
- understand what one is to use one. The file SHAPESQ.INC has
- plenty of pre-defined quartics for you to play with. The
- most common one is the torus or donut. The syntax for using
- a pre-defined quartic is:
-
- quartic { Quartic_Name (sturm) }
-
- They may be scaled, rotated, and translated like all other
- shape types.
-
- Quartics use highly complex computations and will not always
- render perfectly. If the quartic is not smooth, has
- dropouts, or extra random pixels, try using the optional
- keyword "sturm" in the definition. This will cause a slower,
- but more accurate calculation method to be used. Usually,
- but not always, this will solve the problem. If sturm
- doesn't work, try rotating, or translating the shape by some
- small amount. See the archive MATH for examples of quartics
- in scenes.
-
- Here's a more mathematical description of quartics for those
- who are interested.
- Quartic surfaces are 4th order surfaces, and can be used to
- describe a large class of shapes including the torus, the lemniscate,
- etc. The general equation for a quartic equation in three
- variables is (hold onto your hat):
-
- a00 x^4 + a01 x^3 y + a02 x^3 z+ a03 x^3 + a04 x^2 y^2+
-
- a05 x^2 y z+ a06 x^2 y + a07 x^2 z^2+a08 x^2 z+a09 x^2+
- a10 x y^3+a11 x y^2 z+ a12 x y^2+a13 x y z^2+a14 x y z+
- a15 x y + a16 x z^3 + a17 x z^2 + a18 x z + a19 x+
- a20 y^4 + a21 y^3 z + a22 y^3+ a23 y^2 z^2 +a24 y^2 z+
- a25 y^2 + a26 y z^3 + a27 y z^2 + a28 y z + a29 y+
- a30 z^4 + a31 z^3 + a32 z^2 + a33 z + a34
-
- To declare a quartic surface requires that each of the
- coefficients (a0 -> a34) be placed in order into a single
- long vector of 35 terms.
-
- As an example, the following object declaration is for a
- torus having major radius 6.3 minor radius 3.5 (Making the
- maximum width just under 10).
- //Torus having major radius sqrt(40), minor radius sqrt(12)
-
-
- POV-Ray V1.0 Page 50
-
-
- object {
- quartic {
- < 1.0 0.0 0.0 0.0 2.0 0.0 0.0 2.0 0.0
-
- -104.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-
- 0.0 0.0 1.0 0.0 0.0 2.0 0.0 56.0 0.0
-
- 0.0 0.0 0.0 1.0 0.0 -104.0 0.0 784.0 >
- }
- bounded_by { // bounded_by speeds up the render,
- // see bounded_by
- // explanation later
- // in docs for more info.
- sphere { <0 0 0> 10 }
- }
- }
-
- The code to calculate Ray-Surface intersections for quartics
- is somewhat slower than that for intersections with quadric
- surfaces. Benchmarks on a stock 8Mhz IBM-PC AT (with FPU)
- give results of around 1400 solutions per second for 2nd
- order equations (quadrics) vs 444 per second for 3rd order
- equations and 123 per second for 4th order equations
- (quartics). So clever use of bounding shapes can make a big
- difference in processing time.
-
- While a great deal of time has gone into debugging the code
- for handling quartic surfaces, we know there are possible
- bad combinations of surface equations and lighting
- orientations that could cause math errors. If this happens
- to you, as the joke goes, "then don't DO that."
- Here are some quartic surfaces to get you started.
-
- A Torus can be represented by the equation:
-
- x^4 + y^4 + z^4 + 2 x^2 y^2 + 2 x^2 z^2 + 2 y^2 z^2
- -2 (r0^2 + r1^2) x^2 + 2 (r0^2 - r1^2) y^2
- -2 (r0^2 - r1^2) z^2 + (r0^2 - r1^2)^2 = 0
-
- Where r0 is the "major" radius of the torus - the distance
- from the hole of the donut to the middle of the ring of the
- donut, and r1 is the "minor" radius of the torus - the
- distance from the middle of the ring of the donut to the
- outer surface. Described another way, a torus is a circle
- that is revolved around an axis. The major radius is the
- distance from the axis to the center of the circle, the
-
-
- POV-Ray V1.0 Page 51
-
-
- minor radius is the radius of the circle.
-
- Note that scaling surfaces like a torus scales everything
- uniformly. In order to change the relationship between the
- size of the hole and the size of the ring, it is necessary
- to enter new coefficients for the torus.
-
- The only coefficients of the 35 that need to be filled in
- are:
-
- a0 = a20 = a30 = 1,
- a4 = a7 = a23 = 2,
- a9 = a32 = -2 (r0^2 + r1^2)
- a25 = 2 (r0^2 - r1^2)
- a34 = 2 (r0^2 - r1^2)^2
-
- the torus can then be rotated and translated into position
- once its shape has been defined. (See 'TORUS.POV')
- A generalization of the lemniscate of Gerono can be
- represented by the equation:
-
- c^2 x^4 - a^2 c^2 x^2 + y^2 + z^2 = 0
-
- where good start values are a = 1.0 and c = 1.0, giving the
- coefficients:
-
- a0 = a25 = a32 = 1,
- a9 = -1
-
- (See the example file "LEMNISCA.POV" for a more complete
- example)
-
- A generalization of a piriform can be represented by the
- equation:
- -b c^2 x^4 - a c^2 x^3 + y^2 + z^2 = 0
- where good start values are a = 4, b = -4, c = 1, giving the
- coefficients
-
- a0 = 4,
- a3 = -4,
- a25 = a32 = 1
-
- (See the file "PIRIFORM.POV" for more on this...)
-
- There are really so many different quartic shapes, we can't
- even begin to list or describe them all. If you are
- interested and mathematically inclined, an excellent
-
-
- POV-Ray V1.0 Page 52
-
-
- reference book for curves and surfaces where you'll find
- more quartic shape formulas is:
-
- "The CRC Handbook of Mathematical Curves and Surfaces"
- David von Seggern
- CRC Press
- 1990
-
- Blob
- Syntax:
- blob {
- threshold #
- component (strength_val) (radius_val) <component center>
-
- component (strength_val) (radius_val) <component center>
-
- [any number of components]
- [sturm]
- }
-
- Blobs are an interesting shape type. Their components are
- "flexible" spheres that attract or repel each other creating
- a "blobby" organic looking shape. The spheres' surfaces
- actually stretch out smoothly and connect, as if coated in
- silly putty (honey? glop?) and pulled apart.
-
- Blobs can be used in CSG shapes and they can be scaled,
- rotated and translated. They may contain any number of
- components. Because the calculations for blobs need to be
- highly accurate, sometimes they will not trace correctly.
- Try using the "sturm" keyword for slower, more accurate
- calculations if this happens.
-
- Component strength may be positive or negative. A positive
- value will make that component attract other components.
- Negative strength will make that component repel other
- components. Components in different, separate blob shapes do
- not affect each other.
-
-
- Blob example:
- blob {
- threshold 0.6
- component 1.0 1.0 <.75 0 0>
- component 1.0 1.0 <-.375 .64952 0>
- component 1.0 1.0 <-.375 -.64952 0>
- scale <2 2 2>
- sturm
-
-
- POV-Ray V1.0 Page 53
-
-
- }
-
-
-
- How do blobs work?
- Picture each blob component as a point floating in space,
- each point has a field around it that starts very strong at
- the point and drops off to zero at some radius. POV-Ray
- looks for the places that the strength of the field is
- exactly the same as the "threshold" value that was
- specified.
-
- If you have a single blob component then the surface you see
- will look just like a sphere, with the radius of the surface
- being somewhere inside the "radius" value you specified for
- the component. The exact radius of this sphere-like surface
- can be determined from the blob equation listed below (you
- will probably never need to know this, blobs are more for
- visual appeal than for exact modelling).
-
- If you have a number of blob components, then their fields
- add together at every point in space - this means that if
- the blob components are close together the resulting surface
- will smoothly flow around the components.
-
- The various numbers that you specify in the blob declaration
- interact in
- several ways. The meaning of each can be roughly stated
- as:
-
- Threshold:
- This is the total density value that POV-Ray is looking
- for. By following the ray out into space and looking at
- how each blob component affects the ray, POV-Ray will
- find the points in space where the density is equal to
- the "threshold" value.
-
- 1) "threshold" must be greater than 0. POV-Ray only
- looks for positive densities.
- 2) If "threshold" is greater than the strength of a
- component, then the component will disappear.
- 3) As "threshold" gets larger the surface you see gets
- closer to the centers of the components.
- 4) As "threshold" gets smaller, the surface you see
- gets closer to the spheres at a distance of "radius"
- from the centers of the components.
-
- Strength:
-
-
- POV-Ray V1.0 Page 54
-
-
- Each component has a strength value - this defines the
- density of the component at the center of the
- component. Changing this value will usually have only a
- subtle effect.
-
- 1) "strength" may be positive or negative. Zero is a
- bad value, as the net result is that no density was
- added - you might just as well have not used this
- component.
-
- 2) If "strength" is positive, then POV-Ray will add its
- density to the space around the center of the
- component. If this adds enough density to be greater
- than "threshold", you will see a surface.
-
- 3) If "strength" is negative, then POV-Ray will
- subtract its density from the space around the center
- of the component. This will only do something if there
- happen to be positive components nearby. What happens is
- that the surface around any nearby positive components
- will be dented away from the center of the negative component.
-
- Radius:
- Each component has a radius of influence. The component
- can only affect space within "radius" of its center.
- This means that if all of the components are farther
- than "radius" from each other, you will only see a
- bunch of spheres. If a component is within the radius
- of another component, then the two components start to
- affect each other. At first there is only a small bulge
- outwards on each of the two components, as they get
- closer they bulge more and more until they attach along
- a smooth neck. If the components are very close (i.e.
- their centers are on top of each other), then you will
- only see a sphere (this is just like having a component
- of more strength. bigger than the size of each of the
- component radii)
-
- 1) "radius" must be bigger than 0.
- 2) As "radius" increases the apparent size of the
- component will increase.
-
- Center:
- This is simply a point in space. It defines the center
- of a blob component. By changing the x/y/z values of
- the center you move the component around.
-
-
- POV-Ray V1.0 Page 55
-
-
-
-
- The Formula
- For the more mathematically minded, here's the formula used
- internally by POV-Ray to create blobs. You don't need to
- understand this to use blobs.
-
- The formula used for a single blob component is:
-
- density = strength * (1 - radius^2)^2
-
- This formula has the nice property that it is exactly equal
- to strength" at the center of the component and drops off to
- exactly 0 at a distance of "radius" from the center of the
- component. The density formula for more than one blob
- component is just the sum of the individual component
- densities:
-
- density = density1 + density2 + ...
-
-
- Height Fields
- Syntax:
- height_field { image_type "filename" [water_level #] }
- Examples:
- height_field { gif "povmap.gif" water_level .1 }
- height_field { tga "sine.tga" }
- height_field { pot "fract003.pot" water_level .5 }
-
- Height fields are a very exciting feature that you may find
- a little hard to understand at first. Read the explanation
- below, and look in the example scene files for height field
- examples. Once you begin to use them, they are much easier
- to understand. Among other things, they allow you to create
- fractal landscapes that rival the best computer graphics
- you've ever seen.
-
- A height field is essentially a 1 unit wide by 1 unit long
- box made up of many small triangles. The height of each
- triangle making up the box is taken from the color number
- (or palette index) of the pixels in a graphic image file.
-
- The mesh of triangles corresponds directly to the pixels in
- the image file. In fact, there are two small triangles for
- every pixel in the image file. The Y (height) component of
- the triangles is determined by the palette index number
- stored at each location in the image file. The higher the
- number, the higher the triangle. The maximum height of an
-
-
- POV-Ray V1.0 Page 56
-
-
- un-scaled height field is 1 unit.
-
- The higher the resolution of the image file used to create
- the height field, the smoother the height field will look. A
- 640 X 480 GIF will create a smoother height field than a 320
- x 200 GIF.
-
- The optional "water_level" parameter tells the program not
- to look for the height field below that value. Default value
- is 0, and legal values are between 0 and 1. For example,
- "water_level .5" tells POV-Ray to only render the top half
- of the height field. The other half is "below the water" and
- couldn't be seen anyway. This term comes from the popular
- use of height fields to render landscapes. A height field
- would be used to create islands and another shape would be
- used to simulate water around the islands. A large portion
- of the height field would be obscured by the "water" so the
- "water_level" parameter was introduced to allow the
- ray-tracer to ignore the unseen parts of the height field.
- Water_level is also used to "cut away" unwanted lower values
- in a height field. For example, if you have an image of a
- fractal on a solid colored background, where the background
- color is palette entry 0, you can remove the background in
- the height field by specifying, "water_level .001"
-
-
- The image file used to create a height field can be a GIF,
- TGA or POT format file. The GIF format is the only one that
- can be created using a standard paint program.
-
- The size/resolution of the image does not affect the size of
- the height field. The un-scaled height field size will
- always be 1x1. Higher resolution image files will create
- smaller triangles, not larger height fields.
-
- In a GIF file, the color number is the palette index at a
- given point. Use a paint program to look at the palette of a
- GIF image. The first color is palette index zero, the second
- is index 1, the third is index 2, and so on. The last
- palette entry is index 255. Portions of the image that use
- low palette entries will be lower on the height field.
- Portions of the image that use higher palette entries will
- be higher on the height field. For example, an image that
- was completely made up of entry 0 would be a flat 1x1
- square. An image that was completely made up of entry 255
- would be a 1x1x1 cube.
-
-
-
- POV-Ray V1.0 Page 57
-
-
- The maximum number of colors in a GIF are 256, so a GIF
- height field can have any number of triangles, but they will
- only 256 different height values.
-
- The color of the palette entry does not affect the height of
- the pixel. Color entry 0 could be red, blue, black, or
- orange, but the height of any pixel that uses color entry 0
- will always be 0. Color entry 255 could be indigo, hot pink,
- white, or sky blue, but the height of any pixel that uses
- color entry 255 will always be 1.
-
- You can create height field GIF images with a paint program
- or a fractal program like "Fractint". If you have access to
- an IBM-PC, you can get Fractint from most of the same
- sources as POV-Ray.
-
- A POT file is essentially a GIF file with a 16 bit palette.
- The maximum number of colors in a POT file is greater than
- 32,000. This means a POT height field can have over 32,000
- possible height values. This makes it possible to have much
- smoother height fields. Note that the maximum height of the
- field is still 1 even though more intermediate values are
- possible.
-
- At the time of this writing, the only program that created
- POT files was a freeware IBM-PC program called Fractint. POT
- files generated with this fractal program create fantastic
- landscapes. If you have access to an IBM-PC, you can get
- Fractint from most of the same sources as POV-Ray.
-
- The TGA file format is used as a storage device for numbers
- rather than an image file. That is, you can't use a paint
- program to create TGA height field files, and a scanned TGA
- image will not make a nice smooth height field.
-
- The TGA format uses the red and green bytes of each pixel to
- store the high and low bytes of a height value. TGA files
- are as smooth as POT files, but they must be generated with
- special custom-made programs. Currently, this format is for
- programmers exclusively, though you should see TGA height
- field generator programs arriving soon.
- There is example C source code included with the POV-Ray
- source archive to create a TGA file for use with a height
- field.
-
-
- Height fields may be rotated translated and scaled like any
-
-
- POV-Ray V1.0 Page 58
-
-
- other shape. Height fields cannot be used as true CSG
- shapes, though they are allowed in CSG shapes. They can be
- included in a CSG shape, but they will not be treated like
- solid objects.
-
- Here are a few notes on height fields from their creator,
- Doug Muir:
-
- The height field is mapped to the x-z plane, with its lower
- left corner sitting at the origin. It extends to 1 in the
- positive x direction and to 1 in the positive z direction.
- It is maximum 1 unit high in the y direction. You can
- translate it, scale it, and rotate it to your heart's
- content.
-
- When deciding on what water_level to use, remember, this
- applies to the un-transformed height field. If you are a
- Fractint user, the water_level should be used just like the
- water_level parameter for 3d projections in Fractint.
-
- Here's a detailed explanation of how the ray-tracer creates
- the height field. You can skip this if you aren't interested
- in the technical side of ray-tracing. This information is not
- needed to create or use height fields.
-
- To find an intersection with the height field, the raytracer
- first checks to see if the ray intersects the box which
- surrounds the height field. Before any transformations, this
- box's two opposite vertexes are at (0, water_level, 0) and
- (1, 1, 1). If the box is intersected, the raytracer figures
- out where, and then follows the line from where the ray
- enters the box to where it leaves the box, checking each
- pixel it crosses for an intersection.
-
- It checks the pixel by dividing it up into two triangles.
- The height vertex of the triangle is determined by the color
- index at the corresponding position in the GIF, POT, or TGA
- file.
-
- If your file has a uses the color map randomly, your height
- field is going to look pretty chaotic, with tall, thin
- spikes shooting up all over the place. Not every GIF will
- make a good height field.
-
- If you want to get an idea of what your height field will
- look like, I recommend using the IBM-PC program Fractint's
-
-
- POV-Ray V1.0 Page 59
-
-
- 3d projection features to do a sort of preview. If it
- doesn't look good there, the raytracer isn't going to fix
- it. For those of you who can't use Fractint, convert the
- image palette to a gray scale from black at entry 0 to white
- at entry 255 with smooth steps of gray in-between. The dark
- parts will lower than the brighter parts, so you can get a
- feel for how the image will look as a height field.
-
- Bezier/Bicubic Patches
- Syntax:
- bicubic_patch { patch_type_# [flatness_#] u_ steps v_steps
- < Control point1> < CP2> <CP3> < CP4>
- <CP5> <CP6> <CP7> <CP8>
- <CP9> <CP10> <CP11> <CP12>
- <CP13> <CP14> <CP15> <CP16>
- }
-
- Like triangles, the bicubic patch is not meant to be
- generated by hand. These shapes should be created by a
- special utility. You should be able to acquire utilities to
- generate these shapes from the same source that you received
- POV-Ray from.
-
- A bezier or bicubic path is a 3D curved surface created from
- a mesh of triangles. The number of triangles is u_steps *
- v_steps. Since it's made from triangles it cannot be used as
- a solid object in a CSG shape. It may be included in a CSG
- shape, though. It can be scaled, rotated, translated like
- any other shape. The 16 control points determine the shape
- of the curve by "pulling" the curve in the direction of the
- points.
-
- Example:
- // Patch type 1 with 8 u steps and 8 v steps
- bicubic_patch { 1 8 8
- < 0 0 2> < 1 0 0> < 2 0 0> < 3 0 -2>
- < 0 1 0> < 1 1 0> < 2 1 0> < 3 1 0>
- < 0 2 0> < 1 2 0> < 2 2 0> < 3 2 0>
- < 0 3 2> < 1 3 0> < 2 3 0> < 3 3 -2>
- }
-
- Constructive Solid Geometry (CSG)
-
- This ray tracer supports Constructive Solid Geometry (also
- called Boolean operations) in order to make the shape
- definition abilities more powerful.
-
- The simple shapes used so far are nice, but not terribly
- useful on their own for making realistic scenes. It's hard
- to make interesting objects when you're limited to spheres,
-
-
- POV-Ray V1.0 Page 60
-
-
- boxes, infinite cylinders, infinite planes, and so forth.
-
- Constructive Solid Geometry (CSG) is a technique for taking
- these simple building blocks and combining them together.
- You can use a cylinder to bore a hole through a sphere. You
- can use planes to cap cylinders and turn them into flat
- circular disks that are no longer infinite.
-
- Constructive Solid Geometry allows you to define shapes
- which are the union, intersection, or difference of other
- shapes.
-
- Unions superimpose two or more shapes. This has the same
- effect as defining two or more separate objects, but is
- simpler to create and/or manipulate.
-
- Intersections define the space where the two or more
- surfaces meet.
-
- Differences allow you to cut one object out of another.
-
- CSG intersections, unions, and differences can consist of
- two or more shapes. They are defined as follows:
-
- object {
- csg_shape_type {
- shape {...}
- shape {...}
- shape {...}
- (...)
- }
- texture { ... }
- }
-
- CSG shapes may be used in CSG shapes. In fact, CSG shapes
- may be used anyplace that a standard shape is used.
-
- The order of the shapes doesn't matter except for the
- difference shapes. For CSG differences, the first shape is
- visible and the remaining shapes are cut out of the first.
-
- Constructive solid geometry shapes may be translated,
- rotated, or scaled in the same way as any shape. The shapes
- making up the CSG shape may be individually translated,
- rotated, and scaled as well.
-
- When using CSG, it is often useful to invert a shape so that
-
-
- POV-Ray V1.0 Page 61
-
-
- it's inside-out. The appearance of the shape is not changed,
- just the way that POV-Ray perceives it. The inverse keyword
- can be used to do this for any shape. When inverse is used,
- the "inside" of the shape is flipped to become the
- "outside". For planes, "inside" is defined to be "in the
- opposite direction to the "normal" or "up" direction.
-
- Note that performing an intersection between a shape and
- some other inverse shapes is the same as performing a
- difference. In fact, the difference is actually implemented
- in this way in the code.
-
- Inside and outside
- Most shape primitives, like spheres, boxes, and blobs,
- divide the world into two regions. One region is inside the
- surface and one is outside. (The exceptions to this rule
- are triangles, height fields and bezier patches - we'll talk
- about this later.)
-
- Given any point in space, you can say it's either inside or
- outside any particular primitive object (well, it could be
- exactly on the surface, but numerical inaccuracies will put
- it to one side or the other).
-
- Even planes have an inside and an outside. By definition,
- the surface normal of the plane points towards the outside
- of the plane. (For a simple floor, for example, the space
- above the floor is "outside" and the space below the floor
- is "inside". For simple floors this in un-important, but for
- planes as parts of CSG's it becomes much more important).
-
-
- POV-Ray V1.0 Page 62
-
-
-
- CSG uses the concepts of inside and outside to combine
- shapes together. Take the following situation:
-
- Note: The diagrams shown here demonstrate the concepts in 2D
- and are intended only as an analogy to the 3D case.
-
- Note that the triangles and triangle-based shapes cannot be
- used as solid objects in CSG since they have no clear inside
- and outside.
-
-
- * = Shape A
- % = Shape B
-
- * 0
- * * %
- * * % %
- * *% %
- * 1 %* %
- * % * 2 %
- * % 3 * %
- *******%******* %
- % %
- %%%%%%%%%%%%%%%%%
-
-
-
-
- POV-Ray V1.0 Page 63
-
-
-
- There are three CSG operations you can use, union,
- intersection, and difference:
-
- union { A B }
- A point is inside the union if it is inside A OR it's inside
- B (or both). This gives an "additive" effect to the
- component objects:
-
- *
- * * %
- * * % %
- * *% %
- * 1 2 %
- * 3 %
- * %
- *******% %
- % %
- %%%%%%%%%%%%%%%%%
-
-
-
- intersection { A B }
- A point is inside the intersection if it's inside both A AND
- B. This "logical AND's" the shapes and gets the common part,
- most useful for "clipping" infinite shapes off, etc:
-
-
- %*
- % *
- % 3 *
- %*******
-
-
- difference { A B }
- A point is inside the difference if it's inside A but not
- inside B. The results is a "subtraction" of the 2nd shape
- from the first shape:
-
- *
- * *
- * *
- * *
- * 1 %
- * %
- * %
- *******%
-
-
- Let's give a concrete example by drilling a yellow hole
-
-
- POV-Ray V1.0 Page 64
-
-
- through our sphere. Go to the definition of the sphere in
- PICTURE1.POV and change it to read the following:
-
- object {
- difference {
- sphere { <0 1 3> 1 }
- quadric {
- Cylinder_Z
- scale <.2 .2 1>
- translate <0 1 0>
- texture { color Yellow }
- }
- }
- texture {
- DMFWood1
- scale <2 2 1>
- phong 1
- }
- }
-
-
- Inverse
- You can flip a shape "inside-out" by putting the keyword
- inverse into the shape's definition. This keyword will not
- change the appearance of the shape unless you're using CSG.
- In the case of CSG, it gives you more flexibility. For
- example:
-
- intersection { B {A inverse} }
-
-
- %
- % %
- % %
- * %
- * 2 %
- * %
- %******* %
- % %
- %%%%%%%%%%%%%%%%%
-
- Note: A difference is really just an intersection of one
- shape with the inverse of another. This happens to be how
- difference is actually implemented in the code.
-
-
-
- POV-Ray V1.0 Page 65
-
-
-
-
- Composite Objects
-
- Often it's useful to combine several objects together to act
- as a whole. A car, for example, consists of wheels, doors, a
- roof, etc. A composite object allows you to combine all of
- these pieces into one object. This has two advantages. It
- makes it easier to move the object as a whole and it allows
- you to speed up the ray tracing by defining bounding shapes
- that contain the objects. (Rays are first tested to see if
- they intersect the bounding shape. If not, the entire
- composite object is ignored). Composite objects are defined
- as follows:
-
- composite {
- object {...}
- object {...}
- object {...}
- (...)
- [transformations]
- }
-
- Composite objects can contain other composite objects as
- well as regular objects.
-
- NOTE: Each object in a composite object may have its own
- texture, but the composite object may not have a texture.
-
- NOTE: Composite objects may only be used in other composite
- objects, not in normal objects or shapes.
-
- NOTE: Composite objects can not be used in CSG shapes. CSG
- shapes must be in an object to be used in a composite.
-
- For example,
-
- composite { // This is legal
- object { union {...} }
- object { sphere {...} }
- object { intersection {...} }
- }
-
- composite { // This is legal
- object { union {...} texture {...} }
- object { sphere {...} texture {...} }
- object { intersection {...} texture {...} }
- }
-
-
-
- POV-Ray V1.0 Page 66
-
-
- composite { // This is NOT legal
- object { union {...}}
- object { sphere {...}}
- object { intersection {...}}
- texture {...} // Texture is NOT legal in composite
- }
-
- composite { // This is NOT legal
- union {...} // Shapes not in objects are
- // not legal in composites
- sphere {...}
- }
-
- object { // This is NOT legal
- composite { ... } // Composites are not
- // allowed in objects
- }
-
- object { // This is NOT legal
- union {
- composite { ... } // Composites are not
- // allowed in CSG shape types
- }
- }
-
-
- Example:
- #declare Abstract =
- composite {
- object { sphere { <0 0 0> 1 } texture {color Red} }
- object { sphere { <0 1 0> 1 } texture {color Yellow} }
- composite { // This is a composite in a composite
- object {
- box { <2 2 2> <3 3 3> }
- texture {color Green}
- }
- object {
- box { <-3 -3 -3> <-2 -2 -2> }
- texture {color Blue}
- }
- }
- object {
- quadric { Ellipsoid }
- texture { PinkAlabaster }
- scale <3 1 3>
- translate <0 4 0>
- }
-
-
- POV-Ray V1.0 Page 67
-
-
- }
- composite { Abstract translate <0 5 10> }
-
-
- Bounding Shapes
-
- NOTE: Efficient use of bounding shapes are the best way to
- speed up the rendering of your scenes.
-
- If you use bounding shapes around any complex objects you
- can speed up the rendering. Bounding shapes tell the ray
- tracer that the object is totally enclosed by a simple
- shape. When tracing rays, the ray is first tested against
- the simple bounding shape.
- If it strikes the bounding shape, then the ray is further
- tested against the more complicated object inside. Otherwise
- the entire complex shape is skipped, which greatly speeds
- rendering.
-
- To use bounding shapes, simply include the following lines
- in the declaration of your object or composite_ object:
-
- bounded_by {
- shape { ... }
- }
-
- An example of a Bounding Shape:
-
- object {
- intersection {
- sphere <0.0 0.0 0.0> 2.0 }
- plane <0.0 1.0 0.0> 0.0 }
- plane <1.0 0.0 0.0> 0.0 }
- }
- bounded_by {
- sphere <0.0 0.0 0.0> 2.0 }
- }
- }
-
- The best bounding shape is a sphere or a box since these
- shapes are highly optimized, although, any shape may be
- used, including CSG shapes.
-
- Note that if bounding shape is too small or positioned
- incorrectly, it may clip the object in undefined ways or the
- object may not appear at all. To do true clipping, use
- Clipping Shapes below.
-
- Clipping Shapes
-
- A clipping shape is used to "cut off" part of an object.
-
-
- POV-Ray V1.0 Page 68
-
-
-
- For example:
-
- object {
- sphere {<0 1 3> 1}
- clipped_by {
- sphere { <.5 1 2> 1 }
- }
- }
-
- You can use any kind of shape including CSG shapes to clip
- an object.
-
-
-
- POV-Ray V1.0 Page 69
-
-
-
-
- Textures
-
- Textures are the materials that the shapes and objects in
- POV-Ray are made out of. They specifically describe the
- surface coloring, shading, and properties like transparency
- and reflection.
-
- You can create your own textures using the parameters
- described below, or you can use the many pre-defined high
- quality textures that have been provided in the files
- TEXTURES.INC and STONES.INC. See TEXTURES.DOC for more info
- on using these predefined materials.
-
- The textures, or materials, in POV-Ray are generally made up
- of three portions, a color pattern, a bump pattern, and
- surface properties.
-
- Color Pattern
- A color pattern is where two or more colors are used to
- create a three-dimensional pattern or design. There are many
- built-in color patterns in POV-Ray ranging from checker, to
- marble, to wood, to agate.
-
- For example, a checker pattern is just alternating color
- blocks stacked on and next to each other. The marble color
- pattern is vertical bands of colors placed next to each
- other. The wood color pattern is cylindrical bands of color
- like the rings of a tree, and so on.
-
- These patterns are all generated from mathematical formulas
- and are very regular unless they are "stirred up" using the
- turbulence parameter which is described below.
-
- The individual colors in a color pattern can be made
- partially or completely transparent by specifying the alpha
- color component. See the color description for more info.
-
- The names of the patterns are only suggestions for their
- use. Don't let those names limit you, by using different
- colors and turbulence values, nearly infinite permutations
- of these patterns are possible.
-
- The colors in a color pattern are usually defined in a
- "color_map". Color maps are described below.
-
- A shape may also have a solid color instead of a color
- pattern. This is specified by describing one color instead
- of a color pattern type. This color may also be made
-
-
- POV-Ray V1.0 Page 70
-
-
- transparent by specifying the alpha component of the color.
-
- Transformations like scale, rotate, and translate will
- affect the color pattern and bump pattern in a texture in
- the same way. It is not currently possible to specify
- different transformation values for the color and bump
- patterns in the same texture.
-
- Bump Patterns
- A bump pattern makes a surface look "bumpy" without actually
- changing the form of the shape. The bump pattern modifies
- the way the surface reflects light so that it is shaded and
- highlighted just like it were bumpy, but the ray-tracer
- saves time by doing most calculations as if it were a smooth
- shape.
-
- A true "bumpy" shape is very complex and time consuming to
- render. By using bump patterns you can create the appearance
- of dents, bumps, and ripples without the penalty of
- rendering a highly complex shape.
-
- Some bump patterns are ripples, dents, bumps, wrinkles and
- waves. These patterns can produce very realistic looking
- surface variations. They can be combined with color patterns
- for more variation. If no bump pattern is specified then the
- texture is treated as being smooth.
-
- Normally, the bump amount is kept small to enhance realism.
- Since the bump pattern only changes the shading, the
- silhouette of a shape is left unchanged. A bumpy sphere will
- still have a perfectly round edge, even though its surface
- looks very convincingly bumpy.
-
- The bump pattern never changes the colors on a shape, only
- the shading. Bump patterns, like color patterns, are three
- dimensional. Turbulence does not affect bump patterns.
-
- Transformations like scale, rotate, and translate will
- affect the color pattern and bump pattern in a texture in
- the same way. It is not currently possible to specify
- different transformation values for the color and bump
- patterns in the same texture.
-
- Surface Properties
- Surface properties are the miscellaneous parameters which
- describe whether a shape is reflective, shiny, refractive,
- and so on.
-
-
-
- POV-Ray V1.0 Page 71
-
-
- Some examples of surface properties are:
- phong # -- Make surface shiny by adding highlights
- phong_size # -- Change the size of the highlight on
- surface
- reflection # -- Make surface reflect the scene around it
-
-
- Texture Syntax
- The basic texture syntax is as follows:
-
- texture {
- (random dither #)
- (color_pattern_type) or (color red # green # blue #)
- (bump_pattern_type (bump_amount))
- [texture modifiers]
- [texture transformations]
- }
-
- For example:
-
- texture {
- 0.05 // Random dither is not recommended
- wood
- turbulence 0.2
- phong 1
- scale < 10.0 10.0 10.0 >
- translate < 1.0 2.0 3.0 >
- rotate < 0.0 10.0 40.0 >
- }
-
- Transformations, like translate, rotate, and scale, are
- optional. They allow you to transform the texture
- independent of the shape's or object's transformations. IE.
- The texture may be in a different "location" than the shape,
- or be a different size than the shape.
-
- Any parameter that changes the appearance of the surface
- must be put into a texture block. Outside of the texture
- block, the texture parameters will cause an error message to
- be generated.
-
-
- Textures and Animation
- If you are doing animation, you should specify all object
- transformations after the texture transformations so the
- texture "follows" or "sticks to" the object through 3-D
- space. For example,
-
- object {
-
-
- POV-Ray V1.0 Page 72
-
-
- shape {} // Shape description
- texture {} // Texture description
- scale // transform after shape & texture
- rotate // transform after shape & texture
- translate // transform after shape & texture
- }
-
- As in:
-
- object{
- box {<-1 -1 -1> <1 1 1>} // Box shape centered on zero
- texture {
- agate
- phong 1
- scale <1.3 2 1.3> // scale texture to the
- // untransformed shape
- rotate <30 0 0> // rotate texture to the
- // untransformed shape
- }
- scale <3 3 3> // scale *both* sphere & texture
- rotate <0 40 0> // rotate *both* sphere & texture
- translate <1 5 5> // Move box & texture to final
- // position
- }
-
- If the transformations are done after the shape and before
- the texture, the texture will not "stick to" the shape. In
- an animation, this will look like the texture is constantly
- moving on the moving shape. What is actually happening is
- that the shape is moving and the texture is not, so the
- texture on the shape changes whenever the shape is scaled,
- rotated, or translated. This can be an interesting effect,
- but is not desirable for most animations.
-
- Random Dither
- The floating-point value given immediately following the
- texture keyword is an optional "texture randomness" value,
- which causes a minor random scattering of calculated color
- values and produces a sort of "dithered" appearance. This is
- used by artists to minimize banding and to provide a more
- chaotic, uneven look to a texture. Values are generally kept
- quite small, like .05. This feature is different from
- turbulence in that textures using it will look slightly
- different each time they are rendered.
-
- NOTE: This should not be used when rendering animations.
- This is the only truly random feature in POV-Ray, and will
-
-
- POV-Ray V1.0 Page 73
-
-
- produce an annoying flicker of flying pixels on any textures
- animated with a "randomness" value used.
-
- Layered Textures
- It is possible to create layered textures. A Layered texture
- is one where several textures that are partially transparent
- are laid one on top of the other to create a more complex
- texture. The different texture layers show through the
- transparent portions to create the appearance of one
- textures that is a combination of several textures.
-
- You create layered textures by listing two or more textures
- one right after the other. The last texture listed will be
- the top layer, the first one listed will be the bottom
- layer. All textures in a layered texture other than the
- bottom layer should have some transparency.
-
- More about Textures
-
- The textures available in POV-Ray are 3D solid textures.
- This means that the texture defines a color for any 3D point
- in space. Just like a real block of marble or wood, there is
- color all through the block - you just can't see it until
- you carve away the wood or marble that's in the way.
- Similarly, with a 3D solid texture, you don't see all the
- colors in the texture - you only see the colors that happen
- to be visible at the surface of the object.
-
- As you've already seen, you can scale, translate, and rotate
- textures. In fact, you could make an animation in which the
- objects stay still and the textures translate and rotate
- through the object. The effect would be like watching a
- time-lapse film of a cloudy sky - the clouds would not only
- move, but they would also change shape smoothly.
-
- Turbulence or Noise
- Often, textures are perturbed by noise. This "turbulence"
- distorts the texture so it doesn't look quite so perfect.
- Try changing the sphere in the above example to have the
- following texture:
-
- texture {
- DMFWood1
- turbulence 0.0
- scale <0.2 0.2 1.0>
- phong 1.0
- }
-
- When you compare this with the original image, you'll see
- that the grain is very regular and the pattern is much less
-
-
- POV-Ray V1.0 Page 74
-
-
- interesting. Turbulence can be any value, though it usually
- ranges from 0-1.
-
- Color Maps
- Most color patterns use color maps. A color map translates a
- number between 0.0 and 1.0 into a color. The number
- typically represents the distance into a vein of color - the
- further into the vein you get, the more the color changes.
- Color patterns actually generate patterns of numbers between
- 0 and 1 for each point in space. When the ray tracer request
- the color from the color pattern for a specific point, the
- color pattern calculates what number between 0-1 is at that
- point and then sends that number to the color map. The color
- map looks to see if there is a color defined for that
- number, if there isn't, it figures out an in-between color
- from the colors that were defined. It returns that number to
- the color pattern and that's the color that ends up on the
- object. Since the color map makes these "in-between" colors,
- you can create color maps with smooth bands of many color
- shades by defining only a few colors.
-
- Here's a simple color map. Try it out on the sphere defined
- above by changing the definition to this:
-
- object {
- sphere {<0 1 3> 1 }
- texture {
- wood // This is the color pattern
- scale <.2 .2 1>
- color_map{ // This is where the pattern gets its colors
- [ 0 .3 color Red color Green]
- [.3 .6 color Green color Blue]
- [.6 1 color Blue color Red]
- }
- phong 1
- }
- }
-
- This means that as the texture enters into a vein of wood,
- it changes color smoothly from red to green, from green to
- blue, and from blue to red again. As it leaves the vein, the
- transition occurs in reverse. (Since there is no turbulence
- on the wood by default, the veins of color show up quite
- well.)
-
- Alpha
- You can get more "bang for your buck" from textures by using
- alpha properties of color. Every color you define in POV-Ray
- is a combination of red, green, blue and alpha. The red, green
- and blue are simple enough. The alpha determines
- how transparent that color is. A color with an alpha of 1.0
- is totally transparent to that color of light. It filters
- the light. A color with an alpha of 0.0 is totally opaque to
- all light.
-
- Here's a neat texture to try:
-
- texture {
- turbulence .5
- bozo
- color_map {
- // transparent to transparent
- [ 0 .6 color red 1 green 1 blue 1 alpha 1
-
-
- POV-Ray V1.0 Page 75
-
-
- color red 1 green 1 blue 1 alpha 1]
- // transparent to white
- [.6 .8 color red 1 green 1 blue 1 alpha 1
- color red 1 green 1 blue 1]
- // white to grey
- [.8 1 color red 1 green 1 blue 1
- color red 0.8 green 0.8 blue 0.8]
- }
- scale <.4 .08 .4>
- }
-
- This is David Buck's famous cloud texture. It creates white
- clouds with grey linings. The texture is transparent in the
- places where the clouds disappear so you can see through it
- to the objects that are behind.
-
- Note that light is filtered through alpha colors. Red can't
- pass through a blue filter no matter how high the alpha
- value. Green can't get through a completely blue filter and
- so on. To make a completely clear color that all light can
- pass through, use color red 1 green 1 blue 1 alpha 1. This
- is defined in COLORS.INC as Clear.
-
- Layering Textures
- You can layer textures one on top of another to create more
- sophisticated textures. For example, suppose you want a
- wood-colored cloudy texture. What you do is put the wood
- texture down first followed by the cloud texture. Wherever
- the cloud texture is transparent, the wood texture shows
- through. Change your sphere to the following and you'll see.
-
-
- object {
- sphere <0 1 3> 1 }
-
-
- POV-Ray V1.0 Page 76
-
-
- texture{ //This is the wood texture we used earlier.
- DMFWood1
- scale <.2 .2 1>
- phong 1
- }
- texture {
- turbulence .5
- bozo
- color_map {
- // transparent to transparent
- [ 0 .6 color red 1 green 1 blue 1 alpha 1
- color red 1 green 1 blue 1 alpha 1]
- // transparent to white
- [.6 .8 color red 1 green 1 blue 1 alpha 1
- color red 1 green 1 blue 1]
- // white to grey
- [.8 1 color red 1 green 1 blue 1
- color red 0.8 green 0.8 blue 0.8]
- }
- scale <.4 .08 .4>
- }
- }
-
- Each successive texture is layered on top of the previous
- textures. In the places where you can see through the upper
- texture, you see through to the lower textures.
-
-
- POV-Ray V1.0 Page 77
-
-
-
-
- Texture Surface Properties
-
-
- Color
- A color consists of a red component, a green component, a
- blue component, and possibly an alpha component. All four
- components are numbers in the range 0.0 to 1.0.
-
- The syntax for colors is the word "color" followed by any or
- all of the red, green, blue or alpha components in any
- order. If a parameter is not specified it is assumed to be
- 0. For example:
-
- color red 1.0 green 1.0 blue 1.0
- color blue 0.56
- color green 0.45 red 0.3 blue 0.1 alpha 0.3
-
- Alpha is a transparency indicator. If an object's color
- contains some transparency, then you can see through it. If
- Alpha is 0.0, the object is totally opaque. If it is 1.0, it
- is totally transparent. Note that light is filtered, so
- color red 0 green 0 blue 0 alpha 1 is totally black and
- non-transparent. Color red 1 green 1 blue 1 alpha 1 is
- totally clear. Color red 1 alpha 1 filters out all but red
- light.
-
- The Canadian spelling colour may be used in place of color.
-
- ambient value
- In real life, ambient light is light that is scattered
- everywhere in the room. It bounces all over the place and
- manages to light objects up a bit even where no light is
- directly shining.
-
- Computing real ambient light would take far too much time,
- so we simulate ambient light by adding a small amount of
- white light to each texture whether or not a light is
- actually shining on that texture.
-
- This means that the portions of a shape that are completely
- in shadow will still have a little bit of their surface
- color. It's almost as if the texture glows, though the
- ambient light in a texture only affects the shape it is used
- on.
-
- The default value is very little ambient light (0.1). The
- value can range from 0.0 to 1.0. Higher ambient values in a
- texture will make a shape using that texture look flat and
- plastic.
-
-
- POV-Ray V1.0 Page 78
-
-
-
- diffuse value
-
- The diffuse value specifies how much the texture will react
- to light directly shining on it. High values of diffuse
- (.7-.9) make the colors in a texture very bright, lower
- values (.1-.4) will make the colors in the texture seem more
- subdued. The default value for diffuse is .6. The value can
- range from 0.0 to 1.0. Diffuse does not affect the
- highlights or shadowed portions of the texture.
-
- brilliance value
- Objects can be made to appear more metallic by increasing
- their brilliance. This controls the tightness of the basic
- diffuse illumination on objects and minorly adjusts the
- appearance of surface shininess. The default value is 1.0.
- Higher values from 3.0 to about 10.0 can give objects a
- somewhat more shiny or metallic appearance. There are no
- limits to the brilliance value. Experiment to see what works
- best for a particular situation. This is best used in
- concert with either the specular or phong highlighting.
-
- reflection value
- By setting the reflection value to be non-zero, you can give
- the object a mirrored finish. It will reflect all other
- elements in the scene.
-
- The value can range from 0.0 to 1.0. By default there is no
- reflection.
-
- Reflection is one of the strongest features of ray tracing.
- Try making the sphere in PICTURE1.POV mirrored by adding
- reflection 1.0 to its texture.
-
- Note: Adding reflection to a texture makes it take much
- longer to render.
-
- refraction value
- Example:
- texture {
- color White alpha .9
- refraction 1
- ior 1.5
- phong 1
- }
- The refraction value attenuates the color of the refracted
- light through a transparent texture. Lower values of
- refraction will make the transparent portion less
- transparent. Higher values will make the transparent portion
- more transparent. This value is usually 1 and transparency
- amounts are controlled with the alpha in a color. Legal
-
-
- POV-Ray V1.0 Page 79
-
-
- values for refraction are from 0-1. By default there is no
- refraction. If there is no alpha in a color, then it will
- not be transparent.
-
- The ior value, described below, is used in conjunction with
- refraction and alpha to create textures that bend light
- passing through them. This is used to simulate glass, water,
- diamonds, etc.
-
- Use "refraction 1" and an ior value with a transparent
- texture when you want to create a texture that bends light
- like water and glass do.
-
- NOTE: In layered textures, the refraction and ior keywords
- MUST be in the last texture, otherwise they will not take
- effect.
-
- NOTE: If a texture has an alpha component and no value for
- refraction and ior are supplied, the renderer will simply
- transmit the ray through the surface with no bending.
-
- ior value
- Example:
- texture {
- color red .5 green .7 blue 1 alpha .9
- refraction 1
- ior 1.33
- phong 1
- }
-
- The ior or Index of Refraction determines how dense a
- transparent texture is or how far the light will bend as it
- passes through the texture.
-
- For ior to have an affect, the texture must have some
- transparent colors that use alpha and the refraction value
- should be set to 1.
-
- A value of 1.0 will give no refraction. The Index of
- Refraction for air is 1.0, water is 1.33, glass is 1.5, and
- diamond is 2.4. The file IOR.INC pre-defines several useful
- values for ior.
-
- phong value
- Controls the amount of Phong specular reflection
- highlighting on the texture. Causes bright shiny spots on
- the element that are the color of the light source being
- reflected.
-
-
-
- POV-Ray V1.0 Page 80
-
-
- Phong highlighting is simulating the fact that slightly
- reflective objects, especially metallic ones, have
- microscopic facets, some of which are facing in the mirror
- direction. The more that are facing that way, the shinier
- the object appears, and the tighter the specular highlights
- become. Phong measures the average of facets facing in the
- mirror direction from the light sources to the viewer.
-
- Phong's value is typically from 0.0 to 1.0, where 1.0 causes
- complete saturation of the object's color to the light source's color at the
- brightest area (center) of the highlight. There is no phong
- highlighting given by default.
-
- The size of the highlight spot is defined by the phong_size
- value described below.
-
- phong_size value
- Controls the size of the phong Highlight on the object, sort
- of an arbitrary "glossiness" factor. Think of it as a
- "tightness" value. The larger the phong_size, the tighter,
- or smaller, the highlight. The smaller the phong_size, the
- looser, or larger, the highlight.
-
- Typical values range from 1.0 (Very Dull) to 250 (Highly
- Polished) though any values may be used. Default phong_size
- is 40 (plastic) if phong_size is not specified.
-
- specular value
- Very similar to Phong specular highlighting, but a different
- model is used for determining light ray/object intersection,
- so a more credible spreading of the highlights occur near
- the object horizons, supposedly.
-
- Specular's value is typically from 0.0 to 1.0, where 1.0
- causes complete saturation of the object's color to the
- light source's color at the brightest area (center) of the
- highlight. There is no specular highlighting given by
- default.
-
- The size of the spot is defined by the value given for
- roughness, described below.
-
- Note that Specular and Phong highlights are NOT mutually
- exclusive. It is possible to specify both and they will both
- take effect. Normally, however, you will only specify one or
- the other.
-
- roughness value
- Controls the size of the specular Highlight on the object,
-
-
- POV-Ray V1.0 Page 81
-
-
- relative to the object's "roughness". Typical values range
- from 1.0 (Very Rough -- large highlight) to 0.0005 (Very
- Smooth -- small highlight). The default value, if roughness
- is not specified, is 0.05 (Plastic).
-
- It is possible to specify "wrong" values for roughness that
- will generate an error when you try to render the file.
- Don't use 0 and if you get errors, check to see if you are
- using a very, very small roughness value that may be causing
- the error.
-
-
- metallic
- This keyword indicates that the color of the specular and
- phong highlights will be the surface color instead of the
- light_source color. This creates a metallic appearance. See
- the Metal texture in the TEXTURES.INC file for an example of
- metallic.
-
-
-
- POV-Ray V1.0 Page 82
-
-
-
-
- Color Pattern Texture Types
-
- Before the color patterns are listed, here is a description
- of color maps which are essential to color patterns.
-
- Color Maps
- For wood, marble, spotted, agate, granite, gradient and other color
- patterns, you may specify a set of colors to use for the
- pattern. This is done by a color map or "color spline".
-
- When the object is being textured, a number between 0.0 and
- 1.0 is generated which is then used to form the color of the
- point. A color map specifies the mapping used to change
- these numbers into colors. The syntax is as follows:
-
- color_map {
- [start_value end_value color1 color2]
- [start_value end_value color1 color2]
- [start_value end_value color1 color2]
- ...
- }
-
- For example,
-
- color_map {
- [ 0 .3 color Red color Yellow]
- [.3 .6 color Yellow color Blue]
- [.6 1 color Green color Clear]
- }
-
-
- The numeric value between 0.0 and 1.0 is located in the
- color map and the final color is calculated by a linear
- interpolation (a smooth blending) between the two colors in
- the located range.
-
- The easiest way to see how it works is to try it. With a
- good choice of colors the bozo color pattern produces some
- of the most realistic looking cloudscapes you've ever seen
- indoors! Try a cloud color map such as:
-
- texture {
- bozo
- turbulence 1 // A blustery day.
- // For a calmer one, try 0.2
- color_map {
- [ 0 .5 color red .5 green .5 blue 1 // blue to blue
- color red .5 green .5 blue 1]
-
-
- POV-Ray V1.0 Page 83
-
-
- [.5 .6 color red .5 green .5 blue 1 // blue to
- white
- color red 1 green 1 blue 1]
- [.6 1 color red 1 green 1 blue 1 // white to grey}
- color red .5 green .5 blue .5]
- }
- }
-
- The color map above indicates that for small values of the
- pattern, use a sky blue color solidly until about halfway
- turbulent, then fade through to white on a fairly narrow
- range. As the white clouds get more turbulent and solid
- towards the center, pull the color map toward grey to give
- them the appearance of holding water vapor (like typical
- clouds).
-
- Don't let yourself be limited by the color pattern names,
- try different color schemes on them and see what you can
- come up with.
-
- ---------------------------------------------
-
- The following color patterns are available. They may be
- scaled, rotated and translated. They may be applied to any
- shape or object. Turbulence may be used except where noted.
-
-
- checker - Color Pattern.
- Syntax:
- checker color red # green # blue # color red # green #
- blue #
- Example:
- checker color Red color Yellow
-
- checker pattern gives a checker-board appearance. This
- option works best on planes. When using the checker
- texturing, you must specify two colors immediately following
- the word checker. These colors are the colors of alternate
- squares in the checker pattern. This is a ray tracing
- classic and cliche.
-
- bozo - Color Pattern.
- Syntax:
- bozo color_map {...}
-
- The bozo color pattern basically takes a noise function and
- maps it onto the surface of an object. This "noise" is
- well-defined for every point in space. If two points are
- close together, they will have noise values that are close
-
-
- POV-Ray V1.0 Page 84
-
-
- together. If they are far apart, their noise values will be
- fairly random relative to each other.
-
-
- spotted - Color Pattern.
- Syntax:
- spotted color_map {...}
-
- Spotted pattern is a sort of swirled random spotting of the
- color of the object. If you've ever seen a metal organ pipe
- up close you know about what it looks like (a galvanized
- garbage can is close...) Play with this one, it might render
- a decent cloudscape during a very stormy day. No extra
- keywords are required. With small scaling values, looks like
- masonry or concrete.
-
- marble - Color Pattern.
- Syntax:
- marble color_map {...}
-
- Marble uses the color map to create parallel bands of color.
- Add turbulence to make it look more like marble, jade or
- other types of stone. By default, marble has no turbulence.
-
- wood - Color Pattern.
- Syntax:
- wood color_map {...}
-
- Wood uses the color map to create concentric cylindrical
- bands of color centered on the Z axis. Add small amounts of
- turbulence to make it look more like real wood. By default,
- wood has no turbulence.
-
- agate - Color Pattern.
- Syntax:
- agate color_map {...}
-
- This pattern is very beautiful and similar to marble, but uses
- a different turbulence function. The turbulence
- keyword has no effect, and as such it is always very
- turbulent.
-
- gradient - Color Pattern.
- Syntax:
- gradient <axis_vector> color_map {...}
-
- This is a specialized pattern that uses approximate local
- coordinates of an object to control color map gradients.
- This texture does not have a default color_map, so one must
- be specified.
-
- It has a special <X Y Z> triple called the axis vector given
- after the gradient keyword, which specifies any (or all)
-
-
- POV-Ray V1.0 Page 85
-
-
- axes to perform the gradient action on.
-
- Example: a Y gradient <0.0 1.0 0.0> will give an "altitude
- color map", along the Y axis.
-
- In the axis vector, values given other than 0.0 are taken as
- 1.0.
-
- For smooth repeating gradients, you should use a "circular"
- color map, that is, one in which the first color value (0.0)
- is the same as the last one (1) so that it "wraps around"
- and will cause smooth repeating gradient patterns.
-
- Scaling the texture is normally required to achieve the
- number of repeating shade cycles you want.
-
- Transformation of the texture is useful to prevent a
- "mirroring" effect from either side of the central 0 axes.
-
- Here is an example of a gradient texture which uses a sharp
- "circular" color mapped gradient rather than a smooth one,
- and uses both X and Y gradients to get a diagonally-oriented
- gradient. It produces a dandy candy cane texture!
-
- texture {
- gradient < 1.0 1.0 0.0 >
- color_map {
- [ 0 .25 color red 1 green 0 blue 0
- color red 1 green 0 blue 0]
- [.25 .75 color red 1 green 1 blue 1
- color red 1 green 1 blue 1]
- [.75 1 color red 1 green 0 blue 0
- color red 1 green 0 blue 0]
- }
- scale <30 30 30>
- translate <30 -30 0>
- }
-
- You may also specify a turbulence value with the gradient to
- give a more irregular color gradient. This may help to
- simulate things like fire or corona effects. By default,
- gradient has no turbulence.
-
- granite - Color Pattern.
- Syntax: granite color_map {...}
-
- This pattern uses a simple 1/f fractal noise function to
-
-
- POV-Ray V1.0 Page 86
-
-
- give a pretty darn good granite pattern. Typically used with
- small scaling values (2.0 to 5.0). This pattern is used
- with creative color maps in STONES.INC to create some
- gorgeous layered stone textures. By default, granite has no
- turbulence.
-
- onion - Color Pattern.
- Syntax: onion color_map {...}
-
- onion is a pattern of concentric spheres. By default, onion
- has no turbulence.
-
- leopard - Color Pattern.
- Syntax: leopard color_map {...}
-
- leopard creates a pattern from stacked spheres. The color of
- the spheres and the colors in between them is taken from the
- color map. Turbulence works very effectively with this
- texture. By default, leopard has no turbulence.
-
-
- tiles - A texture pattern
- This isn't exactly a color pattern, but this is the best
- place for it at the moment.
- We've had many requests for a checker pattern to allow you
- to alternate between wood and marble or any other two textures.
- So, we've added a texture called tiles that takes two textures
- and tiles them instead of two colors.
-
- In order to support layered textures in the future, the
- syntax is a bit more verbose than it would be otherwise. The
- syntax is:
-
- texture{
- tiles {
- texture {... put in a texture here ... }
- texture {... add optional layers on top of that one ...}
- tile2
- texture {... this is the second tile texture }
- texture {... a texture layered on top of the 2nd tile}
- }
- }
-
- Example:
-
- texture{
- tiles {
- texture { Jade }
- tile2
- texture { Red_Marble }
-
-
- POV-Ray V1.0 Page 87
-
-
- }
- }
-
-
- Note that the textures in tiles only use the surface
- coloring texture information. Information about ambient,
- diffuse, reflection, etc. and surface normal information
- (waves, ripples) are ignored inside the tiles.
-
- You may use layered textures with tiles, but only the top
- layer will show.
-
-
- POV-Ray V1.0 Page 88
-
-
-
-
- Bump Patterns
-
- Bump patterns or surface normal perturbation patterns change
- the way a surface reflects light and make it look bumpy. The
- actual shape of the surface is not changed, but shading,
- highlights, and reflections will make it look as if it
- were.
-
- ripples - Bump Pattern
- Syntax:
- ripples (ripple size #) [frequency #] [phase #]
- Example :
- ripples 0.5
-
- The ripples bump pattern make a surface look like ripples of
- water. The ripples option requires a value to determine how
- deep the ripples are:
-
- texture {
- wood
- ripples 0.3
- phong 1
- translate < 1.0 2.0 3.0 >
- rotate < 0.0 10.0 40.0 >
- scale < 10.0 10.0 10.0 >
- }
-
- The ripple size may be any number. Larger values create
- larger ripples. The frequency and phase parameters change
- the distance between ripples and the position of the ripple,
- respectively.
-
- waves - Bump Pattern
- Syntax:
- waves (wave size #) [frequency #] [phase #]
- Example :
- waves 0.5 frequency 10 phase 0.3
-
- This works in a similar way to ripples except that it makes
- waves with different frequencies. The effect is to make
- waves that look more like deep ocean waves.
-
- Both waves and ripples respond to a parameter called phase.
- The phase option allows you to create animations in which
- the water seems to move. This is done by making the phase
- increment slowly between frames. The range from 0.0 to 1.0
- gives one complete cycle of a wave.
-
- The waves and ripples textures also respond to a parameter
-
-
- POV-Ray V1.0 Page 89
-
-
- called frequency. If you increase the frequency of the
- waves, they get closer together. If you decrease it, they
- get farther apart.
-
- bumps - Bump Pattern
- Syntax:
- bumps (bump size #)
- Example :
- bumps .4
-
- Approximately the same turbulence function as spotted, but
- uses the derived value to perturb the surface normal or, in
- other words, make the surface look bumpy. This gives the
- impression of a "bumpy" surface, random and irregular, sort
- of like an orange. After the bumps keyword, supply a single
- floating point value for the amount of surface perturbation.
- Values typically range from 0.0 (No Bumps) to 1.0 or
- greater(Extremely Bumpy).
-
- dents - Bump Pattern
- Syntax:
- dents (dent size #)
- Example :
- dents .4
-
- Interesting when used with metallic textures, it gives
- impressions into the metal surface that look like dents. A
- single value is supplied after the dents keyword to indicate
- the amount of denting required. Values range from 0.0
- (Showroom New) to 1.0 (Insurance Wreck). Use larger values
- at your own risk, they will raise your rates, anyway. Scale
- the pattern to make the pitting more or less frequent.
-
- wrinkles - Bump Pattern
- Syntax: wrinkles (wrinkle size #)
- Example : wrinkles .7
-
- This is sort of a 3-D bumpy granite. It uses a similar 1/f
- fractal noise function to perturb the surface normal in 3-D
- space. With a transparent color pattern, could look like
- wrinkled cellophane. Requires a single value after the
- wrinkles keyword to indicate the amount of wrinkling
- desired. Values from 0.0 (No Wrinkles) to 1.0 (Very
- Wrinkled) are typical.
-
-
-
- POV-Ray V1.0 Page 90
-
-
-
-
- Mapping Textures
-
- Mapping textures apply a picture to the surface of a shape
- or object. Maps are used to color objects, make them look
- bumpy, and to apply different textures to an object, all
- based on the color of the pixels in the mapped image.
-
- There are several different types of mapping, and several
- different methods to apply the map.
-
-
- Mapping Types:
- image_map:
- Applies the colors in the image to the surface of the
- shape.
- bump_map:
- Makes the surface look bumpy based on the color of the
- pixels in the mapped image.
- material_map:
- Changes the texture on the surface based on the color
- of the pixels in the mapped image.
-
- Mapping Method:
- 0 - Planar:
- Like a slide projector, it casts and image onto the
- surface from 0,0 to 1,1.
- 1 - Spherical:
- Wraps the image once around a sphere with radius 1.
- 2 - Cylindrical:
- Wraps the image once around a cylinder with radius 1,
- length 1.
- 3 - Torus:
- Wraps the image around a torus (donut) with inner and
- outer radius of 1.
-
- The documentation for image_map explains the basic options
- which are true for all mapping types.
-
- image_map - Color Pattern.
- Syntax:
- image_map { [map_type #] [<gradient>] image_type "filename"
- [alpha # #] [once] [interpolate #] }
-
- This is a special color pattern that allows you to import a
- bitmapped image file in GIF, TGA, IFF, or DUMP format and
- map that bitmap onto an object.
-
- For example:
-
- // Use planar (type 0) mapping to project falwell.gif
-
-
- POV-Ray V1.0 Page 91
-
-
- // onto the shape in a repeating pattern.
- // Set interpolation to 2 (bilinear) so the mapped GIF will
-
- // be smoothed and not look jaggy.
- image_map {
- map_type 0 <1 0 -1> gif "falwell.gif" interpolate 2
- }
-
- or
-
- // Use spherical (type 1) mapping to
- // wrap earth.tga once onto a unit sphere
- // No interpolation is used, so it may look
- // jaggy
- image_map {
- map_type 1 tga "earth.tga"
- }
- or
- // Use cylindrical (type 2) mapping to wrap
- // cambells.gif once onto a unit cylinder.
- // Set interpolation to 4 (normalized distance)
- // so the mapped GIF will be smoothed and not look jaggy.
- // Norm dist isn't as good as bi-linear, but it's faster.
- image_map {
- map_type 2 <1 -1 0> gif "cambells.gif" interpolate 4
- }
-
- The texture in the first example will be mapped onto the
- object as a repeating pattern. The once keyword places only
- one image onto the object instead of an infinitely repeating
- tiled pattern. When once is used, the color outside the
- mapped texture is set to transparent. You can use the
- layered textures to place other textures or colors below the
- image.
-
- The image map methods sphere, cylinder, and torus, wrap the
- image once and only once around a unit shape of the same name. The
- map may be scaled uniformly to apply to larger shapes. The maps
- may be applied to any shapes, but the results are undefined.
-
- The planar image map method is like a slide projector and
- will work the same for any shape.
-
- You can specify the alpha values for the color
- palette/registers of GIF or IFF pictures (at least for the
- modes that use palettes/colormaps). You can do this by
-
-
- POV-Ray V1.0 Page 92
-
-
- putting the keyword alpha immediately following the filename
- followed by the register/color number value and
- transparency. If the all keyword is used instead of a
- register/color number, then all colors in that colormap get
- that alpha value.
-
- Eg.
- image_map {
- map_type 0 <1.0 -1.0 0.0> gif "mypic.gif"
- alpha all 0.2 // Make all colors 20% transparent
- ...
-
- or
- alpha 0 0.5 // Make color 0 50% transparent
- alpha 1 1.0 // Make color 1 100% transparent
- alpha 2 0.3 // Make color 2 30% transparent
- ...
- once
- ...
- }
-
- NOTE: Alpha works as a filter, so adding alpha to the color
- black still leaves you with black no matter how high alpha
- is. If you want a color to be clear, add alpha 1 to the
- color white.
-
- By default, the image is mapped onto the X-Y plane in the
- range (0.0, 0.0) to (1.0, 1.0). If you would like to change
- this default, you may use an optional gradient <x, y, z>
- vector after the word image_map. This vector indicates which
- axes are to be used as the u and v (local surface X-Y) axes.
- The vector should contain one positive number and one
- negative number to indicate the "u" and "v" axes,
- respectively. You may translate, rotate, and scale the
- texture to map it onto the object's surface as desired. Here
- is an example:
-
- object {
- plane { < 0 0 1 > -20 }
- // make this texture use the x and z axes for
- the
- // image mapping.
- texture {
- image_map { 0 <1.0 0.0 -1.0> gif "image.gif" }
- scale <40.0 40.0 40.0>
- }
- }
-
-
- POV-Ray V1.0 Page 93
-
-
-
- The gradient vector and scaling will not affect a spherical
- image map. Nor will the "once" keyword. Spherical image maps
- auto-scale so that they wrap once around the sphere.
-
- Filenames specified in the image_map statements will be
- searched for in the home (current) directory first, and if
- not found, will then be searched for in directories
- specified by any "-l" (library path) options active. This
- would facilitate keeping all your image maps (.dis, .gif or
- .iff) files in a "textures" subdirectory, and giving an "-l"
- option on the command line to where your library of image
- maps are. Turbulence will affect image maps.
-
- bump_map - A Bump Pattern
- Syntax:
- bump_map { [map_type #] [<gradient>] image_type "filename"
- [bump_size #] [once] [interpolate #] [use_color]
- [use_index]}
-
- Instead of placing the color of the image on the shape,
- bump_map perturbs the surface normal based on the color of
- the image at that point. By default, bump_map uses the
- actual color of the pixel. This can also be specifically
- directed by using the use_color keyword.
-
- The height of the bump is based on how bright the pixel is.
- Black is not bumpy, white is very bumpy. Colors are
- converted to grey scale internally before calculating
- height.
-
- If you specify use_index, bump_map uses the color's palette
- number as the height of the bump at that point. So, color #0
- would not be bumpy and color #255 would be very bumpy. The
- actual color of the pixels doesn't matter when using the
- index.
-
- The relative bump_size can be scaled using bump_size #. The
- bump_size number can be any number other than 0. Valid
- numbers are 2, .5, -33, 1000, etc.
- Examples:
- // Use planar (type 0) mapping to project falwell.gif
- // onto the shape in a repeating pattern.
- // Set interpolation to 2 (bilinear) so the mapped GIF
- // will be smoothed and not look jaggy.
- // Black and white pictures make interesting bump_maps.
- bump_map {
- map_type 0 <1 0 -1> gif "falwell.gif"
-
-
- POV-Ray V1.0 Page 94
-
-
- interpolate 2 bump_size 5
- }
-
- or
-
- // Use spherical (type 1) mapping to wrap
- // earth.tga once onto a unit sphere
- // No interpolation is used, so it may look jaggy
- bump_map {
- map_type 1 tga "earth.tga" bump_size -3
- }
-
- or
-
- // Use cylindrical (type 2) mapping to wrap cambells.gif
- // once onto a unit cylinder.
- // Use color number of pixel for bump height
- // instead of actual color.
- bump_map {
- map_type 2 <1 -1 0> gif "cambells.gif" use_index
- }
-
- General information on maps can be found above in the
- section on image_map.
-
- material_map - A texture pattern
- Syntax:
- material_map { map_type # [<gradient>] image_type
- "filename" [once] [interpolate #]
- texture{... } // First used for color 0
- texture {...} // Second texture used for color 1
- texture {...} // Third texture used for color 2
- texture {...} // Fourth texture used for color 3
- // Color 4 will use texture 5
- // Color 5 will use texture 6 and so on.
- }
-
- Like the tiles texture pattern, material_map applies other
- textures to a surface. It maps the image to the surface, and
- then picks the texture for each point on the surface based
- on the color index in the mapped image.
-
- Imagine a GIF image of blue squiggles on a black background,
- we'll call it SQUIG.GIF. Looking at the image's palette you
- can see that black is color 0 and blue is color 1. You can
- view the palette using a paint program. So, we make a
- material map for it like this:
-
-
-
- POV-Ray V1.0 Page 95
-
-
- material_map {
- map_type 0 gif "squig.gif"
- texture { DMFWood2 } // First texture used
- // for color 0 Black
- texture { Gold_Metal } // Second texture used
- // for color 1 Blue
- }
-
- This map applied to a sphere would put DMFWood1 everywhere
- the black would be and Gold_Metal everywhere it finds blue
- squiggles. The effect is of gold inlaid metal on a wooden
- sphere! It can be very effective when used correctly.
-
- NOTE: Layered textures don't work properly with material
- maps. Only the top layer of layered textures will show on
- them.
-
- General information on maps can be found above in the
- section on image_map.
-
-
- Interpolation
- Interpolation smooths the jaggies on an image or bump map by
- using a technique similar to anti-aliasing. Basically, when
- POV-Ray asks for the color from a bump or image map, it
- often asks for a point that is not directly on top of one
- pixel, but sort of between several different colored pixels.
- Interpolations returns an "in-between" value so that the
- steps between the pixels in the image or bump map will look
- smoother.
-
- There are currently two types of interpolation:
-
- Normalized Distance -- interpolate 4
- Bilinear -- interpolate 2
-
- Default is no interpolation. Normalized distance is the
- slightly faster of the two, bilinear does a better job of
- picking the between color. Normally, bilinear is used.
-
- If your bump or image map looks jaggy, try using
- interpolation instead of going to a higher resolution image.
- The results can be very good.
-
-
-
- POV-Ray V1.0 Page 96
-
-
- Misc Features
-
-
- Fog
- The ray tracer includes the ability to render fog. To add
- fog to a scene, place the following declaration outside of
- any object definitions:
-
- fog {
- color White // the fog color
- 200.0 // the fog distance
- }
-
- The fog to color ratio is calculated as:
-
- 1-exp(- depth/distance)
-
- So at depth 0, the color is pure (1.0) with no fog (0.0).
- At the fog distance, you'll get 63% of the color from the
- object's color and 37% from the fog color.
-
-
-
- POV-Ray V1.0 Page 97
-
-
-
- Default Texture
- When a texture is first created, POV-Ray initializes it with
- default values for all options. The default values are:
-
- color red 0 green 0 blue 0 alpha 0
- ambient .1
- diffuse .6
- phong 0
- phong_size 40
- specular 0
- roughness .05
- brilliance 1
- metallic FALSE
- reflection 0
- refraction 0
- ior 1
- turbulence 0
- octaves 6
- texture randomness (dither) 0
- phase 0
- frequency 1
- color map NONE
-
- These values can be changed with the default texture
- feature. After the parser reads a default texture, it will
- initialize new textures with the new default values. The
- syntax of the default texture is:
-
- #default {
- texture {..}
- }
-
- Any texture values may be used. A Common use for the default
- texture is to change the ambient and diffuse values through
- the entire scene. For example:
-
- #default { texture { ambient .5 diffuse .9} }
-
- Would make any textures created after this line use ambient
- .5 and diffuse .9. All other values will remain at their old
- default values. Ambient .5 diffuse .9 won't look good, but
- it'll brighten up the scene if you need help positioning
- objects.
-
- Any textures that specifically list a value will override
-
-
- POV-Ray V1.0 Page 98
-
-
- the default value. Default textures may be used more than
- once in a scene. The new defaults will affect every texture
- that is created following the default definition.
-
- Max trace level
- Syntax: max_trace_level # (default = 5)
-
- Max_trace_level sets the number of levels that POV-Ray will
- trace a ray. This is used when a ray is reflected or is
- passing through a transparent object. When a ray hits a
- reflective surface, it spawns another ray to see what that
- point reflects, that's trace level 1. If it hits another
- reflective surface, then another ray is spawned and it goes
- to trace level 2. The maximum level by default is 5.
-
- If max trace level is reached before a non-reflecting
- surface is found, then the color is returned as black. Raise
- max_trace_level if you see black in a reflective surface
- where there should be a color.
-
- The other symptom you could see is with transparent objects.
- For instance, try making a union of concentric spheres with
- the Cloud_Sky texture on them. Make ten of them in the union
- with radius's from 1-10 then render the Scene. The image
- will show the first few spheres correctly, then black. Raise
- max_trace_level to fix this problem.
-
- Note: Raising max_trace_level will use more memory and time
- and it could cause the program to crash with a stack
- overflow error. Values for max_trace_level are not
- restricted, so it can be set to any number as long as you
- have the time and memory.
-
-
-
-
- POV-Ray V1.0 Page 99
-
-
-
-
- Advanced Lessons
-
- The information in this section is designed for people who
- are reasonably familiar with the raytracer and want more
- information on how things work. You probably don't need this
- level of detail to make interesting scene files, but if you
- suddenly get confused about something the program did, this
- section may help you figure it out.
-
-
-
- POV-Ray V1.0 Page 100
-
-
-
- Camera
-
- Cameras are internally defined by the four vectors:
- Location, Direction, Up and Right. The other keywords in a
- camera block are used to modify some or all of those four
- values.
-
- The location is simply the X, Y, Z coordinates of the
- camera. The camera can be located anywhere in the
- ray-tracing universe.
-
- The direction vector describes the distance from the
- location of the camera to the viewplane. It also specifies
- the angle of view. Specifically, it's a vector that starts
- at the location and points to the center of the viewplane.
-
- The up vector defines the height of the viewplane.
- The right vector defines the width of the viewplane.
-
- This figure illustrates the relationship of these vectors:
-
- |\
- | \
- | \
- | \
- | ^ \
- | | |Up=Height of viewplane
- |\ | |
- (Camera) | \| |
- Location *-------------------> | THE SCENE
- Direction | |\ |
- = Distance | | \|Right= Width of
- viewplane
- from camera \ | |
- to viewplane \ | |
- \| |
- \ |
- \ |
- \|
-
- The viewplane is divided up according to the image
- resolution specified and rays are fired through the pixels
- out into the scene.
-
- This camera model is very flexible. It allows you to use
- left-handed or right-handed coordinate systems. It also
-
-
- POV-Ray V1.0 Page 101
-
-
- doesn't require that the direction, up, and right vectors be
- mutually orthogonal. If you want, you can distort the camera
- to get really bizarre results.
-
- For an eye ray, therefore, the equation of the ray is:
-
- Location + t (Direction + ((height - y)*up) + (x*right))
-
- where "t" is a parameter that determines the distance from
- the eye to the object being tested. The Y coordinate is
- inverted by subtracting it from height because most graphics
- systems put 0,0 in the top left corner of the screen.
-
-
- Once the basic four vectors are specified, it's possible to
- use the sky and look_at vectors to point the camera. You
- must specify the sky vector first, but let's describe the
- look_at vector first. look_at tells the camera to rotate in
- such a way that the look_at point appears in the center of
- the screen. To do this, the camera first turns in the
- left-to-right direction (longitude in Earth coordinates)
- until it's lined up with the look_at point. It then turns in
- the up/down direction (latitude in Earth coordinates) until
- it's looking at the desired point.
-
- Ok, now we're looking at the proper point. What else do we
- have to specify? If you're looking at a point, you can still
- turn your camera sideways and still be looking at the same
- spot. This it the orientation that the sky direction
- determines. The camera will try to position itself so that
- the camera's up direction lines up as closely as possible to
- the sky direction.
-
- Put another way - in airplane terms, the look_at vector
- determines your heading (north, south, east, or west), and
- your pitch (climbing or descending). The sky vector
- determines your banking angle.
-
- Ray-Object Intersections
- For every pixel on the screen, the raytracer fires at least
- one ray through that pixel into the world to see what it
- hits. For each hit it calculates rays to each of the light
- sources to see if that point is shadowed from that light
- source. For reflecting objects, a reflected ray is traced.
- For refracting objects, a refracting ray is traced. That all
- adds up to a lot of rays.
-
- Every ray is tested against every object in the world to see
-
-
- POV-Ray V1.0 Page 102
-
-
- if the ray hits that object. This is what slows down the
- raytracer. You can make things easier by using simple
- bounding shapes on your objects.
-
- When you use the anti-aliasing option (+a) on your image,
- the ray tracer will send out multiple rays through each
- pixel and average the results. This will make the image
- smoother, but tracing more rays also makes it take longer to
- render.
-
-
-
- POV-Ray V1.0 Page 103
-
-
-
-
- Textures, Noise, and Turbulence
-
- Here's how some of the texture features work. If you want
- some good reading material, check out "An Image Synthesizer"
- by Ken Perlin in the SIGGRAPH '84 Conference Proceedings.
-
- Let's start with a marble texture. Real marble is created
- when different colors of sediments are laid down one on top
- of another and compressed to form solid rock.
-
- With no turbulence, a cube textured with marble looks like
- this:
-
- ---------------
- / / / / /|
- / / / / / |
- ---------------- |
- | | | | | |
- | | W | | W | |
- | R | H | R | H | |
- | E | I | E | I | |
- | D | T | D | T | /
- | | E | | E |/
- ----------------
-
- If you carve a shape put of this block of marble, you will
- get red and white bands across it.
-
-
-
- POV-Ray V1.0 Page 104
-
-
-
- Now, consider wood. The rings in wood are created when the
- tree grows a new outer shell every year. Hence, we have
- concentric cylinders of colors:
-
- ______
- / /
- / / \
- / / \
- / / \
- / / |
- /______/ |
- / _____ \ |
- / / ___ \ \ |
- / / / _ \ \ \ /
- / / / / \ \ \ \ /
- | | | | | | | | /
- | | | |O| | | | /
- | | | | | | | |/
- \ \ \ \_/ / / /
- \ \ \___/ / /
- \ \_____/ /
- \_______/
-
- Cutting a shape out of a piece of wood will tend to give you
- rings of color. This is fine, but the textures are still a bit boring. For the next step, we blend the colors
- together to create a nice smooth transition. This makes the
- texture look a bit better. The problem, though, is that it's
- too regular - real marble and wood aren't so perfect. Before we make our wood and
- marble look any better, let's look at how we make noise. Noise (in
- raytracing) is sort of like a random number generator, but
- it has the following properties:
-
- 1) It's defined over 3D space i.e., it takes x, y, and z
- and returns the noise value there.
- 2) If two points are far apart, the noise values at those
- points are relatively random.
- 3) If two points are close together, the noise values at
- those points are close to each other.
-
- You can visualize this as having a large room and a
- thermometer that ranges from 0.0 to 1.0. Each point in the
- room has a temperature. Points that are far apart have
- relatively random temperatures. Points that are close
- together have close temperatures. The temperature changes
- smoothly, but randomly as we move through the room.
-
-
- POV-Ray V1.0 Page 105
-
-
-
- Now, let's place an object into this room along with an
- artist. The artist measures the temperature at each point on
- the object and paints that point a different color depending
- on the temperature. What do we get? bozo texture!
-
- Another function used in texturing is called DNoise. This is
- sort of like noise except that instead of giving a
- temperature, it gives a direction. You can think of it as
- the direction that the wind is blowing at that spot.
-
- Finally, we have a function called turbulence which uses
- DNoise to push a particle around a few times - each time
- going half as far as before.
-
- P ------------------------->
- First Move /
- /
- /
- /Second
- / Move
- /
- ______/
- \
- \
- \
- Q - Final point.
-
- This is what we use to create the "interesting" marble and wood
- texture. We locate the point we want to color (P),
- then push it around a bit using Turbulence to get to a final
- point (Q) then look up the color of point Q in our ordinary
- boring wood and marble textures. That's the color that's used
- for the point P.
-
- Octaves
- In conjunction with the turbulence function, is the
- "octaves" value. The octaves value tells the turbulence
- function exactly how many of these "half-moves" to make.
- The default value of 6 is fairly close to the upper limit;
- you won't see much change by setting it to a higher value,
- but you can achieve some very interesting effects by
- specifying lower values in the range of 2-5. Setting octaves
- higher than around 10 can cause a "stack overflow" error
- (crash) on some machines.
-
-
- Layered Textures
- POV-Ray supports layered textures. They can be used to
- create very sophisticated materials. Here's how they work.
-
-
-
- POV-Ray V1.0 Page 106
-
-
- Each object and each shape has a texture that may be
- attached to it. By default, shapes have no texture, but
- objects have a default texture. Internally, textures are
- marked as being constant or variable. A constant texture is
- one that was declared as a texture and is being shared by
- many shapes and objects. Variable textures are textures that
- have been declared totally within the object or have used a
- declared texture and modified it in a destructive way. The
- idea here is that we want to save on memory by sharing
- textures if possible.
-
- If you have several texture blocks for an object or a shape,
- they are placed into a linked list (First-in Last-out). For
- example, take the following definition:
-
- object {
- sphere <0 0 0> 1 }
- texture { Wood }
- texture { Clouds }
- }
-
- Here's what happens while parsing this object: Since this is
- an object (as opposed to a shape - sphere, plane, etc.), it
- starts out with the default texture attached.
-
- ________ _________
- | | | |
- | |----->|Default|
- |Object| |Texture|
- | | |_______|
- | |
- |______|
-
- When the parser sees the first texture block, it looks to
- see what it has linked. Since the thing that's linked is the
- default texture (not a copy), it discards it and puts in the
- new texture.
-
- ________ _________
- | | | |
- | |----->| Wood |
- |Object| |Texture|
- | | |_______|
- | |
- |______|
-
- On the next texture, it sees that the texture isn't the
-
-
- POV-Ray V1.0 Page 107
-
-
- default one, so it adds the second texture into the linked
- list.
- ________ _________ _________
- | | | | | |
- | |----->|Clouds |----->| Wood |
- |Object| |Texture| |Texture|
- | | |_______| |_______|
- | |
- |______|
-
-
- If you want to specify the refraction of the texture, the
- raytracer must first calculate the surface color. It does
- this by marching through the texture list and mixing all the
- colors. When it's finished, it checks the alpha value of the
- surface color and decides whether it should trace a
- refracting ray. Where does it get the refraction value and
- the index of refraction? It simply takes the one in the
- topmost (the last one defined) texture.
-
-
-
-
- POV-Ray V1.0 Page 108
-
-
- Parallel Image Mapping
-
- One form of image mapping that POV-Ray supports is called a
- "parallel projection" mapping. This technique is simple, but
- it's not perfect. It works like a slide projector casting
- the desired image onto the scene. The difference, however,
- is that the image never gets larger as you move further away
- from the slide projector. In fact, there is no real slide
- projector.
-
- Note that an object cannot shadow itself from the image
- being mapped. This means that the image will also appear on
- the back of the object as a mirror image.
-
- The mapping takes the original image (regardless of the
- size) and maps it onto the range 0,0 to 1,1 in two of the 3D
- coordinates. Which two coordinates to use is specified by
- the gradient vector provided after the image. This vector
- must contain one positive number, one negative number, and
- one zero. The positive number identifies the u axis (the
- left right direction in the image) and the negative number
- represents the v axis (the picture's up-down direction).
- Note that the magnitude of the number is irrelevant.
-
- For example:
- image_map { <1 -1 0> gif "filename" }
-
- will map the gif picture onto the square from <0 0 0> to <1
- 1 0> like this:
-
- Y
- ^
- |
- |
- |
- 1 |----------
- | Top R|
- |L i|
- |e g|
- |f h|
- |t t|
- | Bottom |
- ----------------> X
- 1
-
- If we reversed the vector, the picture would be transposed:
-
-
-
- POV-Ray V1.0 Page 109
-
-
- image_map { <-1 1 0> gif "filename" }
-
- produces:
-
- Y
- ^
- |
- |
- |
- 1 |----------
- |B Right |
- |o T|
- |t o|
- |t p|
- |o |
- |m Left |
- ----------------> X
- 1
-
- Once the image orientation has been determined, it can be
- translated, rotated, and scaled as desired to map properly
- onto the object.
-
- Common Questions and Answers
-
- Q: I keep running out of memory. What can I do?
-
- A: Buy more memory. But seriously, you can decrease the
- memory requirements for any given picture in several ways:
- 1) declare texture constants and use them ( textures are
- shared).
- 2) Don't modify the texture that you are sharing by scaling,
- rotating or translating. On the first modify, the texture is
- copied and (therefore) takes up more space.
- 3) Put the object transformations before the texture
- structure. This prevents the texture from being transformed
- (and hence, copied. This may not always be desirable,
- though).
- 4) Use union instead of composite objects to put pieces
- together.
- 5) Use fewer or smaller image maps.
- 6) Use GIF or IFF (non-HAM) images for image maps. These are
- stored internally as 8 bits per pixel with a color table instead of
- 24 bits per pixel.
-
- Q: I get a floating point error on certain pictures. What's
- wrong?
-
-
-
- POV-Ray V1.0 Page 110
-
-
- A: The raytracer performs many thousands of floating point
- operations when tracing a scene. If checks were added to
- each one for overflow or underflow, the program would be
- much slower. If you get this problem, first look through
- your scene file to make sure you're not doing something
- like:
-
- - Scaling something by 0 in any dimension.
- Ex: scale <34 2 0> will generate an error.
- - Making the look_at point the same as the location in the
- camera
- - Looking straight down at the look_at point
- - Defining triangles with two points the same (or nearly the
- same)
- - Using the zero vector for normals.
- - Using a roughness value of zero (0).
-
- If it doesn't seem to be one of these problems, please let
- us know. If you do have such troubles, you can try to
- isolate the problem in the input scene file by commenting
- out objects or groups of objects until you narrow it down to
- a particular section that fails. Then try commenting out the
- individual characteristics of the offending object.
-
- Q: No matter how much I scale a Cylinder, I can't make it
- fit on the screen. How big is it and how much do I have to
- scale it?
-
- A: Cylinders (like most quadrics) are infinitely long. No
- matter how much you scale them, they still won't fit on the
- screen. To make a disk out of a cylinder, you must use CSG:
-
- intersection {
- quadric { Cylinder_Y }
- plane {<0.0 1.0 0.0> 1.0 }
- plane {<0.0 -1.0 0.0> 1.0 }
- }
-
- This object is defined in SHAPES.INC as a Disk. Try using a
- Disk instead. There are three disk types, Disk_X, Disk_Y,
- and Disk_Z.
-
- Cylinders CAN be scaled in cross-section, the two vectors
- not in the name of the cylinder (X and Z, in our example
- above) can be scaled to control the width and thickness of
- the cylinder. Scaling the Y value (which is normally
- infinite) is meaningless, unless you have "capped" it as
-
-
- POV-Ray V1.0 Page 111
-
-
- above, then scaling the entire intersection object in the Y
- dimension will control the height of the cylinder.
-
- Q: Are planes 2D objects or are they 3D but infinitely thin?
-
-
- A: Neither. Planes are 3D objects that divide the world into
- two half-spaces. The space in the direction of the surface
- normal is considered outside and the other space is inside.
- In other words, planes are 3D objects that are infinitely
- thick. For the plane, plane { <0 1 0> 0 }, every point with a
- positive Y value is outside and every point with a negative
- Y value is inside.
- ^
- |
- |
- | Outside
- _______|_______
- Inside
-
- Q: Can POV-Ray render soft shadows?
-
- A: Not directly. You can use a spotlight to get soft edges
- on the spot light. You can also create multiple copies of
- the same scene with the light sources in a slightly
- different location in each copy and average them together
- with Piclab or DTA15b to get a soft shadow.
-
- Q: I'd like to go through the program and hand-optimize the
- assembly code in places to make it faster. What should I
- optimize?
-
- A: Don't bother. With hand optimization, you'd spend a lot
- of time to get perhaps a 5-10% speed improvement at the cost
- of total loss of portability. If you use a better
- ray-surface intersection algorithm, you should be able to
- get an order of magnitude or more improvement. Check out
- some books and papers on raytracing for useful techniques.
- Specifically, check out "Spatial Subdivision" and "Ray
- Coherence" techniques.
-
- Q: Objects on the edges of the screen seem to be distorted.
- Why?
-
- A: If the direction vector of the camera is not very long,
- you may get distortion at the edges of the screen. Try
- moving the location back and raising the value of the
-
-
- POV-Ray V1.0 Page 112
-
-
- direction vector.
-
-
- Q: How do you position planar image maps without a lot of
- trial and error?
-
- A: By default, images will be mapped onto the range 0,0 to
- 1,1 in the appropriate plane. You should be able to
- translate, rotate, and scale the image from there.
-
- Q: What's the difference between alpha and refraction?
-
- A: The difference is a bit subtle. Alpha is a component of a
- color that determines how much light can pass through that
- color. Refraction is a property of a surface that determines
- how much light can come from inside the surface. See the
- section above on Transparency and Refraction for more
- details.
-
- Q: How do you calculate the surface normals for smooth
- triangles?
-
- A: There are two ways of getting another program to
- calculate them for you. There are now several utilities to
- help with this.
-
- 1) Depending on the type of input to the program, you may be
- able to calculate the surface normals directly. For example,
- if you have a program that converts B-Spline or Bezier
- Spline surfaces into POV-Ray format files, you can calculate
- the surface normals from the surface equations.
-
- 2) If your original data was a polygon or triangle mesh,
- then it's not quite so simple. You have to first calculate
- the
- surface normals of all the triangles. This is easy to do -
- you just use the vector cross-product of two sides (make
- sure you get the vectors in the right order). Then, for
- every vertex, you average the surface normals of the
- triangles that meet at that vertex. These are the normals
- you use for smooth triangles. Look for the utilities
- SANDPAPER and TXT2POV.
-
- Q: When I render parts of a picture on different systems,
- the textures don't match when I put them together. Why?
-
- A: The appearance of a texture depends on the particular
-
-
- POV-Ray V1.0 Page 113
-
-
- random number generator used on your system. POV-Ray seeds
- the random number generator with a fixed value when it
- starts, so the textures will be consistent from one run to
- another or from one frame to another so long as you use the
- same executables. Once you change executables, you will
- likely change the random number generator and, hence, the
- appearance of the texture. There is an example of a standard
- ANSI random number generator provided in IBM.C, include it
- in your machine-specific code if you are having consistency
- problems.
-
- Q: What's the difference between a color declared inside a
- texture and one that's in a shape or an object and not in a
- texture?
-
- A: The color in the texture specifies the color to use for
- qualities 5 and up. The color on the shape and object are
- used for faster rendering in qualities 4 and lower and for
- the color of light sources. See the -q option for details on
- the quality parameter.
-
- Q: I created an object that passes through its bounding
- volume. At times, I can see the parts of the object that
- are
- outside the bounding volume. Why does this happen?
-
- A: Bounding volumes are not designed to change the shape of
- the object. They are strictly a realtime improvement
- feature. The raytracer trusts you when you say that the
- object is enclosed by a bounding volume. The way it uses
- bounding volumes is very simple:
- If the ray hits the bounding volume (or the ray's origin is
- inside the bounding volume),when the object is tested
- against that ray. Otherwise, we ignore the object. If the
- object extends beyond the bounding volume, anything goes.
- The results are undefined. It's quite possible that you
- could see the object outside the bounding volume and it's
- also possible that it could be invisible. It all depends on
- the geometry of the scene. If you want this effect use a
- clipped_by volume instead of bounded_by.
-
- Tips and Hints
-
- To see a quick version of your picture, render it very
- small. With fewer pixels to calculate the ray tracer can
- finish more quickly. --w80 -h60 is a good size.
-
-
- When animating objects with solid textures, the textures
-
-
- POV-Ray V1.0 Page 114
-
-
- must move with the object, i.e. apply the same rotate or
- translate functions to the texture as to the object itself.
- This is now done automatically if the transformations are
- placed _after_ the texture block. Example:
-
- object {
- shape { ... }
- texture { ... }
- scale < 1 2 3 >
- }
-
- Will scale the shape and texture by the same amount.
-
- object {
- shape { ... }
- scale < 1 2 3 >
- texture { ... }
- }
-
- Will scale the shape, but not the texture.
-
- You can declare constants for most of the data types in the
- program including floats and vectors. By combining this with
- include files, you can easily separate the parameters for an
- animation into a separate file.
-
- You can declare constants for most of the data types in the
- program including floats and vectors. By combining this
- with include files, you can easily separate the parameters
- for an animation into a separate file.
-
- Some examples of declared constants would be:
- #declare Y_Rotation = 5.0
- #declare ObjectRotation = <0 Y_Rotation 0>
- #declare MySphere = sphere { <0 0 0> 1.1234 }
-
- Other examples can be found scattered throughout the sample
- scene files.
-
- Wood is designed like a "log", with growth rings aligned
- along the z axis. Generally these will look best when
- scaled down by about a tenth (to a unit-sized object). Start
- out with rather small value for the turbulence, too (around
- 0.05 is good for starters).
-
- See the file "textures.doc" in the STDINC.ZIP file for more
-
-
- POV-Ray V1.0 Page 115
-
-
- pointers about advanced texture techniques.
-
- You can compensate for non-square aspect ratios on the
- monitors by making the right vector equal to (pixel
- width/pixel height). On an IBM-PC VGA that is
- (640/480)=1.333. A good value for the Amiga & IBM-PC is
- about 1.333. If your spheres and circles aren't round, try
- varying it. Macintoshes use 1.0 for this value.
-
- If you are importing images from other systems, you may find
- that the shapes are backwards (left-to-right inverted) and
- no rotation can make them correct. All you have to do is
- negate the terms in the right vector of the camera to flip
- the camera left-to-right (use the "right-hand" coordinate
- system).
-
- By making the direction vector in the camera longer, you can
- achieve the effect of a tele-photo lens. Shorter direction
- vectors will give a kind of wide-angle affect, but you may
- see distortion at the edges of the image.
-
- Suggested Reading
-
- First, a shameless plug for two new books coming out soon
- that are specifically about POV-Ray:
-
- The Waite Group's Ray Tracing Creations
- By Drew Wells
- Waite Group Press
- 1992
- and
- The Waite Group's Image Lab
- By Tim Wegner
- Waite Group Press
- 1992
-
- Image Lab by Tim Wegner will be out in the summer of '92 and
- contains a chapter about POV-Ray. Tim is the co-author of
- the best selling book, Fractal Creations, also from the
- Waite Group.
-
- Ray Tracing Creations by Drew Wells will be out later in '92 and is
- an entire book about ray tracing with POV-Ray.
-
- This section lists several good books or periodicals that
- you should be able to locate in your local computer book
- store or your local university library.
-
- "An Introduction to Raytracing"
-
-
- POV-Ray V1.0 Page 116
-
-
- Andrew S. Glassner (editor)
- Academic Press
- 1989
-
- "3D Artist" Newsletter
- ("The Only Newsletter about Affordable
- PC 3D Tools and Techniques")
- Publisher: Bill Allen
- P.O. Box 4787
- Santa Fe, NM 87502-4787
- (505) 982-3532
-
- "Image Synthesis: Theory and Practice"
- Nadia Magnenat-Thalman and Daniel Thalmann
- Springer-Verlag
- 1987
-
- "The RenderMan Companion"
- Steve Upstill
- Addison Wesley
- 1989
-
- "Graphics Gems"
- Andrew S. Glassner (editor)
- Academic Press
- 1990
-
- "Fundamentals of Interactive Computer Graphics"
- J. D. Foley and A. Van Dam
- Addison-Wesley
- 1983
-
- "Computer Graphics: Principles and Practice (2nd Ed.)"
-
- J. D. Foley, A. van Dam, J. F. Hughes
- Addison-Wesley,
- 1990
-
- "Computers, Pattern, Chaos, and Beauty"
- Clifford Pickover
- St. Martin's Press
-
- "SIGGRAPH Conference Proceedings"
- Association for Computing Machinery
- Special Interest Group on Computer Graphics
-
- "IEEE Computer Graphics and Applications"
-
-
- POV-Ray V1.0 Page 117
-
-
- The Computer Society
- 10662, Los Vaqueros Circle
- Los Alamitos, CA 90720
-
- "The CRC Handbook of Mathematical Curves and Surfaces"
- David von Seggern
- CRC Press
- 1990
-
- "The CRC Handbook of Standard Mathematical Tables"
- CRC Press
- The Beginning of Time
-
- Legal Information
-
- For full details see POVLEGAL.DOC, the following information
- does not supersede the document POVLEGAL.DOC.
-
- The gist of that document is that POV-Ray and its related
- files are copyrighted software that may not be modified or
- distributed without the express written permission of the
- POV-Ray development team. POV-Ray and its related files may
- not be used in any commercial or non-commercial program
- without the express written permission of the POV-Ray
- development team. In particular, the user may not modify and
- re-distribute the POV-Ray software for any reason. Nor may
- the user distribute an executable created by the user from
- the POV-Ray source code.
-
- Scene and image files created by the user with POV-Ray are
- the user's property for the user to do as they see fit. The
- user is free to sell, display, distribute, or consume any
- scene files or image files created solely by the user for
- use with POV-Ray.
-
- The POV-Ray development team does not offer any warranty or
- guarantee for the software for any use. The POV-Ray team is
- not responsible for any loss incurred by the use of the
- software.
-
- If there is any question about the use or distribution of
- POV-Ray, please contact Drew Wells for clarification. See
- contacting the authors for info.
-
-
- POV-Ray V1.0 Page 118
-
-
-
-
- Contacting the Authors
-
- We love to hear about how you're using and enjoying the
- program. We also will do our best try to solve any problems
- you have with POV-Ray and incorporate good suggestions into
- the program.
-
- If you have a question regarding commercial use of,
- distribution of, or anything particularly sticky, please
- contact Drew Wells, the development team leader. Otherwise,
- spread the mail around. We all love to hear from you!
-
- The best method of contact is e-mail through Compuserve for
- most of us. America On-Line and Internet can now send mail
- to Compuserve, also, just use the Internet address and the
- mail will be sent through to Compuserve where we read our
- mail daily.
-
- Please do not send large files to us through the e-mail
- without asking first. We pay for each minute on Compuserve
- and large files can get expensive. Send a query before you
- send the file, thanks!
-
- Drew Wells
- (Development team leader. Worked on everything.)
- CIS: 73767,1244
- Internet: 73767.1244@compuserve.com
- AOL: Drew Wells
- Prodigy: SXNX74A (Not used often)
- US Mail:
- 905 North Ave 66
- Los Angeles, CA
- 90042
- Phone: (213) 254-4041
-
- Other authors and contributors in alphabetical order:
- -----------------------------------------------------
- David Buck
- (Original author of DKBTrace)
- (Primary developer, quadrics, docs)
- INTERNET:(preferred) dbuck@ccs.carleton.ca
- CIS: 70521,1371
-
- Aaron Collins
- (Co-author of DKBTrace 2.12)
- (Primary developer, IBM-PC display code,phong, docs)
- CIS: 70324,3200
-
-
- POV-Ray V1.0 Page 119
-
-
-
- Alexander Enzmann
- (Primary developer, Blobs, quartics, boxes, spotlights)
- CIS: 70323,2461
- INTERNET: xander@mitre.com
-
- Dan Farmer
- (Primary developer, docs, scene files)
- CIS:70703,1632
-
- Douglas Muir
- (Bump maps and height fields)
- CIS: 76207,662
- Internet:dmuir@media-lab.media.mit.edu
-
- Bill Pulver
- (Time code and IBM-PC compile)
- CIS: 70405,1152
-
- Chris Young
- (Primary developer, docs, scene files)
- CIS: 76702,1655
-
- Charles Marslette
- (IBM-PC display code)
- CIS: 75300,1636
-
- Mike Miller
- (Artist, scene files, stones.inc)
- CIS: 70353,100
-
- Jim Nitchals
- (Mac version, scene files)
- CIS: 73117,3020
-
- Eduard Schwan
- (Mac version, docs)
- Internet: JL.MACTECH@AppleLink.Apple.COM
-
- Randy Antler
- (IBM-PC display code enhancements)
- CIS: 71511,1015
-
- David Harr
- (Mac balloon help)
- CIS: 72117,1704
-
-
-
- POV-Ray V1.0 Page 120
-
-
- Scott Taylor
- (Leopard and Onion textures)
- CIS: 72401,410
-
-
-
- POV-Ray V1.0 Page 121
-
-
-
- Index of Authors
-
-
- Bill Allen: 116
- Randy Antler: 119
- David Buck: 5 74 75 118
- Aaron Collins: 5 9 118
- A. Van Dam: 116
- Alexander Enzmann: 119
- Dan Farmer: 119
- J. D. Foley: 116
- Andrew Glassner: 116
- J. F. Hughes: 116
- Charles Marslette: 119
- Mike Miller: 119
- Bill Minus: 9
- Douglas Muir: 58 119
- Jim Nitchals: 119
- Ken Perlin: 103
- Clifford Pickover: 116
- Bill Pulver: 119
- Adam Schiffman: 9
- Eduard Schwan: 119
- David von Seggern: 52 117
- Scott Taylor: 120
- Daniel Thalmann: 116
- Nadia Magnenat-Thalmann: 116
- Steve Upstill: 116
- Tim Wegner: 115
- Drew Wells: 115 117 118
- Chris Young: 119
-
-
- POV-Ray V1.0 Page 122
-
- INDEX
-
- abort: 13 16 18
- abstract: 66 67
- adaptive: 15
- Addison Wesley: 116
- advanced: 6 8 24 99 115
- aerobics: 44
- agate: 6 69 72 82 84
- aiming: 38
- air: 79
- airplane: 101
- alfred.ccs.carleton.ca: 9
- algorithm: 111
- anti-aliasing: 13 15 16 95 102
- alpha: 32 69 70 74 75 76 77 78
- 79 90 91 92 97 107 112
- altitude: 85
- ambient: 17 39 77 87 97
- America On-Line: 9 118
- Amiga: 7 14 36 115
- analogy: 62
- angle: 21 27 33 34 100 101 115
- animation: 16 71 72 73 78 113 114
- anonymous ftp: 9
- ansi: 113
- antenna: 35
- apocalypse: 6
- Apple: 7 9 119
- archive: 7 8 10 11 30 49 57
- art: 9
- artist: 5 11 72 105 116 119
- artwork: 8
- ascii: 5 10 11
- aspect ratio: 20 21 34 35 36 115
- assembly: 111
- attention: 21
- attenuates: 78
- attract: 52
- author: 4 17 115 117 118
- autocad: 34 44
- average: 8 80 102 111 112
- averaging: 15
- axis: 19 21 23 25 34 36 42 43
- 44 45 46 47 50 84 85 92
- 108 114
- background: 56 94
- backwards: 115
- ball: 11 24
- balloon: 119
- banding: 72
- bands: 23 69 74 84 103
-
-
- POV-Ray V1.0 Page 123
-
-
- benchmarks: 50
- bend: 79
- bezier: 6 59 61 112
- bicubic: 59
- bigbox: 31
- bilinear: 91 93 95
- bitmap: 90
- black: 37 57 59 77 92 93 94 95
- 98
- blend: 17 82 104
- blobs: 6 30 52 53 54 55 60 61 119
- block: 17 22 33 41 69 71 73 100
- 103 106 114
- blood: 6
- blowing: 105
- blu: 15
- blue: 6 14 22 24 27 28 32 37 38
- 39 41 45 57 66 71 74 75
- 76 77 79 82 83 85 94 95
- 97
- blustery: 82
- board: 9 83
- body: 29
- book: 52 111 115
- boolean: 59
- bore: 60
- bounces: 77
- bounding: 46 50 65 67 102 113
- box: 6 17 18 30 31 46 55 58 66
- 67 72 116
- boxes: 46 60 61 119
- bozo: 74 76 82 83 105
- bracket: 27
- brass: 6
- bright: 6 23 37 38 59 78 79 80 93
- brighten: 97
- brightness: 37 38
- brilliance: 78 97
- brown: 6
- brushed: 29
- buffer: 13 16
- building: 60
- built-in: 6 23 48 69
- bulge: 54
- bump: 69 70 71 88 89 90 93 94
- 95 119
- bumps: 70 89
- bumpy: 6 70 88 89 90 93
- bunch: 54
-
-
- POV-Ray V1.0 Page 124
-
-
- cad: 33 34 44
- calmer: 82
- cambells: 91 94
- camera: 10 19 20 21 22 32 33 34
- 35 36 44 100 101 110 111
- 115
- Canadian: 77
- candy cane: 85
- cap: 60
- capped: 110
- car: 29 65
- carve: 73 103
- catastrophic: 16
- ceiling: 45
- cellophane: 89
- chaos: 116
- chaotic: 58 72
- checker: 24 69 83 86
- checkerboard: 6
- cherry wood: 6
- Chicago: 9
- chrome: 6
- circle: 37 50 51 115 117
- circular: 38 60 85
- clip: 63 67 68 113
- clouds: 6 73 75 82 83 84 98 106 107
- coated: 52
- code: 8 9 50 57 61 64 111 113
- 117 118 119
- coefficients: 49 51
- coherence: 111
- color: 6 7 14 15 21 22 23 24 25
- 27 28 32 36 37 38 39 41
- 43 44 45 55 56 57 58 64
- 66 69 70 71 72 73 74 75
- 76 77 78 79 80 81 82 83
- 84 85 86 89 90 91 92 93
- 94 95 96 97 98 104 105
- 107 109 112 113
- colormap: 91 92
- colors: 5 6 17 20 21 22 24 28 30
- 32 47 57 69 70 73 74 75
- 77 78 79 82 83 86 90 91
- 92 93 103 104 107
- colour: 77
- COMART: 9
- command: 10 11 12 13 14 17 18 19
- 20 22 25 35 36 41 47 48 93
- comment: 25 26 110
-
-
- POV-Ray V1.0 Page 125
-
-
- Commodore Amiga: 7
- compile: 8 119
- component: 25 52 53 54 55 63 69 70
- 77 79 112
- composite: 6 30 48 65 66 67 109
- Compuserve: 9 118
- concatenate: 16
- concentric: 84 86 98 104
- cone: 6 24 37 38 40 46 47
- constant: 106
- constants: 109 114
- constructive: 6 59 60
- contact: 8 17 117 118
- contacting: 4 117 118
- contrast: 15
- convert: 8 12 22 59
- converted: 48 93
- converts: 112
- coordinate: 19 33 44 100 101 115
- coordinates: 19 20 21 33 37 47 84 100
- 101 108
- copyrighted: 5 117
- corner: 46 58 101
- corners: 46
- corona: 85
- cpu: 7
- crash: 16 98 105
- cray: 8
- crays: 8
- csg: 6 31 38 39 40 48 52 58 59
- 60 61 62 63 64 65 66 67
- 68 110
- cube: 56 103
- curve: 59
- curved: 48 59
- curves: 52 117
- cylinder: 6 24 25 40 47 60 64 90 91
- 94 110 111
- cylinders: 24 46 60 104 110
- cylindrical: 69 84 90 91 94
- dark: 37 59
- darkens: 37
- debugging: 50
- decimal: 27
- declaration: 20 30 34 49 53 67 96
- declare: 27 28 29 30 31 32 45 47
- 49 66 109 114
- declared: 30 106 113 114
- declaring: 20
-
-
- POV-Ray V1.0 Page 126
-
-
- default: 12 13 14 15 16 17 21 23
- 34 35 56 74 77 78 79 80
- 81 84 85 86 92 93 95 97
- 98 105 106 107 112
- defaults: 34 98
- define: 6 28 29 30 34 36 47 48 60
- 74
- defined: 6 20 21 22 23 24 27 28 29
- 35 36 46 47 48 49 51 60
- 61 65 69 74 75 80 83 100
- 104 107 110
- defines: 34 46 54 73 79 100
- defining: 60 65 74 110
- degrees: 36 38 42
- dense: 79
- densities: 53 55
- density: 53 54 55
- dent: 89
- dented: 54
- denting: 89
- dents: 70 89
- depth: 5 33 96
- Desqview: 7
- developer: 118 119
- developers: 8 9
- diameter: 47
- diamond: 79
- diamonds: 79
- difference: 15 31 48 50 60 61 63 64
- 108 112 113
- differences: 6 60
- diffuse: 17 39 78 87 97
- digits: 27
- dimension: 45 110 111
- dimensional: 5 10 47 69 70
- dimensions: 46
- directories: 10 17 20 93
- directory: 9 10 11 13 17 18 20 93
- dish: 24 46
- disk: 16 30 40 110
- disks: 60
- distance: 24 45 50 53 55 74 88 91
- 95 96 100 101
- distort: 101
- distorted: 111
- distortion: 21 33 111 115
- distorts: 73
- distribution: 11 117 118
- dither: 71 72 97
-
-
- POV-Ray V1.0 Page 127
-
-
- dithered: 72
- DKBTrace: 5 118
- dmfwood: 23 24 64 73 76 95
- dnoise: 105
- doc: 23 69 114 117
- docs: 10 12 14 22 50 118 119
- document: 5 11 34 117
- documentation: 7 8 14 90
- donut: 6 25 49 50 90
- doors: 65
- dos: 7
- double: 26
- drilling: 63
- dropouts: 49
- drops: 53 55
- duck: 30
- dull: 80
- dump: 6 13 14 90
- earth: 91 94 101
- edge: 70
- edges: 33 37 38 111 115
- elevation: 34
- ellipsoid: 6 45 47 66
- ellipsoids: 24 46
- emulator: 7
- engine: 29
- equation: 46 47 49 50 51 53 101
- equations: 50 112
- error: 25 71 81 98 105 109 110
- 112
- errors: 50 81
- Europe: 9
- example: 6 8 11 18 23 24 25 27 28
- 29 31 35 36 37 38 40 41
- 43 44 48 49 51 52 55 56
- 57 59 61 63 64 65 66 67
- 68 69 71 73 75 77 78 79
- 81 82 83 85 86 88 89 90
- 91 92 97 106 108 110 112
- 113 114
- examples: 11 12 17 38 45 47 49 55
- 71 93 114
- executable: 7 8 9 10 11 12 14 22 117
- executables: 7 8 9 16 113
- exercise: 44
- experiment: 78
- exponents: 27
- eye: 101
- facets: 80
-
-
- POV-Ray V1.0 Page 128
-
-
- fade: 83
- faked: 24
- falloff: 37 38 39
- falwell: 90 91 93
- famous: 44 75
- fantastic: 5 57
- field: 30 33 53 55 56 57 58 59
- fields: 6 53 55 56 57 58 61 119
- file: 6 7 10 11 12 13 14 16 17
- 18 19 20 22 23 24 25 26
- 27 28 29 30 46 47 49 51
- 55 56 57 58 79 81 90 110
- 114 118
- filename: 11 13 14 17 26 55 90 92
- 93 94 108 109
- filenames: 20 93
- files: 5 6 8 9 10 11 13 15 16 17
- 18 20 26 27 30 48 55 56
- 57 69 93 99 112 114 117
- 118 119
- film: 73
- filter: 75 92
- filtered: 75 77
- filters: 74 77
- fingers: 44
- flat: 36 45 48 56 60 77
- flatness: 59
- flattened: 45
- flicker: 16 73
- flip: 64 115
- flipped: 61
- float: 27
- floating: 25 27 53 72 89 109 110
- floats: 27 114
- floor: 11 24 45 61
- floors: 61
- flying: 73
- focus: 33
- fog: 96
- folder: 9
- fpu: 50
- fract: 55
- fractal: 6 9 55 56 57 85 89 115
- fractals: 9
- fractint: 9 57 58 59
- frame: 16 113
- frames: 88
- freeware: 5 57
- frequencies: 88
-
-
- POV-Ray V1.0 Page 129
-
-
- frequency: 88 89 97
- front: 21 23 26 27 42 45
- fundamentals: 116
- future: 86
- galvanized: 84
- garbage: 84
- geometry: 6 59 60 113
- Gerono: 51
- gif: 22 55 56 57 58 90 91 92
- 93 94 95 108 109
- glass: 6 79
- glop: 52
- glossiness: 80
- glows: 77
- gold: 6 95
- gradient: 82 84 85 90 92 93 94 108
- gradients: 84 85
- grain: 73
- granite: 6 82 85 86 89
- gray: 59
- green: 14 22 25 27 28 32 37 38
- 39 41 43 57 66 71 74 75
- 76 77 79 82 83 85 97
- grey: 37 75 76 83 93
- halt: 7
- halted: 7
- ham: 7 109
- hand: 34 44 48 59 111 115
- handbook: 52 117
- handed: 33 100
- handedness: 33 44
- hardware: 8
- heading: 101
- headquarters: 9
- height: 6 11 13 18 30 36 55 56 57
- 58 59 61 93 94 100 101
- 111 115 119
- hicolor: 6
- highlight: 22 23 71 80 81
- highlighted: 70
- highlighting: 6 78 79 80
- highlights: 6 22 37 71 78 80 81 88
- hints: 4 5 113
- historical: 21
- hole: 50 51 60 63
- home: 9 17 20 93
- honey: 52
- horizons: 80
- hotspot: 38
-
-
- POV-Ray V1.0 Page 130
-
-
- hourglass: 46
- humans: 25
- hyperboloid: 6
- hyperboloids: 24 46
- ibm: 6 7 8 9 13 14 15 18 36 50
- 57 58 113 115 118 119
- identifier: 37
- iff: 90 91 93 109
- image: 4 5 6 7 11 12 13 14 15 16
- 17 18 19 21 22 34 35 36
- 55 56 57 59 73 90 91 92
- 93 94 95 98 100 102 103
- 108 109 112 115 116 117
- inaccuracies: 61
- include: 5 6 8 10 17 20 24 26 27
- 30 46 47 67 113 114
- included: 7 8 9 10 11 12 14 22 25
- 30 38 57 58 59
- includes: 5 9 20 96
- index: 55 56 58 79 93 94 107
- indigo: 57
- indoors: 82
- infinite: 24 25 45 60 63 69 110
- infinitely: 91 110 111
- infinity: 24 25
- inlaid: 95
- input: 11 13 14 17 20 26 110 112
- inside: 39 47 48 53 61 62 63 64
- 67 87 111 112 113
- install: 9
- installation: 7 9
- installing: 9
- instance: 34 98
- intermediate: 57
- internet: 9 118 119
- interpolate: 90 91 93 94 95
- interpolation: 48 82 91 93 94 95
- interpolations: 95
- intersect: 65
- intersected: 58
- intersection: 31 40 48 58 60 61 63 64
- 65 66 67 80 110 111
- intersections: 6 50 60 101
- intersects: 58
- inverse: 61 64
- invert: 60
- inverted: 101 115
- invisible: 22 37 38 113
- ior: 78 79 97
-
-
- POV-Ray V1.0 Page 131
-
-
- islands: 56
- jade: 6 11 84 86
- jaggies: 15 95
- jaggy: 15 91 93 94 95
- japan: 9
- jittered: 15
- jittering: 15
- key: 18
- keypress: 13
- keyword: 9 23 28 30 34 35 38 39 41
- 49 52 61 64 72 81 84 89
- 91 92 93
- keywords: 79 84 100
- kilobytes: 16
- landscape: 36
- landscapes: 6 55 56 57
- language: 5 6 10 19 25 26 27 30
- latitude: 101
- layer: 73 75 87 95
- layered: 4 31 73 76 79 86 87 91 95
- 105
- layering: 75
- layers: 73 86
- lemnisca: 51
- lemniscate: 49 51
- lens: 20 21 33 35 115
- leopard: 6 86 120
- library: 6 13 17 18 20 93 115
- light: 5 17 22 23 25 32 36 37 38
- 39 70 74 75 77 78 79 80
- 81 88 101 111 112 113
- lighting: 5 6 8 17 44 50
- lights: 10 37 41
- location: 20 33 34 36 37 38 55 71
- 100 101 110 111
- longitude: 101
- lowercase: 20
- Macintosh: 7 9 115 119
- macro: 30
- mactech: 119
- magnenat: 116
- magnify: 23
- magnitude: 108 111
- mail: 118
- map: 58 69 74 76 82 83 84 85
- 86 90 91 92 93 94 95 97
- 108 109
- mapped: 58 85 90 91 92 93 94 108
- 112
-
-
- POV-Ray V1.0 Page 132
-
-
- mapping: 4 82 90 91 92 93 94 108
- maps: 69 74 82 83 86 90 91 93
- 94 95 108 109 112 119
- marble: 6 11 40 41 42 69 73 82 84
- 86 103 104 105
- marching cubes: 107
- masonry: 84
- material: 6 40 90 94 95 103
- materials: 6 8 69 105
- math: 7 49 50
- mathematical: 24 46 49 52 69 117
- mathematically: 5 51 55
- metal: 81 84 89 95
- metallic: 78 80 81 89 97
- metals: 6
- mickey: 28 29
- microscopic: 80
- mirror: 6 25 80 108
- mirrored: 25 78
- mirroring: 85
- model: 80 100
- modelling: 53
- modes: 91
- monitors: 115
- moose: 31
- mountains: 6
- moving: 5 72 111
- mypic: 92
- mysphere: 114
- nature: 15
- negate: 115
- negative: 19 47 52 54 92 108 111
- neighbor: 15
- nested: 20 26 27
- newsletter: 116
- noise: 15 73 83 84 85 89 103 104
- 105
- normalized: 91 95
- normals: 48 110 112
- north: 101 118
- number: 9 15 16 17 24 27 30 32 52
- 53 55 56 57 59 74 82 85
- 88 92 93 94 98 104 108
- 113
- numbers: 15 17 28 53 57 74 77 82
- 93
- numeric: 30 32 82
- numerical: 61
- object: 6 14 15 21 22 23 24 25 26
-
-
- POV-Ray V1.0 Page 133
-
-
- 28 29 30 31 32 38 39 40
- 41 42 43 44 45 47 48 49
- 50 59 60 61 64 65 66 67
- 68 71 72 73 74 75 77 78
- 80 81 82 83 84 90 91 92
- 96 98 101 102 105 106 107
- 108 109 110 111 113 114
- objectrotation: 114
- objects: 6 10 15 25 28 30 33 37 40
- 41 44 48 58 59 60 62 63
- 65 66 67 69 73 75 77 78
- 80 90 97 98 101 102 106
- 109 110 111 113
- oblate: 45
- ocean: 88
- octaves: 97 105
- onion: 6 86 120
- opaque: 74 77
- operating: 8 9 10
- optimization: 111
- optimize: 111
- optimized: 67
- optimum: 14
- option: 14 15 16 17 18 20 41 83
- 88 93 102 113
- optional: 15 27 49 56 71 72 86 92
- options: 7 12 14 17 18 20 22 90 93
- 97
- orange: 57 89
- organ: 84
- organic: 52
- orientation: 16 29 33 36 101 109
- orientations: 50
- oriented: 85
- origin: 24 45 46 47 48 58 113
- orthogonal: 101
- overflow: 98 105 110
- override: 18 19 97
- overwrite: 12
- paint: 56 57 94
- paints: 105
- palette: 55 56 57 59 91 93 94
- palettes: 91
- panther: 11
- papers: 111
- paraboloid: 6 47
- paraboloids: 24 46
- parameter: 13 16 17 21 56 58 69 71
- 77 88 101 113
-
-
- POV-Ray V1.0 Page 134
-
-
- parameters: 12 13 14 17 18 27 40 69
- 70 71 88 114
- parser: 97 106
- parsing: 106
- particle: 105
- pathname: 17
- pattern: 24 69 70 71 73 74 82 83
- 84 85 86 88 89 90 91 93
- 94 116
- patterns: 23 69 70 74 82 83 85 88
- pause: 13
- PCGRAPHICS: 9
- penumbral: 24
- periodicals: 115
- perspective: 5 21
- perturb: 89
- perturbation: 88 89
- perturbed: 73
- perturbs: 93
- phase: 88 97
- phone: 9 118
- phong: 6 22 23 29 32 45 48 64 71
- 72 73 74 76 78 79 80 81
- 88 97 118
- Piclab: 15 111
- pine: 6
- pinhole: 33
- pink: 57
- pinkalabaster: 66
- pipe: 84
- piriform: 51
- pitch: 101
- pixel: 14 15 36 55 57 58 93 94
- 95 101 102 109 115
- pixels: 6 11 13 16 18 21 36 49 55
- 73 90 93 95 100 113
- planar: 90 91 93 112
- plane: 6 24 45 46 58 61 67 92
- 106 110 111 112
- planes: 45 60 61 83 111
- planets: 48
- plastic: 77 80 81
- point: 11 19 21 25 26 27 33 34
- 35 36 37 38 39 41 42 44
- 47 53 54 56 59 61 63 72
- 73 74 82 83 89 93 94 95
- 98 101 104 105 109 110
- 111
- points: 24 27 35 37 38 44 46 53
-
-
- POV-Ray V1.0 Page 135
-
-
- 59 61 83 100 104 110
- polished: 80
- polygon: 112
- portability: 111
- portable: 8
- pot: 55 56 57 58
- povibm: 7
- povlegal: 117
- povmap: 55
- povray: 7 9 10 11 12 17 18 19 22
- povrayopt: 12 18 19
- preview: 59
- primitive: 44 45 61
- primitives: 6 48 61
- prodigy: 118
- project: 90 93
- projection: 59 108
- projections: 58
- projector: 90 91 108
- publisher: 116
- putty: 52
- qcone: 47
- QRT: 14
- quadric: 24 25 44 45 46 47 50 64
- 66 110
- quadrics: 24 46 47 49 50 110 118
- qualities: 113
- quality: 6 13 17 41 69 113
- quartic: 49 50 51 52
- quartics: 6 49 50 119
- radii: 54
- radius: 21 23 24 37 38 39 44 47
- 49 50 51 52 53 54 55 90
- 98
- random: 15 16 17 49 71 72 84 89
- 104 113
- randomly: 58 104
- randomness: 72 73 97
- range: 6 11 13 17 77 78 80 81 82
- 83 88 89 92 105 108 112
- ranges: 74 104
- ranging: 69
- raw: 6 13 14 15
- raytracer: 26 58 59 99 101 102 107
- 110 113
- raytracers: 19
- raytracing: 9 16 45 104 111 115
- readability: 26
- readable: 25
-
-
- POV-Ray V1.0 Page 136
-
-
- realtime: 113
- red: 11 14 15 21 22 24 27 28
- 32 37 38 39 41 57 66 71
- 74 75 76 77 79 82 83 85
- 86 97 103
- reflect: 37 71 78
- reflected: 17 25 79 98 101
- reflecting: 98 101
- reflection: 25 69 71 78 79 87 97
- reflections: 5 88
- reflective: 70 80 98
- reflectivity: 44
- reflects: 70 88 98
- refracted: 17 78
- refracting: 101 107
- refraction: 78 79 97 107 112
- refractive: 70
- register: 92
- registers: 14 91
- Renderman: 116
- repeatable: 15
- requirements: 109
- requires: 7 49 88 89
- resolution: 56 95 100
- reverse: 74
- reversed: 108
- revolved: 50
- right: 11 19 20 21 22 23 25 27
- 33 34 35 36 42 43 44 73
- 100 101 108 109 112 115
- ring: 50 51
- rings: 69 104 114
- ripple: 88
- ripples: 6 70 87 88
- rock: 103
- roof: 65
- room: 25 77 104 105
- rotate: 27 28 35 36 40 41 42 44
- 45 46 47 48 58 70 71 72
- 73 88 92 101 112 114
- rotated: 29 34 36 41 42 46 48 49
- 51 52 57 59 60 72 83 109
- rotates: 21 42
- rotating: 36 42 49 109
- rotation: 42 44 48 114 115
- rotations: 42 44 48
- rough: 15 23 81
- roughly: 23 53
- roughness: 80 81 97 110
-
-
- POV-Ray V1.0 Page 137
-
-
- round: 70 115
- rule: 23 61
- saddle: 24 46
- sandpaper: 112
- sapphire: 6
- satellite: 24
- saturation: 80
- scale: 23 25 28 32 40 41 42 43
- 45 46 47 48 52 58 59 64
- 66 70 71 72 73 74 75 76
- 85 88 89 92 93 110 112
- 114
- scaled: 23 25 29 41 45 46 48 49
- 52 56 57 59 60 72 83 91
- 93 109 110 114
- scales: 40 41 51
- scaling: 23 25 44 51 84 85 86 93
- 109 110 111
- scan: 16
- scanline: 16
- scanlines: 16
- scanned: 57
- scene: 5 6 7 8 9 10 11 12 13 15
- 16 17 18 19 20 21 22 25
- 26 27 28 29 30 32 33 35
- 37 39 40 41 46 55 71 78
- 96 97 98 99 100 108 110
- 111 113 114 117 119
- scenes: 5 6 8 10 11 21 27 49 59
- 67
- screen: 11 16 19 21 33 36 101 110
- 111
- screens: 36
- SGI: 8
- shade: 85
- shaded: 6 48 70
- shades: 74
- shading: 5 69 70 88
- shadow: 24 38 39 77 108 111
- shadowed: 78 101
- shadows: 17 24 37 111
- shape: 6 21 24 29 30 31 36 38 39
- 40 41 42 44 45 47 48 49
- 51 52 56 58 59 60 61 62
- 63 64 65 66 67 68 69 70
- 71 72 73 77 83 88 90 91
- 93 103 104 106 113 114
- shapes: 5 6 8 20 24 28 30 31 37
- 38 40 41 44 46 47 48 49
-
-
- POV-Ray V1.0 Page 138
-
-
- 50 51 52 58 59 60 61 62
- 63 65 66 67 68 69 91 102
- 106 110 115
- shapesq: 49
- shell: 104
- shinier: 80
- shininess: 78
- shining: 23 77 78
- shiny: 6 22 23 70 71 78 79
- sideways: 101
- Sierra: 6
- SIGGRAPH: 103 116
- sign: 27 33
- sine: 55
- sky: 6 33 34 35 57 73 83 98
- 101
- slash: 26
- slide: 90 91 108
- smooth: 6 15 23 48 49 54 57 59 70
- 74 81 82 85 104 112
- smoothed: 91 93
- smoother: 15 56 57 95 102
- smoothing: 13
- smoothly: 52 53 73 74 104
- smooths: 95
- soft: 24 33 37 38 111
- software: 5 7 8 117
- solid: 6 56 58 59 60 62 69 73 83
- 103 113
- solidly: 83
- south: 101
- spatial: 111
- specular: 6 22 78 79 80 81 97
- speed: 16 45 65 67 111
- speeds: 50 67
- spelling: 77
- sphere: 6 21 22 23 24 28 30 31 32
- 39 40 41 42 43 44 45 47
- 48 50 53 54 60 64 65 66
- 67 68 70 72 73 74 75 78
- 90 91 93 94 95 106 114
- spheres: 19 39 44 45 46 52 53 54
- 59 61 86 98 115
- spherical: 90 91 93 94
- spheroids: 45
- spikes: 58
- spin: 48
- spline: 82 112
- spotlight: 37 38 39 111
-
-
- POV-Ray V1.0 Page 139
-
-
- spotlights: 6 38 119
- spotted: 82 84 89
- sqrt: 49
- square: 36 56 108 115
- squares: 83
- squig: 94 95
- squiggles: 94 95
- squish: 23 42
- stack: 98 105
- stdinc: 114
- steel: 29
- steering: 29
- stone: 9 84 86
- stones: 69 86 119
- storage: 57
- stormy: 84
- Sturm: 49 52
- subdirectories: 10
- subdirectory: 9 10 20 93
- sunset: 6
- supercomputer: 8
- superimpose: 60
- surface: 6 17 21 24 25 44 45 46 47
- 48 49 50 53 54 59 61 69
- 70 71 73 77 78 79 81 83
- 87 88 89 90 92 93 94 98
- 107 111 112
- surfaces: 6 24 41 46 47 49 50 51 52
- 60 112 117
- swirled: 84
- syntax: 30 36 37 38 42 44 47 49
- 52 55 59 71 77 82 83 84
- 85 86 88 89 90 93 94 97
- 98
- Targa: 6 13 14 15 17
- telephoto: 33
- temperature: 104 105
- temperatures: 104
- temple: 11
- texture: 6 17 21 22 23 24 25 28 29
- 31 32 38 39 40 41 42 43
- 45 60 64 65 66 70 71 72
- 73 74 75 76 77 78 79 81
- 82 84 85 86 87 88 90 91
- 92 94 95 97 98 103 104
- 105 106 107 109 112 113
- 114 115
- textured: 29 82 103
- textures: 4 5 6 8 16 17 20 23 28 30
-
-
- POV-Ray V1.0 Page 140
-
-
- 31 41 47 69 71 72 73 74
- 75 76 79 81 86 87 88 89
- 90 91 93 94 95 97 98 103
- 104 105 106 109 112 113
- 114 120
- texturing: 83 105
- thermometer: 104
- thick: 111
- thickness: 110
- thin: 58 111
- threshold: 15 52 53 54
- tile: 86
- tiled: 11 91
- tiles: 86 87 94
- tips: 4 5 24 113
- tolerance: 15
- torus: 6 25 49 50 51 90 91
- trace: 9 27 52 98 107
- traceaholics: 9
- traced: 15 44 101
- tracer: 5 24 25 26 33 40 56 58 59
- 67 70 74 96 102 113
- tracers: 33
- tracing: 5 8 13 14 16 20 33 35 37
- 58 65 67 78 83 100 102
- 110 115
- transform: 46 48 71 72
- transformation: 40 41 43 48 70 85
- transformations: 40 41 48 58 65 70 71 72
- 109 114
- transformed: 41 58 109
- transforming: 43
- translate: 25 28 29 35 36 41 42 43
- 45 46 47 48 58 64 66 67
- 70 71 72 73 85 88 92 112
- 114
- translated: 29 36 41 46 48 49 51 52
- 57 59 60 72 83 109
- translates: 43 74
- translating: 36 43 49 109
- translation: 48
- translations: 44
- transmit: 79
- transmitted: 17
- transparency: 69 73 77 78 92 112
- transparent: 38 69 70 73 74 75 76 77
- 78 79 89 91 92 98
- transposed: 108
- tree: 10 30 69 104
-
-
- POV-Ray V1.0 Page 141
-
-
- triangle: 6 48 55 58 62 112
- triangles: 6 48 55 56 57 58 59 61 62
- 110 112
- turbulent: 83 84
- tutorial: 5 19
- undefined: 67 91 113
- underflow: 110
- union: 28 29 31 39 40 48 60 63
- 65 66 98 109
- unions: 6 60
- unit: 21 23 27 55 56 58 91 94
- 114
- units: 20 21 22 27 42 43 45 46
- 47
- universe: 20 27 33 35 100
- unix: 8
- utilities: 8 48 59 112
- utility: 10 59
- vapor: 83
- vaqueros: 117
- variable: 12 17 18 19 106
- variables: 49
- vax: 8
- vector: 21 24 27 33 34 35 44 49
- 84 85 92 93 100 101 108
- 110 111 112 115
- vectors: 20 27 32 33 34 35 36 41
- 100 101 110 112 114 115
- vein: 74
- veins: 74
- verbose: 86
- verlag: 116
- vertex: 58 112
- vertexes: 58
- vertical: 69
- vertices: 48
- VGA: 36 115
- viewplane: 100
- viewpoint: 33
- virtual: 22
- visible: 38 60 73
- vision: 5
- visual: 53
- visualize: 104
- volume: 113
- volumes: 113
- Waite Group: 115
- wall: 45 46
- water: 55 56 58 79 83 88
-
-
- POV-Ray V1.0 Page 142
-
-
- wave: 88
- waves: 6 70 87 88 89
- west: 9 101
- wheel: 29
- wheels: 65
- white: 22 27 28 37 39 57 59 75
- 76 77 78 83 92 93 96 103
- wide: 6 11 21 33 36 47 55 115
- width: 11 13 18 21 36 47 49 100
- 110 115
- wind: 105
- windows: 7 8
- wood: 6 23 69 71 73 74 75 76 82
- 84 86 88 104 105 106 107
- 114
- wooden: 24 95
- wrinkle: 89
- wrinkled: 6 89
- wrinkles: 70 89
- wrinkling: 89
- yellow: 63 64 66 82 83
- zero: 16 25 38 43 53 54 56 72
- 78 108 110
- zip: 7 114
-