„POV-Ray“ – Versionsunterschied

[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(39 dazwischenliegende Versionen von 30 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox Software
|Screenshot= [[Datei:Utah teapot.png|250px]]
|Screenshot= [[Datei:Utah teapot.png|250px|Screenshot]]
|Beschreibung= Der [[Utah-Teekanne|Utah Teapot]] gerendert in POV-Ray unter Verwendung von Schattenwurf,<br />specular-highlighting, farbigem Licht und bump mapping
|Beschreibung= Der [[Utah-Teekanne|Utah Teapot]] gerendert in POV-Ray unter Verwendung von Schattenwurf,<br />specular-highlighting, farbigem Licht und bump mapping
|Hersteller=
|Hersteller=
|Erscheinungsjahr= Juli 1991<ref>http://www.povray.org/news/index.php#323</ref>
|AktuelleVersion= 3.6.2 ''(Windows)''<br />3.6.1 ''(Andere)''
|AktuelleVersion= <!-- Wikidata -->
|AktuelleVersionFreigabeDatum= 1. Juni 2009
|AktuelleVersionFreigabeDatum= <!-- Wikidata -->
|Betriebssystem= [[Plattformunabhängigkeit|Plattformunabhängig]]
|Betriebssystem= [[Plattformunabhängigkeit|Plattformunabhängig]]
|Kategorie= [[Raytracing|Ray-Tracer]]
|Kategorie= [[Raytracing|Ray-Tracer]]
|Lizenz= AGPLv3<ref name="lizenz">{{Internetquelle | url=http://www.povray.org/povlegal.html | titel=POV-Ray License | hrsg=Persistence of Vision Raytracer Pty. Ltd. | zugriff=2014-11-06}}</ref>
|Lizenz= POV-Ray License
|Deutsch= nein
|Deutsch= nein
|Website= [http://www.povray.org/ www.povray.org]
|Website= [http://www.povray.org/ www.povray.org]
}}
}}


'''POV-Ray''' (''Persistence of Vision'' – wörtlich etwa: Die Beharrlichkeit/Trägheit des Sehens/[[Nachbild]] auf der Netzhaut – wie nach einem Blick in die Sonne) ist ein [[Raytracing|Ray-Tracer]], also ein 3D-[[Computergrafik]]programm. Die möglichen Mehrdeutigkeiten bei der Interpretation des Namens sind beabsichtigt. Der [[Rechenaufwand]] zur Bilderzeugung ist so hoch, sodass auch heutige ([[2010]]) [[Personal Computer]] noch mehrere Minuten bis Stunden oder Tage mit der Berechnung eines einzigen Bildes beschäftigt sein können.
'''POV-Ray''' (''Persistence of Vision'' –&nbsp;wörtlich etwa: Die Beharrlichkeit/Trägheit des Sehens/[[Nachbild]] auf der Netzhaut&nbsp;– wie nach einem Blick in die Sonne) ist eine Software, mit der 3D-[[Computergrafik]]en mittels [[Raytracing]] erstellt werden können. Die möglichen Mehrdeutigkeiten bei der Interpretation des Namens sind beabsichtigt. Der [[Rechenaufwand]] zur [[Bilderzeugung]] ist so hoch, dass ein [[Personal Computer]] auch heute (2018) mehrere Minuten bis Stunden oder sogar Tage mit der Berechnung eines einzigen Bildes beschäftigt sein kann.


== Technik ==
== Technik ==
POV-Ray ist ein reiner [[Bildsynthese|Renderer]] und beinhaltet keinen eigenen [[3D-Grafik-Software|3D-Modellierer]]. Die Definition der dargestellten Szene geschieht mittels einer eigenen Szenen-Beschreibungssprache (Scene-Description-Language, SDL), deren Syntax den [[Programmiersprache]]n [[C (Programmiersprache)|C]] und [[C++]] ähnelt. Zur Erstellung komplexer Modelle können externe Tools verwendet werden, beispielsweise [[Moray_(Software)|Moray]] oder [[KPovModeler]].
POV-Ray ist ein reiner [[Bildsynthese|Renderer]] und beinhaltet keinen eigenen [[3D-Grafiksoftware|3D-Modellierer]]. Die Definition der dargestellten Szene geschieht mittels einer eigenen Szenen-Beschreibungssprache (Scene-Description-Language, SDL), deren Syntax den [[Programmiersprache]]n [[C (Programmiersprache)|C]] und [[C++]] ähnelt. Zur Erstellung komplexer Modelle können externe Tools verwendet werden, beispielsweise [[Moray (Software)|Moray]] oder [[KPovModeler]].


Im Gegensatz zu den sonst üblichen Renderern basieren die zugrundeliegenden Daten nicht auf Polygonen, sondern auf mathematischen Formeln und Körpern. Dadurch ist es beispielsweise möglich, [[Fraktal]]e dreidimensional darzustellen. Dies hat jedoch zur Folge, dass die Kompatibilität stark eingeschränkt ist. Es gibt viele Konvertierungsprogramme von anderen 3D-Grafikformaten ins POV-Ray-Format, aber keines, welches POV-Ray-Daten ohne Informationsverlust in ein anderes Format umwandeln kann.
Im Gegensatz zu den sonst üblichen Renderern basieren die zugrundeliegenden Daten nicht auf Polygonen, sondern auf mathematischen Formeln und Körpern. Dadurch ist es beispielsweise möglich, [[Fraktal]]e dreidimensional darzustellen. Dies hat jedoch zur Folge, dass die Kompatibilität stark eingeschränkt ist. Es gibt viele Konvertierungsprogramme von anderen 3D-Grafikformaten ins POV-Ray-Format, aber keines, welches POV-Ray-Daten ohne Informationsverlust in ein anderes Format umwandeln kann.
Zeile 23: Zeile 24:
Der Komplexität der gerenderten Bilder sind keine theoretischen Grenzen gesetzt; in der Praxis ist die zur Verfügung stehende Rechenzeit der begrenzende Faktor.
Der Komplexität der gerenderten Bilder sind keine theoretischen Grenzen gesetzt; in der Praxis ist die zur Verfügung stehende Rechenzeit der begrenzende Faktor.


== Geschichte ==
== Geschichte <ref>[http://www.povray.org/documentation/view/3.6.2/7/ POV-Ray Dokumentation]</ref> ==
Um 1986 besaß [[David Kirk Buck]] einen [[Amiga|Amiga-Computer]]. Einer seiner Freunde zeigte ihm zu dieser Zeit einen Raytracer, der jedoch nicht mit Bucks Amiga kompatibel war. Daher schrieb er die entsprechenden Treiber, um den Tracer selber nutzen zu können. Dieser Raytracer konnte lediglich eine schwarze oder weiße Ebene darstellen sowie einfache Kugeln. Da Buck jedoch trotzdem von dem Programm beeindruckt war, programmierte er das Programm ein wenig weiter, sodass dieses auch Farb-Darstellungen unterstützte. Dabei erkannte er, dass es besser sei, einen eigenen Raytracer zu entwickeln – [[DKBTrace]] war geboren.
Um 1986 besaß [[David Kirk Buck]] einen [[Amiga]]-Computer. Einer seiner Freunde zeigte ihm zu dieser Zeit einen Raytracer, der jedoch nicht mit Bucks Amiga kompatibel war. Daher schrieb er die entsprechenden Treiber, um den Tracer selber nutzen zu können. Dieser Raytracer konnte lediglich eine schwarze oder weiße Ebene darstellen sowie einfache Kugeln. Da Buck jedoch trotzdem von dem Programm beeindruckt war, programmierte er das Programm ein wenig weiter, sodass dieses auch Farb-Darstellungen unterstützte. Dabei erkannte er, dass es besser sei, einen eigenen Raytracer zu entwickeln – [[DKBTrace]] war geboren.


Im Jahre 1987 oder 1988 wurde Buck von [[Aaron Collins]] kontaktiert, da dieser DKBTrace so modifiziert hatte, dass es – statt wie zuvor nur auf dem Amiga – auch auf einem PC einzusetzen war. Dadurch entstand eine Zusammenarbeit zwischen Buck und Collins. Während die zwei an Version 2.12 von DKBTrace – der letzten veröffentlichten Version – arbeiteten, wurden sie auf eine Gruppe von Menschen aufmerksam, die sehr interessiert an DKBTrace waren und viele verschiedene Szenen damit erstellten. Da diese Gruppe frustriert war, dass Buck und Collins nicht schnell genug neue Funktionen in DKBTrace einbauen konnten, machten sie den Vorschlag, einen weiteren neuen Raytracer zu entwickeln. Da Buck zu dieser Zeit immer weniger Zeit mit Raytracing verbrachte, machte er dieser Gruppe auf [[CompuServe]] das Angebot, einen neuen Raytracer auf Basis von DKBTrace zu entwickeln. Dieses Angebot verknüpfte er mit drei Bedingungen:
Im Jahre 1987 oder 1988 wurde Buck von [[Aaron Collins]] kontaktiert, da dieser DKBTrace so modifiziert hatte, dass es – statt wie zuvor nur auf dem Amiga – auch auf einem PC einzusetzen war. Dadurch entstand eine Zusammenarbeit zwischen Buck und Collins. Während die zwei an Version 2.12 von DKBTrace –&nbsp;der letzten veröffentlichten Version&nbsp;– arbeiteten, wurden sie auf eine Gruppe von Menschen aufmerksam, die sehr interessiert an DKBTrace waren und viele verschiedene Szenen damit erstellten. Da diese Gruppe frustriert war, dass Buck und Collins nicht schnell genug neue Funktionen in DKBTrace einbauen konnten, machten sie den Vorschlag, einen weiteren neuen Raytracer zu entwickeln. Da Buck zu dieser Zeit immer weniger Zeit mit Raytracing verbrachte, machte er dieser Gruppe auf [[CompuServe]] das Angebot, einen neuen Raytracer auf Basis von DKBTrace zu entwickeln. Dieses Angebot verknüpfte er mit drei Bedingungen:
* Das Programm muss als [[Freeware]] angeboten werden sowie der Quellcode frei verfügbar sein
* Das Programm muss als [[Freeware]] angeboten werden sowie der [[Quellcode]] frei verfügbar sein
* Das Programm muss plattformunabhängig sein
* Das Programm muss plattformunabhängig sein
* Das Programm muss einen anderen Namen als „DKBTrace“ haben
* Das Programm muss einen anderen Namen als „DKBTrace“ haben
Da man mit diesen Bedingungen einverstanden war, begab man sich an die Namensfindung, wobei der Name „Persistance Of Vision Raytracer“ vorgeschlagen wurde, welcher letztendlich zu „POV-Ray“ gekürzt wurde.
Da man mit diesen Bedingungen einverstanden war, begab man sich an die Namensfindung, wobei der Name „Persistence Of Vision Raytracer“ vorgeschlagen wurde, welcher letztendlich zu „POV-Ray“ gekürzt wurde.


Die erste veröffentlichte Version von POV-Ray – POV-Ray 0.5 – war im Grunde eine verbesserte Version von DKBTrace, denn POV-Ray 0.5 nutze noch die gleiche Syntax, hatte allerdings weit mehr Funktionen als DKBTrace 2.12. Erst mit Version 1.0 wurde eine eigene Syntax für POV-Ray entwickelt. Zur Zeit der Veröffentlichung von POV-Ray 2.0 verließ auch Buck das Entwickler-Team, nachdem Collins es bereits vorher verlassen hatte und [[Chris Cason]] wurde Leiter des Entwickler-Teams.
Die erste veröffentlichte Version von POV-Ray –&nbsp;POV-Ray&nbsp;0.5&nbsp;– war im Grunde eine verbesserte Version von DKBTrace, denn POV-Ray 0.5 nutze noch die gleiche Syntax, hatte allerdings weit mehr Funktionen als DKBTrace 2.12. Erst mit Version 1.0 wurde eine eigene Syntax für POV-Ray entwickelt. Zur Zeit der Veröffentlichung von POV-Ray 2.0 verließ auch Buck das Entwickler-Team, nachdem Collins es bereits vorher verlassen hatte, und [[Chris Cason]] wurde Leiter des Entwickler-Teams.


Die derzeitige offizielle Version für alle Systeme von POV-Ray ist 3.7.0 (erschienen am 6. November 2013).<ref>[http://www.povray.org/download/ POV-Ray Download]</ref> Die Version 3.7 beinhaltet als größte Neuerung die Unterstützung von [[Multithreading]]. Außerdem gibt es kleinere Syntaxänderungen und Sprachergänzungen. Ab der Version 3.7.0 wird die Software unter der [[GNU Affero General Public License]] Ausgabe 3 (AGPLv3) veröffentlicht.<ref name="lizenz" />
Die aktuelle Version von POV-Ray ist 3.6.2 für Windows bzw. 3.6.1 für andere Systeme. POV-Ray 3.7 wurde bereits zu Testzwecken vorab veröffentlicht, aber ersetzt noch nicht Version 3.6, da die Entwickler sich noch vorbehalten, Änderungen bis zur offiziellen Freigabe vorzunehmen.<br />
Die Version 3.7 beinhaltet als größte Neuerung die Unterstützung von [[Multithreading]]. Außerdem gibt es kleinere Syntaxänderungen und Sprachergänzungen.


== Versionen ==
== Versionen ==
Es existieren Versionen für fast alle gängigen [[Betriebssystem]]e, insbesondere einige die auf verteilten Systemen ([[Computercluster|Clustern]]) betrieben werden können. Somit steht die Rechenleistung von POV-Ray im direkten Verhältnis zur Anzahl der zur Verfügung stehenden Rechner und ist durch dieses skalierbar.
Es existierten Versionen für fast alle gängigen [[Betriebssystem]]e, insbesondere einige die auf verteilten Systemen ([[Computercluster|Clustern]]) betrieben werden können. Somit steht die Rechenleistung von POV-Ray im direkten Verhältnis zur Anzahl der zur Verfügung stehenden Rechner und ist hierdurch skalierbar. Auf neueren MacOS-Versionen wird POV-Ray nicht mehr unterstützt.


<gallery caption="Render-Beispiele">
<gallery caption="Render-Beispiele">
Bild:Glasses 800 edit.png|Verschiedene Gegenstände mit [[Radiosity (Computergrafik)|Radiosity]] gerendert
Glasses 800 edit.png|Verschiedene Gegenstände mit [[Radiosity (Computergrafik)|Radiosity]] gerendert
Bild:PNG transparency demonstration 1.png|vier [[Spielwürfel|Präzisionswürfel]]
PNG transparency demonstration 1.png|Vier [[Spielwürfel|Präzisionswürfel]]
Bild:PentagonDodekaederRömisch.JPG|[[Pentagondodekaeder (Römer)|römisches Pentagondodekaeder]]
PentagonDodekaederRömisch.JPG|[[Römisches Dodekaeder|römisches Pentagondodekaeder]]
Bild:Povray_house_of_the_temple.png|[[:en:House of the Temple|„House of the Temple“]] in Washington D.C.
Povray house of the temple.png|[[House of the Temple]] in Washington D.C.
</gallery>
</gallery>


== Anwendung ==
== Anwendung ==
=== Szenenaufbau ===
=== Szenenaufbau ===
Eine Szene wird mittels einer Programmiersprache, der "Scene Description Language" (SDL), beschrieben<ref>[http://wiki.povray.org/content/Documentation:Contents wiki.povray.org]</ref>. Alle Elemente der Szene, wie Kamera, Lichtquellen, Objekte und Hintergrund, können sehr detailliert beschrieben werden. Die SDL enthält eine Reihe von Elementen, die auch "normale" Programmiersprachen ausmachen, wie zum Beispiel Variablen, Schleifen, Arrays, If-Abfragen usw. So lassen sich komplexe Szenen unter Umständen mit wenigen Programmzeilen beschreiben.<br />
Jede Szene ist nach dem gleichen Prinzip aufgebaut: Zunächst wird die Kameraposition definiert sowie der Punkt, auf den sie fokussiert ist, anschließend werden der Hintergrund und die Lichtquelle(n) definiert, erst danach kommt der Inhalt der Szene an die Reihe.<br />


'''Beispiel-Grundszene'''
'''Beispiel-Grundszene'''
[[Bild:Povray grundszene.gif|thumb|right|POV-Ray Ergebnis der links beschriebenen Szene.]]
[[Datei:Povray grundszene.gif|mini|POV-Ray Ergebnis der links beschriebenen Szene.]]
<source lang="povray">
<syntaxhighlight lang="pov">
// Grundgerüst
// Grundgerüst
#include "colors.inc"
#include "colors.inc"
Zeile 92: Zeile 94:
}
}
}
}
}
}</source>
</syntaxhighlight>


