Top Banner
POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen Objekten erzeugen kann. (POV steht für Persistence Of Vision = Beharrlichkeit des Sehens; Das Wort Ray steht für Raytracing, die Technik, auf der dieses Programm basiert.) Das Programm tritt mit dem Anspruch auf, sogar die Erzeugung fotorealistischer Bilder zu ermöglichen. Durch die Erzeugung mehrerer Einzelbilder können letztendlich auch Videos erstellt werden. POV-Ray ist kostenlos im Internet erhältlich. Für alle, die von diesen Argumenten überzeugt sind, ist die folgende kurze Einführung in das Programm gedacht. Um POV-Ray zu erlernen, genügen einfache Computerkenntnisse. 1. Eine kleine Einleitung 2. Erste Schritte 3. Ein zweites Bild zur Ü bung 4. Die wichtigste Technik: Bildung von Klassen 5. Das erste Video
17

POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Aug 15, 2019

Download

Documents

TrầnKiên
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

POV-Ray - Eine Einführung

POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen Objekten erzeugen kann. (POV steht für Persistence Of Vision = Beharrlichkeit des Sehens; Das Wort Ray steht für Raytracing, die Technik, auf der dieses Programm basiert.)

� Das Programm tritt mit dem Anspruch auf, sogar die Erzeugung fotorealistischer Bilder zu ermöglichen. � Durch die Erzeugung mehrerer Einzelbilder können letztendlich auch Videos erstellt werden. � POV-Ray ist kostenlos im Internet erhältlich.

Für alle, die von diesen Argumenten überzeugt sind, ist die folgende kurze Einführung in das Programm gedacht. Um POV-Ray zu erlernen, genügen einfache Computerkenntnisse.

1. Eine kleine Einleitung 2. Erste Schritte 3. Ein zweites Bild zur Übung 4. Die wichtigste Technik: Bildung von Klassen 5. Das erste Video

Page 2: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Eine kleine Einleiung

Bei POV-Ray handelt es sich um ein leicht erlernbares Programm, das die Erzeugung von 3D Bildern ermöglicht. Die nach einer bestimmten Syntax verfassten Bildbeschreibungen werden von POV-Ray in Bilder umgesetzt. Durch das Aneinanderreihen mehrerer Bilder können letztendlich auch ganze Videos erstellt werden.

Angenommen, man möchte ein Bild erzeugen auf dem eine rote Kugel (sonst nichts) zu sehen ist, würde die Anweisung für das Programm so lauten:

sphere { <0, 1, 0> 0.5 pigment {color Red} }

Das Ergebnis sieht dann etwa so aus:

Diese Beschreibung ist folgendermaßen zu verstehen:

Dem Programm wird mitgeteil, dass es eine Kugel darstellen soll ("sphere" heißt Kugel.). Sie hat die Koordinaten X = 0, Y = 1 und Z = 0, einen Radius von 0.5 und eine rote Farbe.

Mithilfe solcher Anweisungen ist es möglich, recht komplexe Gebilde zu konstruieren wie im folgenden Beipiel:

Page 3: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Das Bild zeigt einen sogenannten Pentagondodekaeder, einen Gegenstand aus der Römerzeit. (Über den Zweck dieses Gegenstandes existieren verschiedene Auffassungen.) Weitere Beipiele findest du unter http://hof.povray.org

Die Programmoberfläche von POV-Ray ähnelt einem Textverarbeitungsprogramm. In dem weißen Feld gibst du die Bildbeschreibung ein, während du mit dem grünen Button "Run" das Programm aufforderst, das Bild gemäß der Beschreibung zu erstellen. Das Erstellen eines digitalen Bildes aus einer Bildbeschreibung bezeichnet man übrigens auch als rendern.

Page 4: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Sobald POV-Ray ein Bild für dich erstellt hat, legt es eine Kopie des Bildes als Bitmap in einem speziellen Ordner ab.

Mit einem weiteren Programm kann man durch die Aneinanderreihung solcher Bilder auf einfache Weise auch ganze Videos erstellen.

Unter dem folgenden Link findest du ein Video, das ich als Hausarbeit im Institut für Technik und Didaktik an der Uni Münster eingereicht habe.

