POV-Ray
POV-Ray logo | |
Developer(s) | The POV-Team |
---|---|
Stable release | |
Preview release | |
Repository | |
Operating system | Cross-platform |
Type | Ray tracer |
License | POV-Ray License |
Website | www.povray.org |
The Persistence of Vision Raytracer, or POV-Ray, is a ray tracing program available for a variety of computer platforms. It was originally based on DKBTrace, written by David Kirk Buck and Aaron A. Collins. There are also influences from the earlier Polyray raytracer contributed by its author Alexander Enzmann. POV-Ray is freeware with the source code available.
History
Some time in the 1980s, David Kirk Buck downloaded the source code for a Unix raytracer to his Amiga. Interested, he played with it for a while, eventually deciding to write his own raytracer, named DKBTrace after his initials. He posted it to his bulletin board system, thinking others might be interested in it. In 1987, Aaron Collins downloaded DKBTrace and began working on an x86-based port of it. He and David Buck collaborated to add several more features. When the program proved to be more popular than anticipated they could not keep up with demand for more features. Thus, in 1989, David turned over the project to a team of programmers. At the same time, he felt that it was inappropriate to use his initials on a program he no longer maintained. The name "STAR" (Software Taskforce on Animation and Rendering) was considered, but eventually the name became the "Persistence of Vision Raytracer," or "POV-Ray" for short.[1]
POV-Ray was the first ray tracer to render an image in orbit, rendered by Mark Shuttleworth inside the International Space Station.[2]
Features
POV-Ray has matured substantially since it was created. Recent versions of the software include the following features:
- A Turing-complete scene description language (SDL) that supports macros and loops.[3]
- Library of ready-made scenes, textures, and objects
- Support for a number of geometric primitives and constructive solid geometry
- Several kinds of light sources
- Atmospheric effects such as fog and media (smoke, clouds)
- Reflections, refractions, and light caustics using photon mapping
- Surface patterns such as wrinkles, bumps, and ripples, for use in procedural textures and bump mapping
- Radiosity
- Image format support for textures and rendered output, including TGA, PNG, JPEG (only input) among others
- Extensive user documentation
One of POV-Ray's main attractions is its large collection of third party support. A large number of tools, textures, models, scenes, and tutorials can be found on the web. It is also a useful reference for those wanting to learn how ray tracing and related geometry and graphics algorithms work.
Current version
The current official version of POV-Ray is 3.6. Some of the main features of this release:
- Extends UV-mapping to more primitives.
- Adds 16 and 32 bit integer data to density file.
- Various bugfixes and speed-ups.
- Improved 64 bit compatibility.
Beta-testing of version 3.7 is underway as of fall 2006. The main improvement over 3.6 will be SMP support to allow the renderer to take advantage of multiple processors. Additionally, support has been added for HDRI, including the OpenEXR and Radiance file formats, and improved bounding using BSP trees.
In July 2006, Intel corporation started using the beta version to demonstrate their new dual-core Conroe processor due to the efficiency of the 3.7 beta's SMP implementation.[4]
Primitives
POV-Ray, in addition to standard geometric shapes like tori, spheres and heightfields, supports mathematically defined primitives such as the isosurface (a finite approximation of an arbitrary function), the polynomial primitive (an infinite object defined by a 15th order or lower polynomial), the julia fractal (a 3-dimensional slice of a 4-dimensional fractal), the superquadratic ellipsoid (intermediate between a sphere and a cube), and the parametric primitive (using equations that represent its surface, rather than its interior).
POV-Ray internally represents objects using their mathematical definitions; all POV-Ray primitive objects can be described by mathematical functions. This is different from many 3D computer modeling packages, which typically use triangle meshes to compose all objects.
This fact provides POV-Ray with several advantages over other rendering / modeling systems. POV-Ray primitives are more accurate than their polygonal counterparts. Objects that can be described in terms of spheres, planar surfaces, cylinders, tori and the like are perfectly smooth and mathematically accurate in POV-Ray renderings, whereas polygonal artifacts may be visible in mesh-based modeling software. POV-Ray primitives are also simpler to define than most of their polygonal counterparts. In POV-Ray, a sphere is described simply by its center and radius; in a mesh-based environment, a sphere must be described by a multitude of small polygons.
On the other hand, primitive-, script-based modeling is not always a practical method to create objects such as realistic characters or complex man-made artifacts like cars. Those objects have to be created in mesh-based modeling applications such as Wings 3D or Blender and then converted to POV-Ray's own mesh format.
Examples of the Scene Description Language
The following is an example of the scene description language used by POV-Ray to describe a scene to render. It demonstrates use of the camera, lights, a simple box shape and the transforming effects of scaling, rotation and translation.
#version 3.6; #include "colors.inc" global_settings { assumed_gamma 1.0 } background { color rgb <0.25, 0.25, 0.25> } camera { location <0.0, 0.5, -4.0> direction 1.5*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> } light_source { <0, 0, 0> color rgb <1, 1, 1> translate <-5, 5, -5> } light_source { <0, 0, 0> color rgb <0.25, 0.25, 0.25> translate <6, -6, -6> } box { <-0.5, -0.5, -0.5> <0.5, 0.5, 0.5> texture { pigment { color Red } finish { specular 0.6 } normal { agate 0.25 scale 1/2 } } rotate <45,46,47> }
The following script fragment shows the use of variable declaration, assignment, comparison and the while loop construct:
#declare the_angle = 0; #while (the_angle <= 360) box { <-0.5, -0.5, -0.5> <0.5, 0.5, 0.5> texture { pigment { color Red } finish { specular 0.6 } normal { agate 0.25 scale 1/2 } } rotate the_angle } #declare the_angle = the_angle + 45; #end
Development and maintenance
Official modifications to the POV-Ray source tree are done and/or approved by the POV-Team. Most patch submission and/or bug reporting is done in the POV-Ray newsgroups on the povray.org news server. Since POV-Ray's source is available there are unofficial forks and patched versions of POV-Ray available from third parties; however, these are not officially supported by the POV-Team.
Official POV-Ray versions currently do not support shader plug-ins[5]. Some features, like radiosity and splines are still in development and may be subject to syntactical change.
Platform Support
POV-Ray is distributed in compiled format for Macintosh, Windows and Linux. Support for Intel Macs is not available in the Macintosh version, but since Mac OS is a version of Unix the Linux version can be compiled on it. POV-Ray also could be ported to any platform which has compatible C++ compiler.
People with Intel Macs can use MegaPOV though, as that is compiled as Universal Binary.
Licensing
POV-Ray is distributed under the POV-Ray License, which permits free distribution of the program source code and binaries, but restricts commercial distribution and the creation of derivative works other than fully functional versions of POV-Ray.
Although the source code is available for modification, due to specific restrictions, it is not open source according to the OSI definition of the term. One of the reasons that POV-Ray is not licensed under the free software GNU General Public License (GPL), or other open source licenses, is that POV-Ray was developed before the GPL-style licenses became widely used; the developers wrote their own license for the release of POV-Ray, and contributors to the software have worked under the assumption that their contributions would be licensed under the POV-Ray License.
The whereabouts of some of the contributors to the source code are unknown, and therefore the license cannot be changed, since the permission of all contributors would be required.
A complete rewrite of POV-Ray ("POV-Ray 4.0") is currently under discussion, which would use a more liberal license, although not necessarily the GPL.
See also
- YafRay (Yet Another Free Raytracer)
- Kerkythea Free ray tracing program with enhanced Sketchup compatibility
- Sunflow an open source rendering system for photo-realistic image synthesis written in Java
- Blender (software) a free and open-source software program for 3D modeling, animation, and rendering
References
- ^ http://www.povray.org/documentation/view/3.6.0/7/
- ^ http://www.oyonale.com/iss/english/index.htm
- ^ See the SCC3 page at http://local.wasp.uwa.edu.au/~pbourke/modelling_rendering/scc3/final/ for an example of complete POV-Ray images made with no more than 256 bytes of SDL, several of which use recursion and macros to compress the code
- ^ http://www.intel.com/performance/desktop/extreme/high_end_rendering.htm
- ^ for such an implementation, see e.g. http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2
External links
This article's use of external links may not follow Wikipedia's policies or guidelines. |
Official
Other POV-Ray resources
- Category at ODP
- The POV-Ray OpenWiki is an in-depth reference for textures, effects, methods, etc.
- The POV-Ray Objects Collection, a large collection of ready-made objects in the POV-Ray scene description language.
- Usenet newsgroup that used to be popular with POV-Ray users
- The French Wiki about PovRay still growing...
Collective galleries
- POV-Ray Hall of Fame
- Internet Raytracing Competition, where POV-Ray artists have submitted many outstanding images
- The POV-Ray Short Code Contest (Round 4)
- POVCOMP, a POV-Ray competition that aims to show the full potential of POV-Ray.
Notable POV-Ray artists
- L.J. Altvater - Surrealism with a mix of childhood purity and dream-like weirdness.
- Zig Oto - PovRay works of Zig Oto.
- Tom Aust - A painter, a sculptor and a 3D artist who uses POV-Ray for architectural and interior renderings.
- Christophe Bouffartigue - POV-Ray images, patches and include files.
- Paul Bourke - Math-based POV-Ray images and techniques, also the home of the Short Code Contest.
- René Bui - POV-Ray art inspired by contemporary artists such as Hockney and Duchamp.
- Jim Charter - African masks, shoes and still life.
- François Dispot - The author of Arabeske, an online utility for creating repetitive patterns.
- Douglas Eichenberg - Surrealism reminiscent of Yves Tanguy.
- Mick Hazelgrove - Creator of IRTC-winning The Preacher.
- Tsutomu Higo - Tsutomu has a training in traditional painting and a love for mathematics, and he combines both in his POV-Ray work.
- Christoph Hormann - A developer and member of the POV-Team; see in particular his "Landscape of the week" project.
- Rune Skovbo Johansen - A few images and animations, but mostly various include files for texturing and animation.
- Tor Olav Kristensen - Another math-inspired POVer.
- Andrea Loehmüller + Friedrich A. Loehmüller - An extensive gallery of mathematical POV-Ray art. Also includes tutorials.
- Tim Nikias - Galleries, a few animations, tutorials and various include files. Every image features a more or less detailed description of origin, techniques and explanations to supply insight and inspiration.
- Gena Obukhov - Artist and technician, an early POV-Ray humanist.
- Gilles Tran - Well known long-time POV-Ray artist, who is also a multiple winner of the IRTC. His website contains hundreds of POV-Ray images, "behind the scenes" descriptions, tools (tree, grass, snow, clouds macros) and objects (CSG and mesh).
- Pete Trbovich - A variety artist. Uses exclusively free/open source software including POV-Ray, Blender, The GIMP, and Inkscape. Offers free wallpapers and graphics to developers and users of Free and Open Source Software.
- Veijo Vilva - Music and surrealism. Veijo had a solo exhibition of his works in an art gallery in Helsinki in 2004.
- Jaime Vives Piqueres - A multiple winner of the Internet Ray-Tracing Competition. His website also contains the Lightsys macro, the Project Tierra landscape generator and other utilities.
Unofficial patches
- MegaPOV, a collection of unofficial extensions of POV-Ray.
- The Density_File Extension patch
- Tessellation patch
- POV-Sub, subdivision surfaces patch
- A customised version that allows to describe POV-Ray object pigments with procedural code, compatible with RenderMan Shading Language.
- PVM patch for POV-Ray, gives POV-Ray the ability to distribute a rendering across multiple heterogeneous systems.
- Progressive Refinement Patch for POV-Ray, draws a progressively refining bilinearly interpolated preview and allows selections of regions to be traced using the mouse.
- MegaPOV XRS — Free internet-based render farm software for linux, Windows, or cygwin for Windows. Consists of patched version of MegaPOV used as render node and Python-based client.
Related tools
- QTPov Editor
- Moray, an interactive wireframe modeller for the PC platform, supporting POV-Ray.
- KPovModeler for KDE.
- PoseRay, a utility that allows POV-Ray to use 3D models in DXF, OBJ, LWO, 3DS, VRML and RAW formats. It can also import Poser and DAZ|Studio scenes into POV-Ray. Other features include surface subdivision and 3D preview of the scene before it is rendered.
- SMPOV, an add-on for POV-Ray and MegaPOV for distributed network rendering or local SMP-rendering.
- POV-Anywhere, a set of tools for distributing the render of POV-Ray images to several computers.
- POV-Tree, a tree generator.
- TOMTREE, Tom Aust's tree generator.
- TrueVision, a 3D modeller for Gnome.
- Bishop3D, an interactive modeling and animation tool for Windows. It can import and export POV-Ray scene files.
Scientific tools