Mit diesem Artikel beginnt eine Serie über den Raytracer Povray.
Dieser Artikels soll den Beginnern eine einführende Anleitung sein.
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 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 (für schnelles
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 vorgestellt.
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
segelndes Schiff 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 Seemöve. Auf der
Oberseite hat es ein durchsichtiges Cockpit, und zwei Piloten sind
gut sichtbar. Die Färbung ist ungewohnt, doch durch 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 man kann dies 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 eines Bildes. Es ist möglich, eine
zuvor abgebrochene Generierung fortzusetzen.
- Generierung 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 Figuren (Kugeln, 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.
- 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.
- Lichtefekte mit unterschiedlichen Arten von Lichtquellen, z.B.
Punktlichtquellen und Flächenlichtquellen.
- Unterschiedliche Methoden für ,,Anti-Aliasing".
Antialiasing verbessert das Aussehen von Linien durch das 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 ist
die folgende:
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, 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-Enero-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
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ü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, das die
Ausführungsrechte für jeden in jedem Verzeichnis in
/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 mit
X-Windows 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 Bilder aus dem
zugehörigen Beispiel ( '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 erschafft, muß man seine Idee durch das
Erzeugen von "Zwischenbildern" immer wieder testen, und man
nähert sich dem Endergebnis 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 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<-----------------------------------
Copy it in $HOME/dat/pov/sample1/sample1.pov
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 seien 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", um schnell die
Schlüsselworte der Sprache, die Syntax und einige kurze
Beispiele zur Verwendung einsehen zu können.
sample1.gif
|