Format: AVI, Größe ca. 10 MB

Auf dem Video unternimmt der Betrachter zunächst einen Flug in die Atomstruktur eines Stücks Silizium; anschließend wird eine Atomreihe ausgeschitten und gedreht um eine bessere Ansicht der Atomreihe zu ermöglichen. In der letzten Sequenz werden die Lagen des Leitungsbands und der Valenzbänder dargestellt. Das Video steht im Zusammenhang einer Reihe von insgesamt drei Videos, welche die Funktionsweise einer Solarzelle möglichst anschaulich erklären sollen.

Wo bekommt man POV-Ray?

POV-Ray kann vollkommen kostenlos bezogen werden unter http://www.povray.org/download/

Page 5: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Erste Schritte

Die Einarbeitung in das Programm POV-Ray erfolgt am leichtesten mithilfe eines Beispiels.

Anhand der Bildbeschreibung einer einfachen roten Kugel können schon alle wichtigen Elemente

auch einer komplexen Bildbeschreibung erläutert werden: - Eine Lichtquelle, die Postion des

Betrachters und das Objekt selber.

Öffne bitte das Programm POV-Ray (Für den Fall, dass sich POV-Ray nicht im Schnellstartmenü oder aufdem Desktop befindet, liegt die entprechende Datei im Verzeichnis "bin" und heißt "pvengine.exe").

Anschließend bekommst du die Programmoberfläche zu sehen:

Hier siehst du noch einmal das Bild der roten Kugel von vorhin. Darunter findest du den komplettenQuelltext zu diesem Bild.

#include "golds.inc"#include "metals.inc"#include "glass.inc"#include "colors.inc"#include "finish.inc"

Page 6: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

camera {location <-1, 4, 2>look_at <0, 0, 0>}

light_source { <-20, 40, -20>color White}

sphere {<0, 1, 0>0.5pigment {color Red}}

Kopiere einmal diesen Quelltext und füge ihn in das Eingabefeld von POV-Ray ein; anschließend betätigeden Button "Run". Bevor das Programm das Bild erstellt, fragt es dich, ob du die geänderte Dateispeichern möchtest. Das Speichern ist, ich weiß nicht warum, Voraussetzung dafür, dass das Bild erstelltwerden kann.

Anschließend siehst du das Bild mit der roten Kugel oben. Wahrscheinlich wird dein Bild etwas größerdargestellt. Die Größe kannst du bequem verändern, indem du im Ausklappmenü links oben diegewünschte Größe einstellst.

Sobald POV-Ray ein Bild für dich gerendert hat, legt es eine Kopie des Bildes in demselben Ordner ab,im dem auch der Quelltext abgespeichert wurde. Wenn du vorher schon ein Bild erstellt hast, wird esautomatisch überschrieben.

Nun zur Erklärung des Quelltextes:

#include "golds.inc"#include "metals.inc"#include "glass.inc"#include "colors.inc"#include "finish.inc"

Hier werden 5 Dateien eingebunden, in denen Texturen für unsere Objekte definiert werden. In der Dateicolors.inc wird z.B. festgelegt, dass die Farbe Orange einen Rotanteil von 100 %, einen Grünanteil von 50% und einen Blauanteil von 0 % enthält. Normalerweise muss man für die Textur eines Objektes immeralle drei Farbanteile genau angeben. Nachdem man die Datei colors.inc eingebunden hat, braucht man diegewünschte Farbe nur noch aufzurufen und POV-Ray sucht sich selbstständig die Farbanteile aus derDatei colors.inc heraus.

Die anderen Dateien erfüllen ähnliche Funktionen bezogen auf Texturen, die sich durch spezielle Effekte,wie Glanz oder Transparenz auszeichnen. Für unsere rote Kugel könnten alle Dateien bis auf colors.incaber auch weggelassen werden.

Nun zum nächsten Schritt:

camera {location <-1, 4, 2>look_at <0, 0, 0>}

Page 7: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Hier wurde die Postion (location) und Blickrichtung (look_at) des Betrachters festgelegt.

light_source { <-20, 40, -20>color White}

