POV-Ray
Developer(s) | The POV-Team |
---|---|
Initial release | July 1991[1] |
Stable release |
3.7.0
/ November 9, 2013[2] |
Preview release |
3.7.1-alpha.8901709
/ December 3, 2016[3] |
Written in | C++ |
Operating system | Cross-platform |
Type | Ray tracer |
License | AGPLv3[4] |
Website |
www |
The Persistence of Vision Raytracer, or POV-Ray, is a ray tracing program which generates images from a text-based scene description, and is available for a variety of computer platforms. It was originally based on DKBTrace, written by David Kirk Buck and Aaron A. Collins for the Amiga computers. There are also influences from the earlier Polyray[5] raytracer contributed by its author Alexander Enzmann. POV-Ray is free and open-source software with the source code available under the AGPLv3.
History
Sometime in the 1980s, David Kirk Buck downloaded the source code for a Unix raytracer to his Amiga. He experimented with it for a while, eventually deciding to write his own raytracer, named DKBTrace after his initials. He posted it to the "You Can Call Me Ray" bulletin board system in Chicago, thinking others might be interested in it. In 1987, Aaron A. 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 July 1991 David turned over the project to a team of programmers working in the GraphDev forum on CompuServe. 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.[6]
In 2002, POV-Ray became the first ray tracer to render an image in orbit, rendered by Mark Shuttleworth inside the International Space Station.[7]
Features of the application and a summary of its history are discussed in an interview with David Kirk Buck and Chris Cason on episode 24 of FLOSS Weekly.[8]
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[9]
- 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.7. This version introduces:
- support for Symmetric multiprocessing (SMP), to allow the renderer to take advantage of multiple processors
- support for High dynamic range imaging (HDRI), including the OpenEXR and Radiance file formats
- improved bounding using BSP trees
Some of the main features of previous release (3.6):
- 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
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.
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 and disadvantages 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 the use of a background colour, camera, lights, a simple box shape having a surface normal and finish, and the transforming effects of rotation.
#version 3.6;
//Includes a separate file defining a number of common colours
#include "colors.inc"
global_settings { assumed_gamma 1.0 }
//Sets a background colour for the image (dark grey)
background { color rgb <0.25, 0.25, 0.25> }
//Places a camera
//direction : Sets, among other things, the field of view of the camera
//right: Sets the aspect ratio of the image
//look_at: Tells the camera where to look
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> }
//Places a light source
//color : Sets the color of the light source (white)
//translate : Moves the light source to a desired location
light_source { <0, 0, 0>
color rgb <1, 1, 1>
translate <-5, 5, -5> }
//Places another light source
//color : Sets the color of the light source (dark grey)
//translate : Moves the light source to a desired location
light_source { <0, 0, 0>
color rgb <0.25, 0.25, 0.25>
translate <6, -6, -6> }
//Sets a box
//pigment : Sets a color for the box ("Red" as defined in "colors.inc")
//finish : Sets how the surface of the box reflects light
//normal : Sets a bumpiness for the box using the "agate" in-built model
//rotate : Rotates the box
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
Modeling
The POV-Ray program itself does not include a modeling feature; it is essentially a pure renderer with a sophisticated model description language. To accompany this feature set, third parties have developed a large variety of modeling software, some specialized for POV-Ray, others supporting import and export of its data structures, including the free and open source 3D creation suite Blender.
A number of additional POV-Ray compatible modelers are linked from Povray.org: Modelling Programs.
In 2007, POV-Ray acquired the rights to Moray,[10] an interactive 3-D modeling program long used with POV-Ray. However, as of December 2016, moray development is stalled.
Software
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 news.povray.org news server (with a Web interface also available). 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.[11] 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 X is a version of Unix the Linux version can be compiled on it. POV-Ray also could be ported to any platform which has a compatible C++ compiler.
People with Intel Macs can use the fork MegaPOV though, as that is compiled as universal binary.
The 3.7 versions with SMP support, however, are still available only for Windows and Linux.
Licensing
Since version 3.7, POV-Ray is released under the Affero General Public License version 3 (or later) and thus is Free Software according to the FSF definition.[12]
Previous POV-Ray releases are 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 of older versions is available for modification, due to the above restrictions, it is not open source according to the OSI definition of the term. One of the reasons that POV-Ray was 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.
A complete rewrite of POV-Ray (“POV-Ray 4.0”) was discussed in 2007, with one of the aims being to switch to a free software license, such as GNU GPLv3.[13]
See also
Wikimedia Commons has media related to POV-Ray. |
- Blender – free and open-source software program for 3D modeling, animation, and rendering
- Internet Ray Tracing Competition – with a large number of submissions from POV-Ray users
- Kerkythea – free ray tracing program with enhanced Sketchup compatibility
- Sunflow – open source rendering system for photo-realistic image synthesis written in Java
- YafaRay – popular free open-source raytracing engine
References
- ↑ http://www.povray.org/news/index.php#323
- ↑ "Download". POV-Ray. 2013-11-09. Retrieved 2013-11-09.
- ↑ "Releases". POV-Ray. 2013-11-03. Retrieved 2016-05-24.
- ↑ "POV-Ray License". Povray.org. Retrieved 2014-05-05.
- ↑ "Polyray v1.7". Alexander R. Enzmann. Retrieved 2016-07-05.
- ↑ "Documentation: 1.1.5 The Early History of". POV-Ray. Retrieved 2014-05-05.
- ↑ "Reach for the stars". Oyonale.com. 2002-05-05. Retrieved 2014-05-05.
- ↑ "The TWiT Netcast Network with Leo Laporte". Twit.tv. Retrieved 2014-05-05.
- ↑ Paul Bourke: Supershape in 3D are examples of POV-Ray images made with very short code
- ↑ "News: Moray Announcement". POV-Ray. 2007-02-01. Retrieved 2014-05-05.
- ↑ for such an implementation, see e.g., http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2
- ↑ Cason, Chris (8 November 2013). "Download POV-Ray 3.7.0". Retrieved 11 November 2013.
Starting with version 3.7, POV-Ray is released under the AGPL3 (or later) license and thus is Free Software according to the FSF definition. […] Full source code is available, allowing users to build their own versions and for developers to incorporate portions or all of the POV-Ray source into their own software provided it is distributed under a compatible license (for example, the AGPL3 or – at their option – any later version).
- ↑ Cason, Chris (6 September 2007). "Re: Status of Moray? (The answer is about POVRay)". Retrieved 9 December 2007.
As for the delay for 4.0, the main issue has really been finding a suitable license. […] So we decided to wait for the outcome of the GPL3 process. Now that process has been completed, as a group we feel the GPL3 is the way to go and have informally decided that 4.0 will be GPL3-licensed.
External links
Wikimedia Commons has media related to Created with Persistence of Vision. |