Home Index Search Links About Us
[LinuxFocus Bild]
[Navegation Steuerleiste]
  Neuigkeiten   Archiv   Firmen   Tips  

Einführung in Povray

von Antonio Castro

Aus dem Englischen ins Deutsche übersetzt von Kai Debus


Einleitung

Einige der wichtigsten Eigenschaften von Povrray

Holen von Povray

Installation

Setup

POV

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 

Seagull 1

In diesem ersten Bild sieht es eher wie eine Möve aus. 
 

Seagull 2 

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: 
    1. Externe Schleifen (option Clock=n.n). 
    2. Interne Schleife (verwendet interne Parameter direkt im Quellcode) 
    3. 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. 
 
 
FTP 
sunsite.wits.ac.za:/pub/mirrors/ftp.povray.org 
gd.tuwien.ac.at:/graphics/raytracing/povray 
ftp.cdrom.com:/pub/povray 
wuarchive.wustl.edu:/graphics/graphics/mirrors/ftp.povray.org 
ftp.shu.ac.uk:/pub/computing/packages/raytrace/ftp.povray.org 
sunsite.doc.ic.ac.uk:/Mirrors/ftp.povray.org 
www.hensa.ac.uk:/ftp/mirrors/povray 
ftp.etsimo.uniovi.es:/pub/raytrace 
ftp.fh-rosenheim.de:/pub/mirror/ftp.povray.org 
ftp.tu-clausthal.de:/pub/mirror/povray 
kermit.stud.fh-heilbronn.de:/mirrors/povray 
ftp.uni-erlangen.de:/pub/other/povray 
stef.u-picardie.fr:/pub2/ftp.povray.org 
ftp.ncu.edu.tw:/Packages/ray-tracing 
ftp.vu.union.edu:/pub/povray 
sunsite.icm.edu.pl:/pub/povray/ 
uiarchive.cso.uiuc.edu:/pub/graphics/povray/ 
ftp.flashnet.it:/pub/ftp.povray.org/ 
ftp.univ-lille1.fr:/pub/povray 
ring.asahi-net.or.jp/pub/misc/povray/ 

HTTP 
www.etsimo.uniovi.es/ftp/pub/raytrace 
stef.u-picardie.fr/ftp/pub2/ftp.povray.org 
www.vu.union.edu/~ftp/pub/povray 
sunsite.icm.edu.pl/pub/povray 
ftp.ncu.edu.tw/Packages/ray-tracing/ 
serviceftp.flashnet.it/mirrors.htm 
kermit.stud.fh-heilbronn.de/povray 
ftp.uni-erlangen.de/pub/other/povray/ 
http://gd.tuwien.ac.at/graphics/raytracing/povray/ 
ftp.tu-clausthal.de/pub/mirror/povray

 

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 ([email protected])
# 
#####################################################################
#  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 ([email protected])
# 
#####################################################################
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. 

sample1 

../../common/March1998/sample1.gif 
 
 

Ins Englische übersetzt von David Escorial 

 

© 1998 Antonio Castro 
Diese Webseite wird unterhalten von Miguel A. Sepulveda und Franz-Josef Lücke.