Hier wurde eine Lichtquelle (light_source) eingefügt, die Voraussetzung dafür dass man überhaupt etwassehen kann. Die Lichtquelle hat die Position X = -20, Y = 40 und Z = -20. Das Licht enthält das gesamteLichtspektrum, ist also weiß.

sphere {<0, 1, 0>0.5pigment {color Red}}

Hier unsere Kugel mit Position, Radius und roter Farbe.

Page 8: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Ein zweites Bild zur Übung

In der Regel hat man es mit komplexeren Objekten zu tun, als bloß mit einzelnen Kugeln. NebenQuadern, Kegeln, Pyramiden können auch etwas ausgefallenere Objekte wie Kringel, Reifen oderganze Hügellandschaften direkt aufgerufen werden. In der Regel setzen sich aber selbst komplexeBilder nur aus geometrischen Grundkörpern zusammen.

Um etwas mehr Sicherheit im Umgang mit POV-Ray zu bekommen, wenden wir uns nun einem etwaskomplexeren Objekt, einem Stück Silizium, zu.

Auf dem Bild ist ein Siliziumatom mit seinen insgesamt 4 Nachbaratomen zu sehen. Dieses Objekt habeich innerhalb einer Arbeit über das Thema Solartechnik verwendet. Hier der Quelltext:

#include "golds.inc"#include "metals.inc"#include "glass.inc"#include "colors.inc"#include "finish.inc"

camera {location <5, 1, -5>look_at <-9, 3, 14>}

light_source {<-20, 40, -20>color White}

sphere {<1.5, 1.5, 1.5>

Page 9: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

0.3 pigment {color Cyan}finish {Shiny}}

sphere {<0, 0, 3>0.3pigment {color Cyan}finish {Shiny}}

sphere {<3, 0, 0>0.3 pigment {color Cyan}finish {Shiny}}

sphere {<3, 3, 3> 0.3 pigment {color Cyan}finish {Shiny}}

sphere {<0, 3, 0> 0.3 pigment {color Cyan}finish {Shiny}}

cylinder {<1.5, 1.5, 1.5> <3, 0, 0>, 0.02pigment {color Grey}} cylinder {<1.5, 1.5, 1.5> <0, 3, 0>, 0.02pigment {color Grey}}cylinder {<1.5, 1.5, 1.5> <0, 0, 3>, 0.02pigment {color Grey}}cylinder {<1.5, 1.5, 1.5> <3, 3, 3>, 0.02pigment {color Grey}}

Zur Erklärung des Quelltextes:

In den ersten Zeilen siehst du, wie in jedem Dokument, die pauschalen Angaben zur Einbindung externerDateien. Anschließend werden die Positionen des Betrachters und und des Lichts festgelegt. Nun zu den

Page 10: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Objekten:

sphere {<1.5, 1.5, 1.5> 0.3 pigment {color Cyan}finish {Shiny}}

sphere {<0, 0, 3>0.3pigment {color Cyan}finish {Shiny}}

sphere {<3, 0, 0>0.3 pigment {color Cyan}finish {Shiny}}

sphere {<3, 3, 3> 0.3 pigment {color Cyan}finish {Shiny}}

sphere {<0, 3, 0> 0.3 pigment {color Cyan}finish {Shiny}}

Das mittlere Atom hat die Koordinaten 1,5/1,5/1,5 und kommt gleich als erstes. Anschließend folgen dieNachbaratome. Um die Position der Atome etwas anschaulicher zu machen, habe ich hier einmalzusätzlich die Koordinatenachsen eingezeichnet.

Page 11: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Nun zu den grauen Stäben, die ja nichts anderes als langgezogene Zylinder sind:

cylinder {<1.5, 1.5, 1.5> <3, 0, 0>, 0.02pigment {color Grey}}

Dieser Zylinder verbindet die Punkte 1,5/1,5/1,5 mit 3/0/0 und hat einen Durchmesser von 0,02. Daimmer das mittlere Atom mit seinen Nachbarn verbunden werden soll, wird die erste Koordinatebeibehalten, während die zweite Koordinate immer der Position des enstsprechenden Nachbaratomsentspricht.

Page 12: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Die wichtigste Technik: Bildung von Klassen

