VOICE Homepage: http://de.os2voice.org | September 2001 [Inhaltsverzeichnis] [Vorherige Seite] [Nächste Seite] [Artikelverzeichnis] editor@os2voice.org

## POVRay

Von Thorsten Thielen © September 2001

Die Erzeugung von Bildern am Computer hat sich in den letzten Jahren in grossem Masse weiterentwickelt: Kaum ein Film der noch ohne computergenerierte Effekte auskommt, kaum ein Werbespot oder eine Nachrichtensendung in der keine computergenerierten Animationen benutzt werden, ganze Filme werden schon am Computer produziert. Der Realismus und die Natürlichkeit von rechnergenerierten Bilder ist mittlerweile immens, oftmals sind diese Bilder von der Natur praktisch nicht mehr zu unterscheiden. [Wie weit dies mittlerweile gediehen ist, können Sie an dem momentan in den Kinos laufenden Film "Final Fantasy" sehen. - Anm. d. Red.]

Ein Verfahren zur Erzeugung solcher realistischen Bilder ist das sog. Raytracing-Verfahren. Von einem Blickpunkt (Kamera) werden simulierte Lichtstrahlen in eine modellierte Szene ausgesendet. Diese Lichtstrahlen treffen auf die in der Szene plazierten Objekte und der Computer berechnet daraus dann die Farbe des zugehörigen Bildpunktes. Effekte wie Spiegelung, Transparenz, Lichtbrechung, etc. werden ebenfalls simuliert und verleihen den Bildern ein (wenn man genügend Arbeit reinsteckt :-) photorealistisches Aussehen.

Auch unter OS/2 stehen Raytracing-Programme zur Verfügung, wenn auch die Auswahl nie sehr gross war und nach dem Einstellen der Weiterentwicklung von Neon Grafix 3D bleibt das hier beschriebene Povray die einzige Alternative. Allerdings eine sehr gute Alternative, die, zumindest für meine Ansprüche, kaum Wünsche offen lässt.

### Funktionsumfang

Bei der Modellierung der Objekte bzw. der Szenerie bietet Povray komfortable Möglichkeiten: Neben den üblichen, relativ einfachen Objekten wie Kugel, Quader, Zylinder, Kegel und Torus bietet Povray noch eine ganze Reihe anderer Objektarten an:

- Rotationskörper die durch Drehung einer Kontur um eine Achse entstehen und sich z.B. sehr gut zur Modellierung von Vasen u.Ä. eigenen
- Höhenfelder, die vorzüglich dazu geeignet sind, Landschaften zu erzeugen
- Blobs, die durch Kombination von mehreren "Kraftfeldern" entstehen
- Meshes (Netze) mit denen man unregelmässige, komplexe Modelle repräsentieren kann (wobei hier allerdings ein spezielles Modeller-Programm gute Dienste leistet, da es sehr aufwendig wäre, ein Mesh für ein komplexes Objekt von Hand zu erstellen)
- Text-Objekte zur Darstellung von 3D-Text mit beliebigen TrueType-Fonts
- ... und noch einige weitere (Bicubic Patch, Polygone, Prisma, Superquadric Ellipsoid Object, Fraktale ...)

Steht mit dieser Auswahl von Grundobjekten bereits ein ziemlich reichhaltiges Angebot an Formen zur Verfügung, so kommen die eigentlichen Stärken von Povray erst durch die CSG, Constructive Solid Geometry ins Spiel: Durch Verschneidung von zwei oder mehreren Grundobjekten ist es ein Leichtes, beliebige Kombinationen von Objekten zu erzeugen. Um z.B. ein einfaches Trinkglass zu erzeugen, nimmt man einen normalen Zylinder und "subtrahiert" von diesem einen etwas kleineren Zylinder um den Hohlraum im Inneren zu erzeugen. Povray bietet vier Arten von Verschneidung:

- Union (Vereinigung) - Die Objekte zu einem einzigen Objekt verschmolzen.
- Intersection (Schnittmenge) - Es bleiben nur die Teile, übrig, wo sich die Objekte überschneiden.
- Difference (Differenz) - Aus einem Objekt werden die Teile, die den anderen Objekten entsprechen, "herausgeschnitten".
- Merge (Verschmelzung) - Sehr ähnlich Union, aber die Grenzen der einzelnen Objekte werden eliminiert, sofern sie sich innerhalb eines der anderen Objekte befinden.

Diese Features erlauben es, praktisch beliebig komplexe Modelle für Povray zu erstellen.

Ein nächster Schritt zu einem schönen, realistischen Bild sind die Texturen. Gegenstände definieren sich schliesslich nicht nur durch ihre Form, sondern insbesondere auch durch Dinge wie Farbe und Oberflächenstruktur. Oftmals tragen diese Bereiche sogar mehr zu einem guten Bild bei, als die Modellierung an sich.

Povray bietet deshalb auch in diesem Bereich eine überwältigende Anzahl von Möglichkeiten. Grob gesagt kann man bei den Texturen drei Bereiche unterscheiden:

- Pigment - Die "Farbe" eines Objekts. Von der einfachen, einfarbigen Gestaltung über Paletten von mehrern, kombinierten Farben bis hin zu komplexen Mustern bietet Povray hier eine reiche Auswahl. Pigmente können durch Muster (Schachbrett, Ziegelmuster, etc.), Verwirbelung und noch eine ganze Reihe weiterer Parameter verändert werden. Es ist möglich mehrere (teilweise transparente) Texturen zu überlagern, um dadurch noch interessantere Effekte zu erzielen. Und falls man es trotz all dieser Möglichkeiten immer noch nicht schafft, ein gewünschtes Aussehen zu erreichen, bleibt immer noch als letzter Ausweg die Benutzung von Pigmentmaps, also einer vorgefertigten Grafik.
- Normals - "Rauheit" der Oberfläche. Povray kann angewiesen werden, die Oberfläche eines Objektes "aufzurauhen". Dies geschieht, indem die simulierte Lichtreflexion auf der Oberfläche in einer bestimmten Weise verändert wird. Damit ist es einfach möglich, rauhe und glatte Oberflächen mit "Einprägungen", Rillen, Dellen und vielen anderen Effekten zu gestalten. Natürlich können auch hier, wie bei Pigment, verschiedene Versionen auf verschiedene Weise kombiniert werden.
- Finish - "Reflexion" etc. eines Objekts. Manche Objekte glänzen, andere erscheinen matt. Transparente Objekte reflektieren oder filtern das auftreffende Licht in bestimmten Formen. Durch bestimmte physikalische Effekte schillern manche Oberflächen in Regenbogenfaben. All dieses und noch einiges mehr bestimmt das Finish eines Objektes. Und wie überall lässt auch hier Povray eine Menge von Modifikationen und Anpassungen zu.

Die Optionen, die Povray gerade auch im Bereich der Texturen bietet, sind viel zu zahlreich, um Sie in so einer Vorstellung auch nur annährend beschreiben zu können, weswegen ich hier nur auf das Povray beiligende Handbuch verweisen möchte.

Ein dritter Bereich, der beim Raytracing eine grosse Rolle spielt, ist die Beleuchtung. Und, wie könnte es anders sein, bietet auch hier Povray alles was das Herz begehrt: Neben den üblichen punktförmigen Lichtquellen stehen Spotlights und zylindrische Lichtquellen (deren Lichtstrahlen in Form eines Zylinders verlaufen und sich z.B. zur Darstellung von "Laserstrahlen" o.Ä. sehr gut eignen) zur Verfügung. Sog. "Area lights" erlauben realistischere, weichere Schattenwürfe (im Austausch gegen längere Berechnungszeiten) bei den angestrahlten Objekten. Den Lichtquellen können beliebige Farben und Helligkeiten zugewiesen werden und auch der Abfall der Lichtstärke mit der Entfernung kann nach Belieben angepasst werden.

Eine weitere Sache, die das Aussehen der erzeugten Bilder beeinflusst, ist schliesslich noch die Kamera. Verschiedene Projektionsarten erzeugen unterschiedliche Effekte (Fischauge, Parallelprojektion, etc.) und das Camera-Identifier-Feature macht es einfach, verschiedene Kameras für eine Szene zu definieren und diese schnell auszutauschen, um die Szene z.B. aus verschiedenen Blickwinkeln zu begutachten.

Povray hat noch einge ganze Reihe weiterer Features im Angebot wie z.B. die Atmosphärischen Effekte wie Nebel, Regenbögen und natürlich den Skyspheres zur Erstellung von realistisch aussehenden Himmelsansichten. Das "Media"-Konzept ermöglicht das Rendern von z.B. Rauch oder Feuer, wobei ich allerdings hier selber noch nicht sehr weit vorgedrungen bin und nur sagen kann, dass dieser Bereich zwar recht komplex ist und wohl etwas Erfahrung vorraussetzt, aber dafür auch überwältigende Ergebnisse hervorbringen kann.

Bisher sind wir immer von statischen Bildern ausgegangen, aber natürlich ermöglicht Povray auch das Erstellen von Animationen (ok, um genau zu sein, der einzelnen Frames, aus denen sich die Animation zusammensetzt; man benötigt dann noch ein Programm welches diese Frames zu einer AVI oder MPEG-Datei zusammensetzt). Bewegung der Objekte, Veränderungen der Texture, der Beleuchtung etc. stehen alle zur Verfügung. Hier kommt allerdings ein Punkt ins Spiel, der, zumindest für Einige, einen kleinen Schatten auf Povray werfen mag, während er allerdings für Andere (z.B. mich :-) eher einen Vorteil darstellt:

### Szenenerstellung

Die Erstellung und Steuerung der Szenen für Povray geschieht vollständig über Textdateien, in denen alle Angaben zu Objekten, Aussehen, Beleuchtung etc. untergebracht werden. Mit Hilfe der Szenenbeschreibungssprache von Povray werden alle Objekte erstellt, beschrieben und plaziert. Das hört sich erstmal recht kompliziert und unhandlich an, ist aber eigentlich recht einfach und vor allem flexibel. Ein kleines Beispiel:

    include "colors.inc"
    background { color Cyan }
    camera {
    location <0, 2, -3>
    look_at  <0, 1,  2>
    }
    sphere {
    <0, 1, 2>, 2
    texture {
    pigment { color Yellow }
    }
    }
    light_source { <2, 4, -3> color White}

