Mit diesem Artikel beginnt eine Serie über den
Raytracer Povray. Dieser Artikel ist als Starthilfe für Povray-Anfänger
gedacht.
Persistence of Vision Ray-Tracer (POV-Ray) Copyright
1996 POV-Team.
Einleitung
Povray (Persistence of Vision Raytracer) ist ein Ray-Tracing-Programm.
Es ist schwierig zu erklären, was mit diesem Begriff gemeint ist,
ohne eine Vielzahl von Details zu besprechen, daher verschieben wir die
genaue Erklärung auf einen späteren Artikel. Im Moment ist es
ausreichend, das Prinzip von Raytracing zu verstehen: Es ist eine Technik,
um imaginäre Szenen zu erzeugen, die im Computer durch Modelle beschrieben
sind, welche die Existenz von Objekten und ihren Begrenzungen, Punkten,
Lichtquellen und einer Kamera beschreiben. Der Rechner versucht, das Bild
so realistisch wie möglich zu erzeugen und dabei so wenig Prozessorzeit
wie möglich zu verbrauchen.
Soweit es möglich ist, versucht Povray, die Natur zu imitieren.
Manchmal muß Povray sich entscheiden, ob er die Natur nur imitieren
oder simulieren soll. Ohne solche Vereinfachungen wäre es unmöglich,
ein Bild in einer erträglichen Zeit zu erzeugen. Raytracing-Algorithmen
berechnen eine große Anzahl Strahlen (wie Lichtstrahlen), wobei sich
diese jedoch nicht ganz so wie echte optische Strahlen verhalten. In der
Natur entspringen die Strahlen einer Lichtquelle, bewegen sich im Raum,
und wo immer sie auf ein physikalisches Hindernis treffen (z.B. eine Oberfläche),
werden sie gestreut, und ein reflektierter Strahl bewegt sich von der Stelle
des Auftreffens zum Auge des Betrachters oder dem Film der Kamera. Bei
einem Raytracer bewegt sich der Strahl rückwärts, vom Betrachter
oder Film zum Objekt und von da aus zurück zur Lichtquelle. Eine genaue
Erklärung zum Wie und Warum dieses Algorithmus heben wir uns für
den nächsten Artikel auf.
Die Qualität von Povray ist exzellent und vergleichbar mit den
meisten kommerziellen Raytracern. Kommerziell entwickelte, auf Raytracing
basierende Produkte haben eingebaute Werkzeuge, mit deren Hilfe man auf
einfache Weise alle Arten von Objekten erzeugen kann.
Im Falle von Povray ist es möglich, Werkzeuge von verschiedenen
unabhängigen Firmen oder Formatfilter zu verwenden, und der Benutzer
hat eine große Auswahl an Werkzeugen (sog. Tools) zur Verfügung.
Das soll nicht heißen, daß man mit Povray allein keine guten
oder sogar phantastischen Bilder zustande bringt. Phantasie ist alles,
was nötig ist.
Ein weiterer wichtiger Punkt ist, daß der Quellcode frei verfügbar
ist, was es erlaubt, die eingesetzten Techniken zu untersuchen. Povrays
Copyright ist in Anhang A des Handbuches beschrieben, und wie bei Linux
ist es eine Freeware-Lizenz. Die genauen Einzelheiten können in der
Originallizenz nachgelesen werden.
Es gibt das Povray-Handbuch als Textversion (zum schnellen Durchsuchen),
als HTML- und als Postscript-Variante. Wer die Postscript-Datei ausdrucken
möchte, sollte sich auf etwa 600 Seiten gefaßt machen. Das ist
eine Menge wegen der vielen Möglichkeiten, die Povray bietet. Es sollte
aber niemanden abschrecken. In dem vorliegenden Artikel werden ein paar
Beispiele zum Ausprobieren vorgestellt, und im nächsten Artikel werden
grundlegende Konzepte erklärt.
Povray ist ein Werkzeug, dessen wunderbare Fähigkeiten uns helfen
können, Bilder von hohem Realismus zu erzeugen. Aber der künstlerische
Wert besteht nicht im Realismus oder in der Technik selbst. Alles, was
einen wirklich künstlerischen Wert hat, entsteht zuerst in unserer
Vorstellungskraft. Die Technik liefert nur die Möglichkeit, unsere
Phantasie zu visualisieren.
Oftmals spiele ich mit den Konzepten von Realität und Phantasie.
Die Infographie erlaubt es uns, dieses Spiel auf tausenderlei Arten zu
spielen und dabei beim Betrachter interessante Konflikte zu erzeugen. Eine
kleine Galerie von mit Povray erzeugten Bildern habe ich unter folgender
Adresse zusammengestellt:
http://slug.ctv.es/~acastro/infograf/catalog.htm
Hier ist ein Beispiel, eine Hybrid-Figur: Ein Flugzeug, ein Segelschiff
und eine Möve.
Seagull 1
In diesem ersten Bild sieht es eher wie eine Möve aus.
Seagull 2
Aus der zweiten Perspektive sieht es mehr wie ein Flugzeug aus, obwohl
es immer noch dasselbe Objekt ist.
Das Objekt hat die Silhouette einer Möve. Auf der Oberseite hat
es ein durchsichtiges Cockpit, und zwei Piloten sind gut sichtbar. Die
Färbung ist ungewohnt, doch durch das Raytracing (also die Strahlverfolgung)
erhält das Bild einen überraschenden Grad an Realismus.
Wenn man dieses Bild einem fünfjährigen Kind zeigt und es
danach fragt, was es sieht, wird es wahrscheinlich sagen, es sei ein Photo,
keine Zeichnung. Zeigt man dasselbe Bild einem Erwachsenen, so wird er
Schwierigkeiten haben, es zu klassifizieren. Er wird sagen, daß es
sich offensichtlich weder um eine Zeichnung noch um ein Photo handelt.
Möglicherweise wird er wissen, daß es sich um ein computergeneriertes
Bild handelt, aber wie kann ein Rechner eine so klare und wundervolle Szene
erzeugen?
Diese Art von Effekt versuche ich mit meinen Bildern zu erzeugen. Widersprüchliche
Bilder, in denen synthetische und künstliche Elemente harmonisch mit
realistischen kombiniert sind. Hierfür braucht man ohne Zweifel sowohl
Phantasie als auch das Wissen um die Technik. Auf der anderen Seite sollte
man die vollständige Kontrolle über die Technik haben, um besonders
realistische Bilder zu erhalten, aber dies kann man nicht notwendigerweise
Kunst nennen.
Ich habe viele schöne Stunden mit Povray verbracht, und ich bin
sicher, daß jeder, der sich ernsthaft damit beschäftigt, auf
ähnliche Weise fasziniert sein wird.
Einige der wichtigsten
Eigenschaften von Povray
-
Teilweises Generieren (Rendern) eines Bildes. Es ist möglich, eine
zuvor abgebrochene Generierung fortzusetzen.
-
Rendern in unterschiedlichen Auflösungen und Perfektionsgraden, um
Rechenzeit zu sparen.
-
Anzeigen eines Bildes, während es erzeugt wird (in SVGA und unter
X-Windows).
-
Schnelle, mosaikartige Vorschau.
-
Komplettes Mitschreiben der Operationen mit ,,Profiling"-Informationen,
die es erlauben, zu untersuchen, welche Schritte die meiste CPU-Zeit brauchen.
-
Syntaxcheck mit einer guten Fehlererkennung vor der Bilderzeugung.
-
Viele Bibliotheken mit Texturen, die die Erzeugung von Objekten mit beinahe
jeder Art von Oberflächenstruktur erlauben.
-
Oberflächeneffekte (Rauheit, Glanz, Reflexion, Transparenz, etc.).
-
Einfache geometrische Grundfiguren (Kugeln, Kegel,
Prismen, Flächen, Würfel etc.)
-
Auf komplexen mathematischen Gleichungen beruhende geometrische Objekte.
-
Figuren, die aus einem Netz von Dreiecken bestehen.
-
Kantenglättung, z.B. bei Figuren aus Dreiecksnetzen
Komplexe Objekte, die aus einfachen Objekten zusammengesetzt werden.
-
Begrenzen komplexer Objekte mittels einfacher Formen,
zur Optimierung der Effizienz des Raytracers.
(damit sind z.B. die sog. Boxen gemeint, in die
man komplexe Szenen einschliessen sollte...)
-
Färben der Figuren durch "bekleben" mit flachen Bildern.
-
Erzeugen von Figuren aus zweidimensionalen Bildern durch Erhöhung
der Pixel proportional zu ihrer Farbe (Sehr hilfreich zum Generieren von
Landschaften bzw. Höhenbildern).
-
Objektgenerierung durch Rotation.
-
3-D-Texte aus TIFF-Quellen.
-
Atmosphärische Effekte, z.B. Dunst.
-
Lichteffekte mit unterschiedlichen Arten von Lichtquellen, z.B. Punktlichtquellen
und Flächenlichtquellen.
-
Unterschiedliche Methoden für ,,Anti-Aliasing". Antialiasing verbessert
das Aussehen von Linien durch Entfernen des bekannten ,,Treppeneffekts",
der besonders bei niedrigen Auflösungen auftritt.
-
Eine komplette Sprache zur Szenenbeschreibung.
-
Erzeugung von Animationen durch unterschiedliche Methoden:
-
Externe Schleifen (option Clock=n.n).
-
Interne Schleife (verwendet interne Parameter direkt im Quellcode)
Definition von Konstanten in einem Include-File. Dadurch ist es möglich,
externe Animationen durch Utilities oder Skripte zu erzeugen, die diese
Includes bei jedem Animationsschritt erneuern.
Wie man an Povray herankommt
Povray kann man über ftp beziehen. Die offizielle Adresse lautet:
http://www.povray.org
ftp://ftp.povray.org
Es gibt außerdem ein gutes elektronisches Magazin zum Thema Povray,
und obwohl es so aussieht, als sei sein Erscheinen eingestellt worden,
gibt es ein paar gute Ausgaben, die erschienen sind, als Povray 3.0 freigegeben
wurde.
http://www.povray.org/pub/povray/ezine
Ein Magazin in deutscher Sprache findet man unter
http://www.stud.uni-goetingen.de/~jthewes/dpmur.htm
Es gibt eine Reihe von Spiegeln für Povray, aber keiner davon ist
offiziell.
Index: (15. Januar 1998) ftp.povray.org
Hier folgt eine kurze Auflistung des Inhaltes des offiziellen ftp-Servers:
pub
lrwxr-xr-x 1 povray vuser 15 Aug 24 11:12 HEADER -> povray/.message
drwxr-xr-x 5 povray vuser 512 Aug 24 13:13 povray
pub/povray
-rw-r--r-- 1 povray vuser 305 Jan 9 01:30 .message
lrwxr-xr-x 1 povray vuser 8 Aug 24 13:13 HEADER -> .message
dr-xr-xr-x 2 povray vuser 1536 Aug 24 13:13 Hall-Of-Fame
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 MIRRORS
dr-xr-xr-x 10 povray vuser 512 Aug 24 11:14 Official-3.0
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 README.MIRRORS
-r--r--r-- 1 povray vuser 3731 Aug 24 10:52 README.MIRRORS.HTML
dr-xr-xr-x 2 povray vuser 1024 Aug 24 13:13 Ray-Tracing-News
pub/povray/Hall-Of-Fame
-r--r--r-- 1 1017 1017 235235 May 14 1996 6x86.jpg
-r--r--r-- 1 1017 1017 393630 Sep 30 1994 6z4.jpg
-r--r--r-- 1 1017 1017 308 Sep 30 1994 6z4jpg.txt
-r--r--r-- 1 1017 1017 154256 Oct 13 1995 astplant.jpg
-r--r--r-- 1 1017 1017 2991 Oct 13 1995 astplant.txt
-r--r--r-- 1 1017 1017 110322 Sep 30 1994 ballz5.gif
-r--r--r-- 1 1017 1017 287164 Dec 8 1994 bell_jar.jpg
-r--r--r-- 1 1017 1017 57111 Oct 13 1995 bkntools.jpg
-r--r--r-- 1 1017 1017 610 Oct 13 1995 bkntools.txt
-r--r--r-- 1 1017 1017 331058 Sep 30 1994 brass.jpg
-r--r--r-- 1 1017 1017 254 Sep 30 1994 brass.txt
-r--r--r-- 1 1017 1017 284250 Sep 30 1994 bug1.gif
-r--r--r-- 1 1017 1017 279273 Sep 30 1994 camera.jpg
-r--r--r-- 1 1017 1017 367490 Oct 13 1995 crane.jpg
-r--r--r-- 1 1017 1017 2650 Oct 13 1995 crane.txt
-r--r--r-- 1 1017 1017 101473 Sep 30 1994 dragons.jpg
-r--r--r-- 1 1017 1017 295129 Sep 30 1994 frosty.gif
-r--r--r-- 1 1017 1017 777531 Sep 30 1994 frosty.tga.zip
-r--r--r-- 1 1017 1017 88350 Sep 30 1994 geodome.jpg
-r--r--r-- 1 1017 1017 2252 Sep 30 1994 geodome.txt
-r--r--r-- 1 1017 1017 11801 Sep 30 1994 geosmall.gif
-r--r--r-- 1 1017 1017 356889 Oct 13 1995 gofood1.jpg
-r--r--r-- 1 1017 1017 483 Oct 13 1995 gofood1.txt
-r--r--r-- 1 1017 1017 375781 Oct 13 1995 gogadget.jpg
-r--r--r-- 1 1017 1017 825 Oct 13 1995 gogadget.txt
-r--r--r-- 1 1017 1017 72337 Oct 13 1995 info_hwy.jpg
-r--r--r-- 1 1017 1017 1796 Oct 13 1995 info_hwy.txt
-r--r--r-- 1 1017 1017 109462 Oct 13 1995 jmwarmup.jpg
-r--r--r-- 1 1017 1017 3346 Oct 13 1995 jmwarmup.txt
-r--r--r-- 1 1017 1017 628 Sep 30 1994 julia.txt
-r--r--r-- 1 1017 1017 50762 Sep 30 1994 kettle.jpg
-r--r--r-- 1 1017 1017 295555 Sep 30 1994 kkteaset.jpg
-r--r--r-- 1 1017 1017 96 Sep 30 1994 kkteaset.txt
-r--r--r-- 1 1017 1017 151503 Sep 30 1994 lionfish.gif
-r--r--r-- 1 1017 1017 112 Sep 30 1994 mindmaz1.txt
-r--r--r-- 1 1017 1017 341101 Sep 30 1994 museum.jpg
-r--r--r-- 1 1017 1017 564 Sep 30 1994 museum.txt
-r--r--r-- 1 1017 1017 364856 Aug 19 1995 pcktwtch.gif
-r--r--r-- 1 1017 1017 580 Aug 19 1995 pcktwtch.txt
-r--r--r-- 1 1017 1017 590679 Jan 29 1996 pcktwtch.zip
-r--r--r-- 1 1017 1017 417 Sep 30 1994 pclock.txt
-r--r--r-- 1 1017 1017 213426 Sep 30 1994 plntscap.gif
-r--r--r-- 1 1017 1017 2558 Sep 30 1994 plntscap.txt
-r--r--r-- 1 1017 1017 125648 Oct 13 1995 springeq.jpg
-r--r--r-- 1 1017 1017 1129 Oct 13 1995 springeq.txt
-r--r--r-- 1 1017 1017 239594 Sep 30 1994 studying.jpg
-r--r--r-- 1 1017 1017 244179 Oct 13 1995 subrace.jpg
-r--r--r-- 1 1017 1017 2681 Oct 13 1995 subrace.txt
-r--r--r-- 1 1017 1017 191332 Sep 30 1994 sundae.gif
-r--r--r-- 1 1017 1017 162140 Sep 30 1994 woild2.gif
pub/povray/Official-3.0
-r--r--r-- 1 povray vuser 80 Jul 20 01:47 .message
drwxr-xr-x 2 povray vuser 512 Dec 16 03:53 Amiga
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Docs
lr-xr-xr-x 1 povray vuser 11 Aug 24 11:14 HEADER -> ../.message
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Linux
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 MS-Dos
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:36 Macintosh
-r--r--r-- 1 povray vuser 83 Jul 20 01:48 README
-r--r--r-- 1 povray vuser 222 Feb 6 1997 README.HTML-DOCS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 SunOS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:32 Unix
dr-xr-xr-x 3 povray vuser 512 Aug 24 10:32 Windows
-r--r--r-- 1 povray vuser 15055 Jul 19 1996 gamma.gif
-r--r--r-- 1 povray vuser 1776 Jul 19 1996 gamma.gif.txt
-r--r--r-- 1 povray vuser 3735 Feb 6 1997 news.3.01.txt
-r--r--r-- 1 povray vuser 18452 Feb 5 1997 povlegal.doc
-r--r--r-- 1 povray vuser 24060 Feb 1 1997 povwhere.get
-r--r--r-- 1 povray vuser 110 Aug 24 11:01 www.html
pub/povray/Official-3.0/Docs
-r--r--r-- 1 1017 1017 413 Feb 7 1997 README
-r--r--r-- 1 1017 1017 286517 Feb 7 1997 povdoc.zip
-r--r--r-- 1 1017 1017 764628 Feb 7 1997 povdocps.zip
-r--r--r-- 1 1017 1017 1601733 Feb 7 1997 povhtml.zip
-r--r--r-- 1 1017 1017 18452 Feb 7 1997 povlegal.doc
-r--r--r-- 1 1017 1017 24060 Feb 2 1997 povwhere.get
pub/povray/Official-3.0/Linux * * * * *
-r--r--r-- 1 povray vuser 786 Jul 20 01:41 00_index.txt
-r--r--r-- 1 povray vuser 442 Jul 20 01:42 README
-r--r--r-- 1 povray vuser 1506794 Feb 2 1997 povdoc.html.tgz
-r--r--r-- 1 povray vuser 908752 Aug 1 1996 povdoc.ps.gz
-r--r--r-- 1 povray vuser 1678592 Jul 18 13:02 povlinux.tgz
|
Linux-Benutzer werden an zwei Verzeichnissen besonders interessiert sein:
'pub/povray/Official-3.0/Linux' und 'pub/povray/Hall-Of-Fame'. Im zweiten
werden wir finden, was wir im ansonsten sehr guten Povray-Handbuch nicht
finden: Beispiele.
Das Povray-Handbuch ist wirklich gut, aber ein Bild sagt mehr als tausend
Worte. Erstens ist das Handbuch nicht in idealer Weise illustriert, und
zweitens können wir im zweiten Verzeichnis verschiedene Bilder finden,
die das Handbuch auf ideale Weise ergänzen. Ich sage nicht, daß
es im Handbuch nicht genug Beispiele gibt, im Gegenteil, es enthält
eine Menge. Jedes Beispiel erklärt ein Konzept und ist gut geeignet
zum vermitteln von technischem Wissen. Einige Beispiele aus dem Handbuch
sind ausgesprochen schön. Eine Auswahl der besten Bilder, die jemals
geschaffen wurden, findet man in der 'Hall-of-Fame': Eine wirkliche Galerie
der Infographie! Zu jedem Bild gibt es einen Text, der die Werkzeuge und
Techniken erklärt, die zum erreichen dieser unglaublichen Ergebnisse
notwendig waren.
Wir müssen leider darauf hinweisen, daß viele der Werkzeuge,
auf die im Handbuch hingewiesen wird (Modellierer, Filter etc.), für
Linux noch nicht verfügbar sind.
Wir empfehlen die beiden Verzeichnisse ftp.povray.org/pub/povray/Official-3.0/Linux
und ftp.povray.org/pub/povray/Hall-Of-Fame
nicht nur deshalb zum Download, damit Sie die Bilder genießen können,
sondern auch als wichtigen Ausgangspunkt fürs Design.
Wir werden erklären, wie eine typische Installation verläuft
(dies sollte mit jeder Linux-Version funktionieren, ist aber nur mit Debian
komplett getestet worden).
Installation
Wie bei jeder Installation müssen wir uns zunächst als Superuser
(root) anmelden.
Wir gehen davon aus, daß die Distribution im Verzeichnis "/incoming/pub/povray/Official-3.0/Linux"
liegt. Nun
sind folgende Kommandos auszuführen:
Das Povray-Handbuch ist wirklich gut, aber ein Bild sagt mehr als tausend
Worte. Erstens ist das Handbuch nicht in idealer Weise illustriert, und
zweitens können wir im zweiten Verzeichnis verschiedene Bilder finden,
die das Handbuch auf ideale Weise ergänzen. Ich sage nicht, daß
es im Handbuch nicht genug Beispiele gibt, im Gegenteil, es enthält
eine Menge. Jedes Beispiel erklärt ein Konzept und ist gut geeignet
zum vermitteln von technischem Wissen. Einige Beispiele aus dem Handbuch
sind ausgesprochen schön. Eine Auswahl der besten Bilder, die jemals
geschaffen wurden, findet man in der 'Hall-of-Fame': Eine wirkliche Galerie
der Infographie! Zu jedem Bild gibt es einen Text, der die Werkzeuge und
Techniken erklärt, die zum erreichen dieser unglaublichen Ergebnisse
notwendig waren.
Wir müssen leider darauf hinweisen, daß viele der Werkzeuge,
auf die im Handbuch hingewiesen wird (Modellierer, Filter etc.), für
Linux noch nicht verfügbar sind.
Wir empfehlen die beiden Verzeichnisse ftp.povray.org/pub/povray/Official-3.0/Linux
und ftp.povray.org/pub/povray/Hall-Of-Fame
nicht nur deshalb zum Download, damit Sie die Bilder genießen können,
sondern auch als wichtigen Ausgangspunkt für Design.
Wir werden erklären, wie eine typische Installation verläuft
(dies sollte mit jeder Linux-Version funktionieren, ist aber nur mit Debian
komplett getestet worden).
Installation
Wie bei jeder Installation müssen wir uns zunächst als Superuser
(root) anmelden.
Wir gehen davon aus, daß die Distribution im Verzeichnis "/incoming/pub/povray/Official-3.0/Linux"
liegt. Nun müssen folgende Kommandos ausgeführt werden:
# mkdir /usr/local/sbin
# mkdir /usr/local/apli
# mkdir /usr/local/apli/povray
# cp "/incoming/pub/povray/Official-3.0/Linux"
/usr/local/povray
# cd /usr/local/povray
# tar -xzf povlinux.tgz
# tar -xzf povdoc.html.tgz
# cd /usr/local/sbin
# ln -s /usr/local/apli/povray/povray3/x-povray
x-povray
# ln -s /usr/local/apli/povray/povray3/s-povray
s-povray
|
Diese Kommandosequenz installiert alles; nichts muß compiliert werden.
Man muß nur darauf achten, daß die Ausführungsrechte für
jeden Anwender in jedem Unterverzeichnis von /usr/local/apli/povray/povray3
und für die Binärdateien x-povray und s-povray gesetzt sind.
In unserem Fall müssen wir diese Berechtigungen mit ' chmod 755 (Verzeichnis
oder Datei)' ändern.
Setup
Der Setup-Prozeß von Povray ist notwendig, um die ,,include"-Datei-Bibliothek
zugänglich zu machen, die Grafikkarte zu konfigurieren, das Ein- und
das Ausgabeformat festzulegen und für viele andere Dinge.
Anstatt Fragen zu beantworten, die sehr ausführlich im Handbuch
erläutert werden (Quick Start), werden wir eine generische Konfiguration
besprechen, die allen Linux-Benutzern erlaubt, Povray auf leichte, komfortable
und direkte Weise zu benutzen.
Povray kann zwar im SVGA-Modus ausgeben, aber dies ist sehr von der
Graphikkarte abhängig. Wir empfehlen die Installation im X Window
System und das Programm 'xv' als Bildbetrachter.
Die Linux-Konfiguration in den neueren Versionen von Povray kann vereinfacht
werden. Es ist möglich, Umgebungsvariablen zu verwenden, aber es ist
praktischer, eine Konfigurationsdatei (*.ini) zu erzeugen, die alles wichtige
enthält.
Es gibt verschiedene .ini-Dateien als Beispiel. Diese enthalten unterschiedliche
Konfigurationen. Es ist möglich, unsere Standard-Konfiguration in
eine Datei zu schreiben, oder wir können Variablen benutzen, um die
entsprechenden Dateien (wie die include-Bibliothek) zu finden. Es kann
außerdem eine gute Idee sein, eine Anzahl von Optionen als Argumente
zu übergeben, aber wir übergeben nahezu alles in einer Konfigurationsdatei
(*.ini), die wir gleichzeitig als Parameter an die Kommandozeile übergeben.
Wem diese Methode nicht gefällt, der kann das Handbuch durchsehen
und wird feststellen, daß es verschiedene Optionen gibt, um dasselbe
Ziel zu erreichen. Es ist jedoch nicht die Aufgabe eines einführenden
Artikels, alle Optionen detailliert und in allen Einzelheiten darzulegen.
Außerdem gibt es ein Shell-Skript, das
für alle Beispiele die entsprechenden Bilder
( 'allscene.sh') erzeugt.
Anstatt alle dieser Szenen mit niedriger Auflösung zu generieren,
möchten Sie vielleicht eine auswählen und mit der bestmoglichen
Auflösung generieren.
In diesem Fall wechseln Sie bitte in das Beispielverzeichnis und führen
Sie Povray mit folgendem 'ini'-File aus:
-------------------------8<------------(ini.ini)----------------
Width=640
Height=480
Quality=8
Library_Path=/usr/local/apli/povray/povray3/include
Output_to_File=on
Output_File_Type=t
Output_File_Name=out.tga
verbose=on
-------------------------8<--------------------------------------
Die ersten beiden Zeilen bestimmen die Auflösung des fertigen Bildes.
Der Befehl zum erzeugen des Bildes lautet:
$ s-povray ini.ini +i source.pov
Die Datei, aus der wir das Bild erzeugen wollen, heißt 'source.pov',
und der Name der resultierenden Datei lautet 'out.tga'. Diese können
wir z.B. mit 'xv out.tga' anzeigen.
POV: Ein Werkzeug für
die Arbeit mit Povray
'pov' ist ein Shell-Skript, das die Arbeit mit Povray vereinfacht. Zunächst
betrachten wir den Quelltext:
------------------------8<-----------------------------------
#!/bin/bash
#####################################################################
# Autor: Antonio Castro Snurmacher (1.998)
#
# pov (ver 1.0)
#
# Esta versión esta dedicada a su inclusión en la
# revista LinuxFocus (freeware)
#
# Este programa puede ser utilizado, distribuido, y modificado
# libremente pero siempre se deberá respetar la propiedad
# intelectual de su autor. Esta cabecera debe ser conservada
# tal cual en todas las modificaciones.
#
# En caso de traducción deberá conservarse el texto original de
# esta cabecera y añadirse la traducción a continuación de ella.
#
# El autor renuncia a todo tipo de beneficio económico y no se hace
# responsable de los posibles perjuicios derivados del uso del mismo.
#
# E-mail (acastro@ctv.es)
#
#####################################################################
# Author: Antonio Castro Snurmacher (1.998)
#
# pov (ver 1.0)
#
# This version has been written to be included in
# the LinuxFocus magazine (freeware)
#
# This program can be used, distributed, and modified
# freely but always has to respect the intellectual
# property of the author. This header should be kept
# untouched in every modification.
#
# In case of translation the text of this header should be kept
# and the translation will be added after it.
#
# The author renounces to any kind of economic benefit
# and he is not responsible for any damage derived from
# the use of this script.
#
# E-mail (acastro@ctv.es)
#
#####################################################################
usage(){
echo "Usage: pov (project) (size=0..6) (quality=1..11)"
echo
echo "0) 40x30 (STD/20) No backup"
echo "1) 80x60 (STD/10) No backup"
echo "2) 100x75 (STD/8) No backup"
echo "3) 200x150 (STD/4)"
echo "4) 266x200 (STD/3)"
echo "5) 320x200 *"
echo "6) 400x300 (STD/2)"
echo "7) 640x480 *"
echo "8) 800x600 * (STD)"
echo "9) 1024x768 *"
echo
echo "The projects should be located in the directory pointed by"
echo "${HOMEPOV} and will use the same name for it and for"
echo "the main source file *.pov"
echo "(STD) is the standard resolution chosen."
echo
exit 1
}
newversion(){
mv ${PREFIX}.pov.8.gz ${PREFIX}.pov.9.gz 2> /dev/null
mv ${PREFIX}.pov.7.gz ${PREFIX}.pov.8.gz 2> /dev/null
mv ${PREFIX}.pov.6.gz ${PREFIX}.pov.7.gz 2> /dev/null
mv ${PREFIX}.pov.5.gz ${PREFIX}.pov.6.gz 2> /dev/null
mv ${PREFIX}.pov.4.gz ${PREFIX}.pov.5.gz 2> /dev/null
mv ${PREFIX}.pov.3 ${PREFIX}.pov.4 2> /dev/null
mv ${PREFIX}.pov.2 ${PREFIX}.pov.3 2> /dev/null
mv ${PREFIX}.pov.1 ${PREFIX}.pov.2 2> /dev/null
cp ${PREFIX}.pov ${PREFIX}.pov.1
gzip ${PREFIX}.pov.4 2> /dev/null
}
#################################################
size(){
export SAVE="yes"
case $1 in
0) Width=40 ; Height=30; SAVE="no" ;;
1) Width=80 ; Height=60 SAVE="no" ;;
2) Width=100; Height=75 SAVE="no" ;;
3) Width=200; Height=150;;
4) Width=266; Height=200;;
5) Width=320; Height=200;;
6) Width=400 ;Height=300;;
7) Width=640 ;Height=480;;
8) Width=800 ;Height=600;;
9) Width=1024;Height=768;;
*) usage
esac
}
quality(){
case $1 in
1) ;;
2) ;;
3) ;;
4) ;;
5) ;;
6) ;;
7) ;;
8) ;;
9) ;;
10) ;;
11) ;;
*) usage
esac
export Quality=$1
}
####################### main ##############################
export HOMEPOV=${HOME}/dat/pov
export PROYECT=$1
export PREFIX=${HOMEPOV}/${PROYECT}/${PROYECT}
if [ $# != 3 ]
then usage
fi
export POVRAY=/usr/local/apli/povray/povray3
size $2
quality $3
if [ $SAVE == "yes" ]
then newversion
fi
cat <<-FIN > ${PREFIX}.ini
Width=$Width
Height=$Height
Quality=$Quality
Library_Path=${POVRAY}/include
Input_File_Name=${PREFIX}.pov
Output_to_File=on
Output_File_Type=t
Output_File_Name=${PREFIX}.tga
verbose=on
Post_Scene_Command=xv ${PREFIX}.tga
FIN
# Output_File_Type=t
## Others hight performace options ##
# Antialias_Depth=3
# Antialias=On
# Antialias_Threshold=0.1
# Jitter_Amount=0.5
# Jitter=On
# Niedere Priorität, damit andere Prozesse auch Rechenzeit abbekommen.
nice -20 x-povray ${PREFIX}.ini
if [ $SAVE != "yes" ]
then echo "Warnung! Es gibt keine Sicherheitskopie dieser Version!"
fi
------------------------8<-----------------------------------
Wenn man ein Bild entwirft,
muß man seine Idee durch das Erzeugen von "Zwischenbildern" immer
wieder testen, und man nähert sich seinem Ideal Schritt für Schritt.
Um diesen Vorgang zu vereinfachen, erstellen wir ein Shell-Skript, das
eine *.ini - Datei erzeugt, Povray ausführt und anschließend
das Ergebnis darstellt. Wir gehen davon aus, daß wir im Verzeichnis
$HOME/dat/pov/<Projektname> arbeiten und der Name der Hauptdatei <Projektname.pov>
lautet.
Dieses Skript erzeugt ein *.ini - File, das für die meisten Situationen
ausreichend sein sollte. Es orientiert sich an einer bestimmten Arbeitsweise,
aber wem dieses nicht zusagt, der kann es recht einfach ändern.
Das Skript sichert die letzte Version der Quelldatei, da man nach einem
Versuch häufig zur vorherigen Version zurückkehren will. Der
kreative Vorgang gleicht dem Malen mit Farbe und Pinsel, nach jedem Schritt
wird neu entschieden, wie es weiter geht.
Wenn das Skript mit der niedrigsten Auflösung ausgeführt wird,
erzeugt es weder eine Sicherheitskopie noch eine neue Versionsnummer, da
,,LowRes"-Tests uninteressant sind. Mit dieser Art von Test kann man
gerade mal
einen Eindruck von der relativen Position der einzelnen
Objekte zueinander bekommen. Dies ist eine persönliche Vorgehensweise,
die sehr einfach ist. Für jemanden, der mit dem Programm nicht vertraut
ist, ist es eine gute Ausgangsmethode. Später wird man wahrscheinlich
das Skript an seine persönliche Arbeitsweise anpassen.
Einige der möglichen Auflösungen entsprechen den Standardauflösungen
der Grafikkarte. Andere sind Bruchteile der Auflösung 800*600. Um
ein kurzes Help-Menü zu bekommen, gibt man ,,pov" ohne Argument ein.
Wer eine entsprechende Verzeichnisstruktur in seinem HOME-Verzeichnis
anlegt, wird vom ersten Tag an sehen, wie einfach das Arbeiten ist. Wir
verwenden dieses Skript für unsere Übungen. Es vereinfacht das
Arbeiten, auch wenn man es nicht zwingend braucht.
Wir beginnen mit einem einfachen Beispiel um zu sehen, ob alles korrekt
funktioniert:
------------------------8<-----------------------------------
#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
// Author: Antonio Castro
// Die Kamera sieht auf den Kontaktpunkt der beiden Kugeln
camera {
location <0, 15, 35>
look_at <0, 10, 0>
}
// Quelle des weißen Lichts
object {
light_source {
<20, 100, 50>
color White
}
}
// Himmel mit weißen Wolken
object {
sphere { <0, 0, 0> 200000} // Great vault of heaven
texture {Blue_Sky scale <50000, 6000, 50000>} // We strecht the clouds
}
// Goldener Ball
sphere { <-10, 10, 0> 10
texture { Gold_Metal }
}
// Spiegelnder Ball
sphere { <10, 10, 0> 10
texture { Mirror }
}
// Glassball
sphere { <0, 5, 10> 5
texture { T_Glass1 }
}
// Boden
// Hergestellt mit einer großen Kugel, die das Zentrum <0,0,0> berührt
// aber es konnte nicht mit einer Ebene implementiert werden.
sphere {<0, -1000000, 0> 1000000
pigment {checker color Red color Yellow scale 2 } // Schachbrettmuster
}
------------------------8<-----------------------------------
Speichern Sie dieses Skript unter $HOME/dat/pov/sample1/sample1.pov
Erzeugen Sie zunächst die entsprechende Verzeichnisstruktur, falls
dies noch nicht geschehen ist. Führen Sie dann das ,,pov"-Skript aus
diesem Artikel in einem Xterm-Fenster unter Ihrer Benutzerkennung (login)
aus.
$ pov sample1 4 9
Zum Anzeigen kann ,,xv" verwendet werden. Wer seine eigenen Szenen erstellen
möchte, sollte sich die Textversion des Handbuches in einem zweiten
Fenster anzeigen lassen, z.B. mit ,,vi" im read-only-Modus (oder mit ,,less";
Anm. des deutschen Übersetzers), um schnell die Schlüsselworte
der Sprache, die Syntax und einige kurze Beispiele zur Verwendung einsehen
zu können.
../../common/March1998/sample1.gif
|