Oft tauchen in Bildbeschreibungen mehrmals gleiche Objekte auf. Eine Arbeitserleichterung ist es, wiederkehrende Objekte einmal zu definieren und anschließend mehrmals aufzurufen.

Hier noch einmal die fünf Siliziumatome, die eben schon als Beispiel gedient haben:

Der Quelltext lautete:

#include "golds.inc" #include "metals.inc" #include "glass.inc" #include "colors.inc" #include "finish.inc" camera { location <5, 1, -5> look_at <-9, 3, 14> } light_source { <-20, 40, -20> color White } sphere { <1.5, 1.5, 1.5> 0.3 pigment {color Cyan} finish {Shiny} } sphere { <0, 0, 3> 0.3 pigment {color Cyan}

Page 13: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

finish {Shiny} } sphere { <3, 0, 0> 0.3 pigment {color Cyan} finish {Shiny} } sphere { <3, 3, 3> 0.3 pigment {color Cyan} finish {Shiny} } sphere { <0, 3, 0> 0.3 pigment {color Cyan} finish {Shiny} } cylinder { <1.5, 1.5, 1.5> <3, 0, 0>, 0.02 pigment {color Grey} } cylinder { <1.5, 1.5, 1.5> <0, 3, 0>, 0.02 pigment {color Grey} } cylinder { <1.5, 1.5, 1.5> <0, 0, 3>, 0.02 pigment {color Grey} } cylinder { <1.5, 1.5, 1.5> <3, 3, 3>, 0.02 pigment {color Grey} }

Einmal angenommen, wir wollten nicht nur einzelne Atome, sondern ein ganzes Siliziumgitter darstellen, könnten wir natürlich jedes Atom einzeln in unserem Beschreibungstext aufführen. Eine einfachere Möglichkeit wäre es, unsere fünf Atome zu einer sogenannten Klasse zusammenzufügen und dann immer die Klasse um einen bestimmten Betrag verschoben darstellen zu lassen. Die Syntax dafür sieht etwa so aus:

#declare grundstruktur = union { Hier kommt alles hinein, was oben steht! } Aufgerufen wird diese Klasse mit dem von mir gewählten Namen "Grundstruktur" dann mit folgender Anweisung:

object {grundstruktur}

Möchte man diese Klasse nun vervielfältigen oder verschieben, ruft man immer nur diese Klasse mit den gewünschten Verschiebungsbeträgen auf.

Page 14: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

object {grundstruktur} object {grundstruktur translate <-3,0,3>} object {grundstruktur translate <-3,3,0>} object {grundstruktur translate <0,3,3>} Diese Anweisungen würden folgendes Bild ergeben:

Mit Hilfe dieser Technik lassen sich in kurzer Zeit recht umfangreiche Strukturen erzeugen wie man im auf dem Sreenshot eines Videos, das ich erstellt habe, sehen kann:

Page 15: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

Das erste Video

Das Besondere an POV-Ray ist es, dass man auf einfache Art eine Reihe von Bildern erzeugen

kann, in denen die Objekte nach Bedarf vor jeder Bilderstellung ein klein wenig verschoben

werden. Fügt man diese Bilder mit einem weiteren Programm (z. B. Fast Movie Processor)

zusammen, entsteht wie bei einem Daumenkino der Eindruck einer flüssigen Bewegung.

Anhand eines einfachen Beispiels möchte ich einmal die Erstellung eines Videos erklären:

Das Skript zu diesem Bild sieht so aus:

#include "colors.inc" #include "finish.inc"

camera {location <-1, 4, 2>look_at <0, 0, 0>

}

light_source {<-20, 40, -20>color White }

sphere {<2-clock*3, 0, 0>0.5pigment {color Red}finish {Shiny} }

cylinder {<0, 0, -10> <0, 0, 10>, 0.02pigment {color Grey}}

cylinder {

Page 16: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

<0, -10, 0> <0, 10, 0>, 0.02pigment {color Grey}}

cylinder {<-10, 0, 0> <10, 0, 0>, 0.02pigment {color Grey}}