Solche Szenen können schnell große Komplexität annehmen, wenn man z.&nbsp;B. mit POV-Ray ein Gebäude nachbildet oder eine Animation erstellt.
Solche Szenen können schnell große Komplexität annehmen, wenn man z.&nbsp;B. mit POV-Ray ein Gebäude nachbildet oder eine Animation erstellt.
Zeile 99: Zeile 102:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Name !! Syntax !! Code !! Ergebnis
! Name !! Syntax !! Code !! Ergebnis
|-
|-
| Kugel
| Kugel
|
|| <source lang="povray">sphere {
<syntaxhighlight lang="pov">
sphere {
<x,y,z>,Radius
<x,y,z>,Radius
pigment {
pigment {
color Farbe
color Farbe
}
}
}
}</source>
</syntaxhighlight>
|| <source lang="povray">sphere {
|
<syntaxhighlight lang="pov">
sphere {
<0,1,0>,1
<0,1,0>,1
pigment {
pigment {
color Red
color Red
}
}
}
}</source>
</syntaxhighlight>
|| [[Bild:Povray grundszene.gif|thumb]]
| [[Datei:Povray grundszene.gif|mini]]
|-
|-
| Quader
| Quader
|
|| <source lang="povray">box {
<syntaxhighlight lang="pov">
box {
<x-Ecke1,y-Ecke1,z-Ecke1>,
<x-Ecke1,y-Ecke1,z-Ecke1>,
<x-Ecke2,y-Ecke2,z-Ecke2>
<x-Ecke2,y-Ecke2,z-Ecke2>
Zeile 124: Zeile 135:
color Farbe
color Farbe
}
}
}
}</source>
</syntaxhighlight>
|| <source lang="povray">box {
|
<syntaxhighlight lang="pov">
box {
<0,0,0>,<1,1,1>
<0,0,0>,<1,1,1>
rotate <-30,0,30>
rotate <-30,0,30>
Zeile 131: Zeile 145:
color Red
color Red
}
}
}
}</source>
</syntaxhighlight>
|| [[Bild:Povray quader.gif|thumb]]
| [[Datei:Povray quader.gif|mini]]
|-
|-
| Zylinder || <source lang="povray">cylinder {
| Zylinder
|
<syntaxhighlight lang="pov">
cylinder {
<x-unten,y-unten,z-unten>,
<x-unten,y-unten,z-unten>,
<x-oben,y-oben,z-oben>,Radius
<x-oben,y-oben,z-oben>,Radius
Zeile 140: Zeile 158:
color Farbe
color Farbe
}
}
}
}</source>
</syntaxhighlight>
|| <source lang="povray">cylinder {
|
<syntaxhighlight lang="pov">
cylinder {
<0,0,0>,<1,1,1>,1
<0,0,0>,<1,1,1>,1
pigment {
pigment {
color Red
color Red
}
}
}
}</source>
</syntaxhighlight>
|| [[Bild:Povray zylinder.gif|thumb]]
| [[Datei:Povray zylinder.gif|mini]]
|-
|-
| Kegel(stumpf) || <source lang="povray">cone {
| Kegel(stumpf)
|
<syntaxhighlight lang="pov">
cone {
<x-unten,y-unten,z-unten>,Radius-unten,
<x-unten,y-unten,z-unten>,Radius-unten,
<x-oben,y-oben,z-oben>,Radius-oben
<x-oben,y-oben,z-oben>,Radius-oben
Zeile 155: Zeile 180:
color Farbe
color Farbe
}
}
}
}</source>
</syntaxhighlight>
|| <source lang="povray">cone {
|
<syntaxhighlight lang="pov">
cone {
<0,-1,0>,1,
<0,-1,0>,1,
<0,1,0>,0
<0,1,0>,0
Zeile 170: Zeile 198:
color Red
color Red
}
}
}
}</source>
</syntaxhighlight>
|| [[Bild:Povray kegel(stumpf).gif|thumb]]
| [[Datei:Povray kegel(stumpf).gif|mini]]
|-
|-
| Torus || <source lang="povray">torus {
| Torus ||
<syntaxhighlight lang="pov">
torus {
Hauptradius,Nebenradius
Hauptradius,Nebenradius
rotate <x-Drehung,y-Drehung,z-Drehung>
rotate <x-Drehung,y-Drehung,z-Drehung>
Zeile 179: Zeile 210:
color Farbe
color Farbe
}
}
}
}</source>
</syntaxhighlight>
|| <source lang="povray">torus {
|
<syntaxhighlight lang="pov">
torus {
0.5,0.2
0.5,0.2
rotate <0,30,30>
rotate <0,30,30>
Zeile 186: Zeile 220:
color Red
color Red
}
}
}
}</source> || [[Bild:Povray torus.gif|thumb]]
</syntaxhighlight>
| [[Datei:Povray torus.gif|mini]]
|}
|}


