POV-straal - POV-Ray

POV-straal
Povray-logo sphere.png
Oorspronkelijke auteur(s) David Kirk Buck, Aaron A. Collins, Alexander Enzmann
Ontwikkelaar(s) Het POV-team
Eerste uitgave 29 juli 1991 ; 30 jaar geleden ( 1991/07/29 )
Stabiele vrijlating 3.7.0 (9 november 2013 ; 7 jaar geleden ) [±] ( 2013-11-09 )
Preview-release v3.8.0-alpha.10064738 (19 februari 2019 ; 2 jaar geleden ) [±] ( 2019-02-19 )
Opslagplaats Bewerk dit op Wikidata
Geschreven in C++
Besturingssysteem Cross-platform
Type Raytracer
Vergunning AGPL-3.0 of hoger
Website www .povray .org

The Persistence of Vision Ray Tracer , meestal afgekort als POV-Ray , is een platformonafhankelijk raytracing - programma dat afbeeldingen genereert op basis van een op tekst gebaseerde scènebeschrijving . Het was oorspronkelijk gebaseerd op DKBTrace, geschreven door David Kirk Buck en Aaron A. Collins voor Amiga- computers. Er zijn ook invloeden van de eerdere Polyray raytracer vanwege bijdragen van de auteur, Alexander Enzmann. POV-Ray is gratis en open-source software , waarvan de broncode beschikbaar is onder de AGPL-3.0-of-later- licentie.

Geschiedenis

Image
Een vaas op een voetstuk gerenderd met DKBTrace 2.12

Ergens in de jaren 80 downloadde David Kirk Buck de broncode voor een Unix ray tracer naar zijn Amiga . Hij experimenteerde er een tijdje mee en besloot uiteindelijk om zijn eigen raytracer genaamd DKBTrace naar zijn initialen te schrijven. Hij plaatste het op het "You Can Call Me Ray" -bulletinboardsysteem (BBS) in Chicago, omdat hij dacht dat anderen er misschien in geïnteresseerd zouden zijn. In 1987 downloadde Aaron A. Collins DKBTrace en begon te werken aan een x86- poort ervan. Hij en David Buck hebben samengewerkt om nog een aantal functies toe te voegen.

Toen het programma populairder bleek te zijn dan verwacht, konden ze de vraag naar meer functies niet bijhouden. Zo droeg David in juli 1991 het project over aan een team van programmeurs die op het "GraphDev" -forum op CompuServe werkten . Tegelijkertijd vond David het ongepast om zijn initialen te gebruiken in een programma dat hij niet langer onderhield. De naam "STAR-Light" (Software Taskforce on Animation and Rendering) werd aanvankelijk gebruikt, maar uiteindelijk werd de naam "PV-Ray", en uiteindelijk "POV-Ray" (Persistence of Vision Ray Tracer), een naam geïnspireerd door Dalí 's schilderij, De volharding van het geheugen .

Kenmerken van de applicatie en een samenvatting van de geschiedenis ervan worden besproken in een interview in februari 2008 met David Kirk Buck en Chris Cason in aflevering 24 van FLOSS Weekly .

Functies

Image
Glasscène weergegeven door POV-Ray die radiosity , photon mapping , focal blur en andere fotorealistische mogelijkheden demonstreert . (Afbeelding gemaakt door Gilles Tran .)

POV-Ray is aanzienlijk volwassener geworden sinds het werd gecreëerd. Recente versies van de software bevatten de volgende functies:

Een van de belangrijkste attracties van POV-Ray is de grote verzameling door derden gemaakte activa en tools. Een groot aantal tools, texturen, modellen, scènes en tutorials zijn te vinden op internet. Het is ook een nuttige referentie voor diegenen die willen leren hoe ray tracing en gerelateerde 3D-geometrie en computer grafische algoritmen werken.

Huidige versie

De huidige officiële versie van POV-Ray is 3.7. Deze versie introduceert:

Enkele van de belangrijkste geïntroduceerde functies van de vorige release (3.6) zijn:

In juli 2006 begon Intel Corporation de bètaversie van 3.7 te gebruiken om hun nieuwe dual-core Conroe-processor te demonstreren vanwege de efficiëntie van de SMP-implementatie (symmetrische multiprocessing).

Primitieven

Image
Weergave van het Venn-diagram van vier bollen gemaakt met constructieve vaste geometrie of CSG. De bron staat op de beschrijvingspagina van de afbeelding.
Image
Sommige gekleurde dobbelstenen weergegeven in POV-Ray. CSG , breking en brandpuntsvervaging worden gedemonstreerd.

POV-Ray ondersteunt, naast standaard 3D geometrische vormen zoals tori , bollen en heightfields , wiskundig gedefinieerde primitieven zoals de isosurface (een eindige benadering van een willekeurige functie), de polynomiale primitief (een oneindig object gedefinieerd door een 15e orde of lagere polynoom ), de julia fractal (een driedimensionale plak van een vierdimensionale fractal), de superkwadratische ellipsoïde (een intermediair tussen een bol en een kubus), en de parametrische primitief (met behulp van vergelijkingen die het oppervlak vertegenwoordigen, in plaats van het interieur).

POV-Ray vertegenwoordigt intern objecten met behulp van hun wiskundige definities; alle primitieve POV-Ray-objecten kunnen worden beschreven door wiskundige functies . Dit is anders dan veel computerprogramma's die 3D-modellen bevatten, die meestal driehoekige mazen gebruiken om alle objecten in een scène samen te stellen.

Dit feit geeft POV-Ray verschillende voor- en nadelen ten opzichte van andere weergave- en modelleringssystemen; POV-Ray primitieven nauwkeuriger dan de veelhoekige tegenhangers: voorwerpen die qua bolletjes kunnen worden beschreven, vlakke oppervlakken, cilinders, tori, en dergelijke, zijn volkomen glad en mathematisch nauwkeurige in POV-Ray renderings, terwijl veelhoekig artefacten kunnen zichtbaar in op mesh gebaseerde modelleringssoftware. POV-Ray-primitieven zijn ook eenvoudiger te definiëren dan de meeste van hun veelhoekige tegenhangers, bijvoorbeeld in POV-Ray wordt een bol eenvoudig beschreven door zijn middelpunt en straal; in een op mesh gebaseerde omgeving moet een bol worden beschreven door een groot aantal kleine verbonden polygonen (meestal quads of driehoeken ).

Aan de andere kant is op scripts gebaseerde primitieve modellering niet altijd een praktische methode om bepaalde objecten te creëren, zoals realistische personages of complexe door de mens gemaakte artefacten zoals auto's. Die objecten kunnen en moeten eerst worden gemaakt in op mesh gebaseerde modelleringstoepassingen zoals Wings 3D en Blender , en vervolgens kunnen ze worden geconverteerd naar POV-Ray's eigen mesh-indeling.

Voorbeelden van de scènebeschrijvingstaal

Het volgende is een voorbeeld van de scènebeschrijvingstaal die door POV-Ray wordt gebruikt om een ​​te renderen scène te beschrijven. Het demonstreert het gebruik van een achtergrondkleur, camera, verlichting, een eenvoudige doosvorm met een normaal oppervlak en afwerking, en de transformerende effecten van rotatie.

Image
POV-Ray-beelduitvoer op basis van het script
 #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> }

Het volgende scriptfragment toont het gebruik van variabeledeclaratie, toewijzing, vergelijking en de while-lusconstructie:

Image
POV-Ray-beelduitvoer op basis van het script
 #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

Modellering

Het POV-Ray-programma zelf bevat geen modelleerfunctie ; het is in wezen een pure renderer met een geavanceerde modelbeschrijvingstaal. Bij deze functieset hebben derden een grote verscheidenheid aan modelleringssoftware ontwikkeld, sommige gespecialiseerd voor POV-Ray, andere ondersteunen import en export van de datastructuren, waaronder de gratis en open-source 3D-creatiesuite Blender .