Die Zylinder sollten hier zur besseren Orientierung die Koordinatenachsen darstellen. Die Kugel bekommtihr glänzendes Aussehen durch das Atribut finish {Shiny}. Wichtig ist, dass die finish.inc am Anfang desDokuments eingebunden wird. Sonst gibts eine Fehlermeldung. Aber nun zum Thema: Das besondere indieser Beschreibung ist die Positionsbestimmung der Kugel. Du findest dort die Anweisung <2-clock*3,0, 0>. Dieses Anweisung bedeutet: Die Kugel soll die Anfangsposition 2,0,0 haben und anschließend umdrei Einheiten auf der X-Achse verschoben werden (clock bedeutet zählen; wieso - wird gleich erklärt).Das Verschieben wurde in unserem Bild gar nicht vorgenommen, die Kugel wurde mit der Position 2,0,0dargestellt. Hierzu wäre noch ein weiterer Schritt notwendig:

Wir gehen oben ins Menü Tools, anschließend auf "Edit master POVRAY.INI". Ganz unten geben wirfolgenden Text ein:

Input_File_Name = DieDateiInDerSichDieBildbeschreibungBefindet.povInitial_Frame = 1Final_Frame = 50Initial_Clock = 0Final_Clock = 1

Danach gehen wir auf "Speichern unter" und speichern diese Datei in demselben Verzeichnis, in dem sichauch unsere Bildbeschreibung befindet.

Wir haben jetzt für unsere Variable mit dem Namen clock festgelegt, dass sie:

von 0 auf 1 hochzählt unddieses Hochzählen auf 50 Einzelbilder verteilt (Ergibt übrigens den Betrag von 0.02 pro Bild).

Anschließend öffnen wir die Datei mit der Endung ini wieder aus dem Programm POV-Ray heraus, soals wenn wir eine normale Bildbeschreibung laden würden und klicken auf den Button Run. POV-Rayerstellt nun 50 Bilder bei denen die clock-Variable in unser Bildbeschreibung langsam von 0 auf 1hochwandert. Da diese Variable in der Bildbeschreibung immer mit drei multipliziert wird, hat sich dieKugel am Ende dieses Durchlaufs um drei Einheiten verschoben. Unsere 50 Bilder befinden sich jetzt indem Ordner, in dem sich auch unsere beiden Dateien befinden.

Das Zusammenfügen der Einzelbilder

Nun benötigen wir ein zweites Programm. Ich habe bisher immer den "Fast Movie Processor" verwendet,den man im Internet (für nicht kommerzielle Zwecke) kostenlos herunterladen kann.

http://www.terradreams.de/All/Tutorials/Movietut/Movietutorial.php

Wir öffnen dieses Programm, gehen auf den Menüeintrag Input, anschließend auf Insert. Im Dateimanagergehen wir in den Ordner, in dem unsere Bilder liegen und wählen das erste Bild aus, das POV-Ray erstellt hat und bestätigen.

Unser Programm war so intelligent, dass es die Nummerierung des Bildes erkannt und alle anderen Bilder

Page 17: POV-Ray - Eine Einführung - uni-muenster.de · POV-Ray - Eine Einführung POV-Ray ist ein 3D-Computergrafikprogramm das mithilfe einer Szenenbeschreibungsprache Bilder von virtuellen

in der richtigen Reihenfolge gemäß ihrer Nummerierung eingefügt hat.

Nun klicken wir auf die Schaltfläche Output. Wir legen einen Dateinamen für unser Video fest, speichernund kommen zu einem Fenster, in dem wir verschiedene Einstellungen vornehmen können. Unten findestdu die Option "Frame Rate" wo du die Menge der Bilder einstellen kannst, die pro Sekunde abgepieltwerden. Ab einer Bildrate von 18 entsteht erfahrungsgemäß die Illusion einer flüssigen Bewegung, dieaber auf ein geübtes Auge noch etwas ruckelig wirken kann. Kinofilme verwenden eine Bildrate vondurchschnittlich 24. Mit diesem Wert habe ich ebenfalls gute Erfahrungen gemacht.

Wir bestätigen unsere Einstellungen und klicken nun zu guter Letzt auf die Schaltfläche Start. Den Resterledigt unser Programm.

Das Video müsste dann so aussehen:

Format: AVI, Größe ca. 211 KB