POV-Ray

Last updated
POV-Ray
Original author(s) David Kirk Buck, Aaron A. Collins, Alexander Enzmann
Developer(s) The POV-Team
Initial releaseJuly 29, 1991;32 years ago (1991-07-29) [1] [2]
Stable release
3.7.0.0 [3]   OOjs UI icon edit-ltr-progressive.svg / 7 November 2013; 8 July 2021
Preview release v3.8.0-beta.2 (August 9, 2021;2 years ago (2021-08-09) [4] ) [±]
Repository
Written in C++
Operating system Cross-platform
Type Ray tracer
License AGPL-3.0-or-later [5]
Website www.povray.org

The Persistence of Vision Ray Tracer, most commonly acronymed as POV-Ray, is a cross-platform ray-tracing program that generates images from a text-based scene description. It was originally based on DKBTrace, written by David Kirk Buck and Aaron A. Collins for Amiga computers. There are also influences from the earlier Polyray [6] raytracer because of contributions from its author, Alexander Enzmann. POV-Ray is free and open-source software, with the source code available under the AGPL-3.0-or-later license.

Contents

History

A vase on a pedestal rendered with DKBTrace 2.12 Vase on a pedestal, rendered with DKBTrace 2.12.png
A vase on a pedestal rendered with DKBTrace 2.12

Sometime in the 1980s, David Kirk Buck downloaded the source code for a Unix ray tracer to his Amiga. He experimented with it for a while and eventually decided to write his own ray tracer named DKBTrace after his initials. He posted it to the "You Can Call Me Ray" bulletin board system (BBS) in Chicago, thinking others might be interested in it. In 1987, Aaron A. Collins downloaded DKBTrace and began working on an x86 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, David felt that it was inappropriate to use his initials on a program he no longer maintained. The name "STAR-Light" (Software Taskforce on Animation and Rendering) was initially used, but eventually the name became "PV-Ray", and then ultimately "POV-Ray" (Persistence of Vision Ray Tracer), [2] a name inspired by Dalí's painting, The Persistence of Memory . [7] [8]

Features of the application, and a summary of its history, are discussed in a February 2008 interview with David Kirk Buck and Chris Cason on episode 24 of FLOSS Weekly. [8]

Features

Glass scene rendered by POV-Ray demonstrating radiosity, photon mapping, focal blur, and other photorealistic capabilities (image created by Gilles Tran) Glasses 800 edit.png
Glass scene rendered by POV-Ray demonstrating radiosity, photon mapping, focal blur, and other photorealistic capabilities (image created by Gilles Tran)

POV-Ray has matured substantially since it was created. Recent versions of the software include the following features:

One of POV-Ray's main attractions is its large collection of third-party-made assets and tools. 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 3D geometry and computer graphics algorithms work.

Current version

The current official version of POV-Ray is 3.7. This version introduces:

Some of the main introduced features of the previous release (3.6) are:

In July 2006, Intel Corporation started using the beta version of 3.7 to demonstrate their new dual-core Conroe processor due to the efficiency of the SMP (symmetric multiprocessing) implementation.

Primitives

Rendering of the Venn diagram of four spheres created with constructive solid geometry, or CSG. The source is on the description page of the image. Venn 0000 0001 0001 0110.png
Rendering of the Venn diagram of four spheres created with constructive solid geometry, or CSG. The source is on the description page of the image.
Some colored dice rendered in POV-Ray. CSG, refraction and focal blur are demonstrated. PNG transparency demonstration 1.png
Some colored dice rendered in POV-Ray. CSG, refraction and focal blur are demonstrated.