Die erste Anweisung lädt einige nützliche Farbdefinition, damit man eine Reihe von Farben einfach durch einen Namen ansprechen kann. Das wird auch direkt in der zweiten Zeile benutzt, wo die Hintergrundfarbe für die gesamte Szene auf Cyan festgesetzt wird. Dann folgt die Definition des Blickpunktes, der Kamera: Sie befinde sich 2 Einheiten oben und 3 Einheiten hinter dem Nullpunkt des Koordinatensystems für unsere Welt. Sie schaut von dort aus auf einen Punkt in 1 Einheit Höhe und zwei Einheiten vom Nullpunkt in die Bildebene hinein entfernt. Jetzt folgt schon unser Objekt: Eine Kugel an genau diesem Punkt, mit einem Radius von 2 Einheiten. Die Oberflächentextur ist sehr einfach gehalten, lediglich gelb eingefärbt wird sie, ohne weitere Modifikationen an Rauheit (Normals) oder anderen Effekten (Finish). Schliesslich wird noch eine Lichtquelle rechts oben und hinter dem Nullpunkt plaziert, die unsere Szene gleichmässig in einfachem Weiss anstrahlt. Diese Anweisungen werden nun in einer Datei mit z.B. dem Namen "demo.pov" gespeichert. Dann kann man daraus mit dem Befehl `povray +Idemo.pov +Odemo.tga` das fertige Bild erzeugen.

Auch wenn diese Art der Steuerung/Szenendefinition manchen recht unkomfortabel vorkommen wird und zugegebenermassen eine gewisse Vorstellungskraft vorraussetzt, so bietet sie doch auch einige Vorteile; die Positionierung von Objekten ist damit z.B. viel genauer zu machen, als es bei einer Positionierung mittels z.B. Maus möglich ist. Veränderung der Szene (z.B. auch zum kurzfristigen Ausblenden von Objekten um die Rendering-Zeit für eine Vorschau zu verkürzen) sind durch einfaches Auskommentieren schnell zu erreichen. Ausserdem bietet dieses Format die sehr nützliche Möglichkeit, Szenen oder Objekte mittels sog. Macros zu erzeugen, was z.B. die Erstellung von Bäumen, Grassflächen u.Ä. sehr flexibel und einfach macht. Auch die Wolkenkratzer im ersten Screenshot zu dieser Vorstellung wurden mittels eines Macros erzeugt.

### Fazit

Moray, ein graphischer Modeller für Povray ist verfügbar, allerdings als Shareware und ausserdem nur in Versionen für MS-DOS und Win32. Die MS-DOS-Version läuft auch unter OS/2, ist allerdings mittlerweile nicht mehr auf dem neuesten Stand (und wird auch nicht mehr weiterentwickelt). Ich habe mir Moray mal kurz angeschaut, scheint ein mächtiges Programm zu sein, die Bedienung fand ich allerdings teilweise recht umständlich. Mit ForeSpace (gibt's auf Hobbes) existiert auch ein nativer, frei erhältlicher Modeller für OS/2 PM, der ganz ok zu sein scheint (habe ihn mir auch nur mal kurz angeschaut) aber wohl noch ein paar Bugs aufweist.

Neben dem OS/2-Port von Stefan Schwarzer gibt es auch eine Version von Alexander Mai. Sein Paket beinhaltet auch einen Realtime-Previewer für XFree86/OS2.
Hierzu noch ein Hinweis von Stefan: "Beide Ports (Alexanders und meiner) beziehen sich auf dieselbe Povray-Version und haben ihre Vor- und Nachteile. Da Alexanders Port für XFree kompiliert ist, kann er ziemlich leicht die Echtzeitvorschau bieten. Mein Port enthält andererseits die Povray-Hilfe als INF-Datei und ein paar REXX-Skripte, um Desktop-Objekte anzulegen und per Drag-and-drop zu rendern. Das Beste wäre wahrscheinlich, meinen Port mit Alexanders Binary zu verwenden ;-)"

Als Fazit ist zu sagen, das Povray ein sehr mächtiges Programm zum Erstellen computergenerierter Bilder ist, dessen Bedienung vielleicht nicht jedem zusagt, das aber die aufgewendete Arbeit mit bemerkenswerten Ergebnissen belohnt.

Quellenverzeichnis: POVRay Entwickler: Stefan Schwarzer - s.schwarzer@ndh.net (OS/2 Port), Alexander Mai - st002279@hrzpub.tu-darmstadt.de (XFree86/OS2 Port) Preis: Freeware POVRay Homepage - http://www.povray.org POVRay für OS/2 - http://hobbes.nmsu.edu/pub/os2/apps/graphics/ray/pov/ POVRay für XFree86/OS2 - http://homepages.tu-darmstadt.de/~st002279/os2/html/povray.html

[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org