Een aantal extra POV-Ray-compatibele modelers zijn gelinkt vanaf Povray.org: Modeling Programs .

In 2007 verwierf POV-Ray de rechten op Moray , een interactief 3D-modelleringsprogramma dat lang werd gebruikt met POV-Ray. Vanaf december 2016 is de ontwikkeling van Moray echter tot stilstand gekomen.

Software

Ontwikkeling en onderhoud

Officiële wijzigingen aan de POV-Ray source tree worden gedaan en/of goedgekeurd door het POV-Team. De meeste patch-indiening en/of bugrapportage wordt gedaan in de POV-Ray-nieuwsgroepen op de news.povray.org- nieuwsserver (met ook een webinterface beschikbaar ). Aangezien de broncode van POV-Ray beschikbaar is, zijn er onofficiële forks en gepatchte versies van POV-Ray beschikbaar van derden; deze worden echter niet officieel ondersteund door het POV-Team.

Officiële POV-Ray-versies ondersteunen momenteel geen shader- plug-ins. Sommige functies, zoals radiosity en splines, zijn nog in ontwikkeling en kunnen onderhevig zijn aan syntactische veranderingen.

Platformondersteuning

POV-Ray 3.6 wordt gedistribueerd in gecompileerde indeling voor Macintosh , Windows en Linux . Ondersteuning voor Intel Macs is niet beschikbaar in de Macintosh- versie, maar aangezien Mac OS X een versie van Unix is, kan de Linux-versie erop worden gecompileerd .

De 3.7-versies met SMP- ondersteuning worden officieel ondersteund voor Windows en Linux. Er zijn onofficiële Macintosh- versies voor v3.7 te vinden.

POV-Ray kan worden geport naar elk platform met een compatibele C++- compiler.

Licenties

Oorspronkelijk werd POV-Ray gedistribueerd onder zijn eigen POV-Ray- licentie . Namelijk de POV-Ray 3.6 Distributielicentie en de POV-Ray 3.6 Bronlicentie, die de gratis distributie van de programmabroncode en binaire bestanden toestaat, maar de commerciële distributie en het maken van afgeleide werken anders dan volledig functionele versies van POV-Ray beperkt.

Hoewel de broncode van oudere versies beschikbaar is voor wijziging, vanwege de bovenstaande 3.6 en eerdere licentiebeperkingen, was het geen open source of gratis software volgens de OSI- of de FSF- definitie van de term. Dit was een probleem omdat uitwisseling van broncode met het grotere FOSS- ecosysteem onmogelijk was vanwege incompatibiliteit van licenties met copyrightlicenties .

Een van de redenen dat POV-Ray oorspronkelijk niet gelicentieerd was onder de vrije software GNU General Public License (GPL), of andere open source-licenties, is dat POV-Ray werd ontwikkeld voordat de GPL-achtige licenties op grote schaal werden gebruikt; de ontwikkelaars schreven hun eigen licentie voor het uitbrengen van POV-Ray, en de bijdragers aan de software werkten in de veronderstelling dat hun bijdragen gelicentieerd zouden zijn onder de POV-Ray 3.6-licenties.

In 2013, met versie 3.7, werd POV-Ray opnieuw gelicentieerd onder de Affero General Public License versie 3 (of later). Zo is POV-Ray sindsdien vrije software volgens de FSF- definitie en ook open source-software volgens de Open Source-definitie .

Zie ook

  • Blender – een gratis en open-source softwareprogramma voor 3D-modellering, animatie en weergave
  • Kerkythea – een freeware raytracing -programma met verbeterde Sketchup- compatibiliteit
  • Sunflow - een open-source weergavesysteem voor fotorealistische beeldsynthese, geschreven in Java
  • YafaRay – een populaire gratis open-source raytracing -engine

Referenties

Externe links