POV-Ray, in addition to standard 3D 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 (an 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 computer programs that include 3D models, which typically use triangle meshes to compose all the objects in a scene.

This fact provides POV-Ray with several advantages and disadvantages over other rendering and 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, e.g., 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 connected polygons (usually quads or triangles).

On the other hand, script-based primitive modeling is not always a practical method to create certain objects, such as realistic characters or complex man-made artifacts like cars. Those objects can be created first in mesh-based modeling applications such as Wings 3D and Blender, and then they can be 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.

POV-Ray image output based on the script I example povray scene rendering.png
POV-Ray image output based on the script
#version3.6;// Includes a separate file defining a number of common colours#include"colors.inc"global_settings{assumed_gamma1.0}// Sets a background colour for the image (dark grey)background{colorrgb<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 lookcamera{location<0.0,0.5,-4.0>direction1.5*zrightx*image_width/image_heightlook_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 locationlight_source{<0,0,0>colorrgb<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 locationlight_source{<0,0,0>colorrgb<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 boxbox{<-0.5,-0.5,-0.5>,<0.5,0.5,0.5>texture{pigment{colorRed}finish{specular0.6}normal{agate0.25scale1/2}}rotate<45,46,47>}

The following script fragment shows the use of variable declaration, assignment, comparison and the while loop construct:

POV-Ray image output based on the script I example povray scene rendering2.png
POV-Ray image output based on the script
#declarethe_angle=0;#while(the_angle<360)box{<-0.5,-0.5,-0.5><0.5,0.5,0.5>texture{pigment{colorRed}finish{specular0.6}normal{agate0.25scale1/2}}rotatethe_angle}#declarethe_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 [12]

A number of additional POV-Ray compatible modelers are linked from Povray.org: Modelling Programs.

In 2007, POV-Ray acquired the rights to Moray, [13] an interactive 3-D modeling program long used with POV-Ray. However, as of December 2016, Moray development is stalled. [14]

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. [15] Some features, like radiosity and splines are still in development and may be subject to syntactical change.

Platform support

POV-Ray 3.6 is distributed in compiled format for Mac, Windows and Linux. Support for Intel Macs is not available in the Mac version, but since Mac OS X is a version of Unix the Linux version can be compiled on it.

The 3.7 versions with SMP support are officially supported for Windows and Linux. Unofficial Mac versions for v3.7 can be found. [16]

POV-Ray can be ported to any platform which has a compatible C++ compiler.

Licensing

Originally, POV-Ray was distributed under its own POV-Ray License . Namely, the POV-Ray 3.6 Distribution License [17] and the POV-Ray 3.6 Source License, [18] which permitted 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 3.6 and prior license restrictions, it was not open source or free software according to the OSI or the FSF definition of the term. This was a problem as source code exchange with the greater FOSS ecosystem was impossible due to License incompatibility with copyleft licenses.

One of the reasons that POV-Ray was not originally 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 worked under the assumption their contributions would be licensed under the POV-Ray 3.6 Licenses.

In 2013, with version 3.7, POV-Ray was relicensed under the GNU Affero General Public License version 3 (or later). [19] Thus POV-Ray is since then free software according to the FSF definition and also open source software according to the Open Source Definition.

See also

Related Research Articles

<span class="mw-page-title-main">Rendering (computer graphics)</span> Process of generating an image from a model

Rendering or image synthesis is the process of generating a photorealistic or non-photorealistic image from a 2D or 3D model by means of a computer program. The resulting image is referred to as the render. Multiple models can be defined in a scene file containing objects in a strictly defined language or data structure. The scene file contains geometry, viewpoint, textures, lighting, and shading information describing the virtual scene. The data contained in the scene file is then passed to a rendering program to be processed and output to a digital image or raster graphics image file. The term "rendering" is analogous to the concept of an artist's impression of a scene. The term "rendering" is also used to describe the process of calculating effects in a video editing program to produce the final video output.

<span class="mw-page-title-main">Blender (software)</span> 3D computer graphics software

Blender is a free and open-source 3D computer graphics software tool set used for creating animated films, visual effects, art, 3D-printed models, motion graphics, interactive 3D applications, virtual reality, and, formerly, video games. Blender's features include 3D modelling, UV mapping, texturing, digital drawing, raster graphics editing, rigging and skinning, fluid and smoke simulation, particle simulation, soft body simulation, sculpting, animation, match moving, rendering, motion graphics, video editing, and compositing.

Autodesk 3ds Max, formerly 3D Studio and 3D Studio Max, is a professional 3D computer graphics program for making 3D animations, models, games and images. It is developed and produced by Autodesk Media and Entertainment. It has modeling capabilities and a flexible plugin architecture and must be used on the Microsoft Windows platform. It is frequently used by video game developers, many TV commercial studios, and architectural visualization studios. It is also used for movie effects and movie pre-visualization. 3ds Max features shaders, dynamic simulation, particle systems, radiosity, normal map creation and rendering, global illumination, a customizable user interface, and its own scripting language.

<span class="mw-page-title-main">Constructive solid geometry</span> Creating a complex 3D surface or object by combining primitive objects

Constructive solid geometry is a technique used in solid modeling. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combine simpler objects, potentially generating visually complex objects by combining a few primitive ones.

<span class="mw-page-title-main">Ray casting</span> Methodological basis for 3D CAD/CAM solid modeling and image rendering

Ray casting is the methodological basis for 3D CAD/CAM solid modeling and image rendering. It is essentially the same as ray tracing for computer graphics where virtual light rays are "cast" or "traced" on their path from the focal point of a camera through each pixel in the camera sensor to determine what is visible along the ray in the 3D scene. The term "Ray Casting" was introduced by Scott Roth while at the General Motors Research Labs from 1978–1980. His paper, "Ray Casting for Modeling Solids", describes modeled solid objects by combining primitive solids, such as blocks and cylinders, using the set operators union (+), intersection (&), and difference (-). The general idea of using these binary operators for solid modeling is largely due to Voelcker and Requicha's geometric modelling group at the University of Rochester. See solid modeling for a broad overview of solid modeling methods. This figure on the right shows a U-Joint modeled from cylinders and blocks in a binary tree using Roth's ray casting system in 1979.

<span class="mw-page-title-main">LightWave 3D</span> 3D computer graphics program

LightWave 3D is a 3D computer graphics program developed by LightWave Digital. It has been used in films, television, motion graphics, digital matte painting, visual effects, video game development, product design, architectural visualizations, virtual production, music videos, pre-visualizations and advertising.

<span class="mw-page-title-main">Wings 3D</span>

Wings 3D is a free and open-source subdivision modeler inspired by Nendo and Mirai from Izware. Wings 3D is named after the winged-edge data structure it uses internally to store coordinate and adjacency data, and is commonly referred to by its users simply as Wings.

<span class="mw-page-title-main">YafaRay</span> Free open-source text-based ray tracing program

YafaRay is a free and open-source ray tracing program that uses an XML scene description language. There is a YafaRay addon for Blender 2.78. The ray tracer is licensed under the GNU Lesser General Public License (LGPL).

<span class="mw-page-title-main">Shader</span> Type of program in a graphical processing unit (GPU)

In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene—a process known as shading. Shaders have evolved to perform a variety of specialized functions in computer graphics special effects and video post-processing, as well as general-purpose computing on graphics processing units.

<span class="mw-page-title-main">Anim8or</span>

Anim8or is a freeware OpenGL-based 3D modeling and animation program by R. Steven Glanville, a software engineer at NVidia. Currently at stable version 1.01.1402, it is a compact program with several tools which would normally be expected in high-end, paid software. To date, every version released has been under 3 MB, despite the fact that it does not make full use of Windows' native interface, carrying some graphical elements of its own. Although few official tutorials have been posted by the author, many other users have posted their own on sites such as YouTube and the anim8or home page. While Anim8or was once comparable to other freeware 3D animation software such as Blender, it has seen less progression in recent years, with Blender now being more capable than before.

<span class="mw-page-title-main">Polygonal modeling</span> Object modeling method

In 3D computer graphics, polygonal modeling is an approach for modeling objects by representing or approximating their surfaces using polygon meshes. Polygonal modeling is well suited to scanline rendering and is therefore the method of choice for real-time computer graphics. Alternate methods of representing 3D objects include NURBS surfaces, subdivision surfaces, and equation-based representations used in ray tracers.

3Delight, currently known as 3DelightNSI, is 3D computer graphics software that runs on Microsoft Windows, macOS and Linux. Developed by Illumination Research, it is both a photorealistic and NPR path tracing offline renderer based on its NSI API scene description and on OSL for shading. It has been used to render full CGI animation and VFX for numerous feature films. It comes with supported, open source plug-in integrations for several DCC applications, such as Maya, Houdini, Cinema4D, Katana, OpenUSD Hydra, and a democratic free license that allows for commercial use. It also provides a fully distributed cloud rendering service called 3Delight Cloud.

<span class="mw-page-title-main">Kerkythea</span> Standalone rendering system

Kerkythea is a standalone rendering system that supports raytracing and Metropolis light transport, uses physically accurate materials and lighting, and is distributed as freeware. Currently, the program can be integrated with any software that can export files in obj and 3ds formats, including 3ds Max, Blender, LightWave 3D, SketchUp, Silo and Wings3D.

<span class="mw-page-title-main">3D computer graphics</span> Graphics that use a three-dimensional representation of geometric data

3D computer graphics, sometimes called CGI, 3-D-CGI or three-dimensional computer graphics, are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering digital images, usually 2D images but sometimes 3D images. The resulting images may be stored for viewing later or displayed in real time.

<span class="mw-page-title-main">Softimage 3D</span> 3D graphics programme that preceded SoftimageXSI

Softimage|3D was a high-end 3D graphics application developed by Softimage, Co., which was used predominantly in the film, broadcasting, gaming, and advertising industries for the production of 3D animation. It was superseded by Softimage XSI in 2000.

3D computer graphics software refers to programs used to create 3D computer-generated imagery.

<span class="mw-page-title-main">3D modeling</span> Form of computer-aided engineering

In 3D computer graphics, 3D modeling is the process of developing a mathematical coordinate-based representation of a surface of an object in three dimensions via specialized software by manipulating edges, vertices, and polygons in a simulated 3D space.

This is a glossary of terms relating to computer graphics.

<span class="mw-page-title-main">Art of Illusion</span>

Art of Illusion is a free software, and open source software package for making 3D graphics.

References

  1. "POV-Ray: Documentation: 1.1.5.3 A Historic 'Version History'". povray.org. Retrieved 2018-12-19.
  2. 1 2 "POV-Ray: News". povray.org. Retrieved 2018-12-19.
  3. "Release 3.7.0.0". 7 November 2013. Retrieved 15 March 2018.
  4. "POV-Ray Beta Release v3.8.0-beta.2". POV-Ray. 2021-08-09. Retrieved 2021-08-29.
  5. "POV-Ray License". povray.org. Retrieved 2014-05-05.
  6. "Polyray v1.7". Alexander R. Enzmann. Retrieved 2016-07-05.
  7. "Documentation: 1.1.5 The Early History of". POV-Ray. Retrieved 2014-05-05.
  8. 1 2 "The TWiT Netcast Network with Leo Laporte". Twit.tv. 2008-02-07. Retrieved 2014-05-05.
  9. Paul Bourke: Supershape in 3D are examples of POV-Ray images made with very short code
  10. "POV-Ray: Documentation: 2.1.2.2 General Output Options". www.povray.org. Retrieved 2023-09-08.
  11. 1 2 "POV-Ray: Documentation: 2.1.2.8 Tracing Options". www.povray.org. Retrieved 2023-09-08.
  12. Blender
  13. "News: Moray Announcement". POV-Ray. 2007-02-01. Retrieved 2014-05-05.
  14. "POV-Ray/povray: The persistence of Vision Raytracer". POV-Ray. 2013-09-06. Retrieved 2022-08-05.
  15. for such an implementation, see e.g., http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2 Archived 2007-02-07 at the Wayback Machine
  16. povrayunofficial_mac on megapov.inetart.net
  17. "POV-Ray 3.6 Distribution License". povray.org. Retrieved 2016-12-12.
  18. "POV-Ray 3.6 Source License". povray.org. Retrieved 2016-12-12.
  19. 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).