== Weblinks ==
== Weblinks ==
{{Wikibooks|Raytracing mit POV-Ray}}
{{Wikibooks|Raytracing mit POV-Ray}}
{{Commons|POV-Ray}}
{{Commons}}
* [http://www.povray.org/ Offizielle Website]
* [http://www.povray.org/ Offizielle Website]
* [http://www.kurztutorial.info/pov-ray/inhalt.htm Kleine Einführung in das Programm]
* [http://www.kurztutorial.info/pov-ray/inhalt.htm Kleine Einführung in das Programm]
* [http://www.f-lohmueller.de/pov_tut/pov__ger.htm POV-Ray Tutorial von Friedrich A. Lohmüller]
* Friedrich A. Lohmüller: [http://www.f-lohmueller.de/pov_tut/pov__ger.htm POV-Ray Tutorial]
* [http://sites.google.com/site/clauserhardwimmer/povray-icons Icons mit Povray und deren Skripte]
* [http://sites.google.com/site/clauserhardwimmer/povray-icons Icons mit Povray und deren Skripte]
* [http://users.monash.edu.au/~leo/software/povray/index.html sr-povray] Eine von Leo Brewin um Lorentzkontraktion erweiterte Version 3.6
* [http://users.monash.edu.au/~leo/software/povray/index.html sr-povray] Eine von Leo Brewin um Lorentzkontraktion erweiterte Version 3.6
* [http://www.povray.org/documentation/view/3.6.1/2/ Introduction to POV-Ray]
== Einzelnachweise ==

== Einzelnachweise ==
<references />
<references />

{{SORTIERUNG:Povray}}
{{SORTIERUNG:Povray}}
[[Kategorie:3D-Grafiksoftware]]
[[Kategorie:3D-Grafiksoftware]]
[[Kategorie:Freie Grafiksoftware]]

[[af:POV-Ray]]
[[ca:POV-Ray]]
[[cs:POV-Ray]]
[[en:POV-Ray]]
[[es:POV-Ray]]
[[fi:POV-Ray]]
[[fr:POV-Ray]]
[[hr:POV-Ray]]
[[it:POV-Ray]]
[[ja:POV-Ray]]
[[ko:POV-Ray]]
[[nl:Persistence of Vision Raytracer]]
[[pl:POV-Ray]]
[[pt:POV-Ray]]
[[ru:POV-Ray]]
[[sv:POV-Ray]]
[[tr:POV-Ray]]
[[vi:POV-Ray]]
[[zh:POV-Ray]]

Aktuelle Version vom 18. Mai 2024, 13:02 Uhr

POV-Ray

Screenshot
Der Utah Teapot gerendert in POV-Ray unter Verwendung von Schattenwurf,
specular-highlighting, farbigem Licht und bump mapping
Basisdaten

Erscheinungsjahr Juli 1991[1]
Aktuelle Version 3.7.0.0[2]
(7. November 2013)
Betriebssystem Plattformunabhängig
Programmier­sprache C++[3]
Kategorie Ray-Tracer
Lizenz AGPLv3[4]
deutschsprachig nein
www.povray.org

POV-Ray (Persistence of Vision – wörtlich etwa: Die Beharrlichkeit/Trägheit des Sehens/Nachbild auf der Netzhaut – wie nach einem Blick in die Sonne) ist eine Software, mit der 3D-Computergrafiken mittels Raytracing erstellt werden können. Die möglichen Mehrdeutigkeiten bei der Interpretation des Namens sind beabsichtigt. Der Rechenaufwand zur Bilderzeugung ist so hoch, dass ein Personal Computer auch heute (2018) mehrere Minuten bis Stunden oder sogar Tage mit der Berechnung eines einzigen Bildes beschäftigt sein kann.

Technik

POV-Ray ist ein reiner Renderer und beinhaltet keinen eigenen 3D-Modellierer. Die Definition der dargestellten Szene geschieht mittels einer eigenen Szenen-Beschreibungssprache (Scene-Description-Language, SDL), deren Syntax den Programmiersprachen C und C++ ähnelt. Zur Erstellung komplexer Modelle können externe Tools verwendet werden, beispielsweise Moray oder KPovModeler.

Im Gegensatz zu den sonst üblichen Renderern basieren die zugrundeliegenden Daten nicht auf Polygonen, sondern auf mathematischen Formeln und Körpern. Dadurch ist es beispielsweise möglich, Fraktale dreidimensional darzustellen. Dies hat jedoch zur Folge, dass die Kompatibilität stark eingeschränkt ist. Es gibt viele Konvertierungsprogramme von anderen 3D-Grafikformaten ins POV-Ray-Format, aber keines, welches POV-Ray-Daten ohne Informationsverlust in ein anderes Format umwandeln kann.

POV-Ray beherrscht Raytracing, eine daran angepasste Radiosity-Berechnung und rudimentäre Photon Maps zur Berechnung von Kaustiken.

Der Komplexität der gerenderten Bilder sind keine theoretischen Grenzen gesetzt; in der Praxis ist die zur Verfügung stehende Rechenzeit der begrenzende Faktor.

Geschichte

Um 1986 besaß David Kirk Buck einen Amiga-Computer. Einer seiner Freunde zeigte ihm zu dieser Zeit einen Raytracer, der jedoch nicht mit Bucks Amiga kompatibel war. Daher schrieb er die entsprechenden Treiber, um den Tracer selber nutzen zu können. Dieser Raytracer konnte lediglich eine schwarze oder weiße Ebene darstellen sowie einfache Kugeln. Da Buck jedoch trotzdem von dem Programm beeindruckt war, programmierte er das Programm ein wenig weiter, sodass dieses auch Farb-Darstellungen unterstützte. Dabei erkannte er, dass es besser sei, einen eigenen Raytracer zu entwickeln – DKBTrace war geboren.

Im Jahre 1987 oder 1988 wurde Buck von Aaron Collins kontaktiert, da dieser DKBTrace so modifiziert hatte, dass es – statt wie zuvor nur auf dem Amiga – auch auf einem PC einzusetzen war. Dadurch entstand eine Zusammenarbeit zwischen Buck und Collins. Während die zwei an Version 2.12 von DKBTrace – der letzten veröffentlichten Version – arbeiteten, wurden sie auf eine Gruppe von Menschen aufmerksam, die sehr interessiert an DKBTrace waren und viele verschiedene Szenen damit erstellten. Da diese Gruppe frustriert war, dass Buck und Collins nicht schnell genug neue Funktionen in DKBTrace einbauen konnten, machten sie den Vorschlag, einen weiteren neuen Raytracer zu entwickeln. Da Buck zu dieser Zeit immer weniger Zeit mit Raytracing verbrachte, machte er dieser Gruppe auf CompuServe das Angebot, einen neuen Raytracer auf Basis von DKBTrace zu entwickeln. Dieses Angebot verknüpfte er mit drei Bedingungen:

  • Das Programm muss als Freeware angeboten werden sowie der Quellcode frei verfügbar sein
  • Das Programm muss plattformunabhängig sein
  • Das Programm muss einen anderen Namen als „DKBTrace“ haben

Da man mit diesen Bedingungen einverstanden war, begab man sich an die Namensfindung, wobei der Name „Persistence Of Vision Raytracer“ vorgeschlagen wurde, welcher letztendlich zu „POV-Ray“ gekürzt wurde.

Die erste veröffentlichte Version von POV-Ray – POV-Ray 0.5 – war im Grunde eine verbesserte Version von DKBTrace, denn POV-Ray 0.5 nutze noch die gleiche Syntax, hatte allerdings weit mehr Funktionen als DKBTrace 2.12. Erst mit Version 1.0 wurde eine eigene Syntax für POV-Ray entwickelt. Zur Zeit der Veröffentlichung von POV-Ray 2.0 verließ auch Buck das Entwickler-Team, nachdem Collins es bereits vorher verlassen hatte, und Chris Cason wurde Leiter des Entwickler-Teams.

Die derzeitige offizielle Version für alle Systeme von POV-Ray ist 3.7.0 (erschienen am 6. November 2013).[5] Die Version 3.7 beinhaltet als größte Neuerung die Unterstützung von Multithreading. Außerdem gibt es kleinere Syntaxänderungen und Sprachergänzungen. Ab der Version 3.7.0 wird die Software unter der GNU Affero General Public License Ausgabe 3 (AGPLv3) veröffentlicht.[4]

Versionen

Es existierten Versionen für fast alle gängigen Betriebssysteme, insbesondere einige die auf verteilten Systemen (Clustern) betrieben werden können. Somit steht die Rechenleistung von POV-Ray im direkten Verhältnis zur Anzahl der zur Verfügung stehenden Rechner und ist hierdurch skalierbar. Auf neueren MacOS-Versionen wird POV-Ray nicht mehr unterstützt.

Anwendung

Szenenaufbau

Eine Szene wird mittels einer Programmiersprache, der "Scene Description Language" (SDL), beschrieben[6]. Alle Elemente der Szene, wie Kamera, Lichtquellen, Objekte und Hintergrund, können sehr detailliert beschrieben werden. Die SDL enthält eine Reihe von Elementen, die auch "normale" Programmiersprachen ausmachen, wie zum Beispiel Variablen, Schleifen, Arrays, If-Abfragen usw. So lassen sich komplexe Szenen unter Umständen mit wenigen Programmzeilen beschreiben.


Beispiel-Grundszene

POV-Ray Ergebnis der links beschriebenen Szene.
// Grundgerüst
#include "colors.inc"
global_settings {
    assumed_gamma 1.0
}
camera {
    location <0,0.5,-4>
    look_at  <0,0,0>
}
sky_sphere {
    pigment {
        gradient y
        color_map {
            [0.0 rgb <0.6,0.7,1.0>]
            [0.7 rgb <0.0,0.1,0.8>]
        }
    }
}
light_source {
    <-30,30,-30>
    color rgb <1,1,1>
}
// Szeneninhalt

// Eine grüne Ebene
plane {
    y, -1
    pigment {
        color rgb <0.2,0.8,0.2>
    }
}
// Eine rote Kugel
sphere {
    <0,0,1>, 1
    texture {
        pigment {
            color Red
        }
    }
}

Solche Szenen können schnell große Komplexität annehmen, wenn man z. B. mit POV-Ray ein Gebäude nachbildet oder eine Animation erstellt.

Grundobjekte

Name Syntax Code Ergebnis
Kugel
sphere {
    <x,y,z>,Radius
    pigment {
        color Farbe
    }
}
sphere {
    <0,1,0>,1
    pigment {
        color Red
    }
}
Quader
box {
    <x-Ecke1,y-Ecke1,z-Ecke1>,
    <x-Ecke2,y-Ecke2,z-Ecke2>
    rotate <x-Drehung,y-Drehung,z-Drehung>
    pigment {
        color Farbe
    }
}
box {
    <0,0,0>,<1,1,1>
    rotate <-30,0,30>
    pigment {
        color Red
    }
}
Zylinder
cylinder {
    <x-unten,y-unten,z-unten>,
    <x-oben,y-oben,z-oben>,Radius
    pigment {
        color Farbe
    }
}
cylinder {
    <0,0,0>,<1,1,1>,1
    pigment {
        color Red
    }
}
Kegel(stumpf)
cone {
    <x-unten,y-unten,z-unten>,Radius-unten,
    <x-oben,y-oben,z-oben>,Radius-oben
    pigment {
        color Farbe
    }
}
cone {
    <0,-1,0>,1,
    <0,1,0>,0
    pigment {
        color Red
    }
}
cone {
    <0,-1,0>,1,
    <0,1,0>,0.25
    translate <5,0,0>
    pigment {
        color Red
    }
}
Torus
torus {
    Hauptradius,Nebenradius
    rotate <x-Drehung,y-Drehung,z-Drehung>
    pigment {
        color Farbe
    }
}
torus {
    0.5,0.2
    rotate <0,30,30>
    pigment {
        color Red
    }
}
Wikibooks: Raytracing mit POV-Ray – Lern- und Lehrmaterialien
Commons: POV-Ray – Album mit Bildern, Videos und Audiodateien

Einzelnachweise

  1. http://www.povray.org/news/index.php#323
  2. Release 3.7.0.0. 7. November 2013 (abgerufen am 15. März 2018).
  3. The povray Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 3. September 2018).
  4. a b POV-Ray License. Persistence of Vision Raytracer Pty. Ltd., abgerufen am 6. November 2014.
  5. POV-Ray Download
  6. wiki.povray.org