startseite  
   
  Quickstart in Povray

Abgesehen davon das verschiedene Progamme nach Povray exportieren ( Moray, Blender, Wings, HamaPatch, JPatch etc. ) ist es doch manchmal von Vorteil mit einer einfachen Textdatei eine 3D-Welt zu basteln.
Ein schöner Nebeneffekt dabei ist natürlich auch das Training sich eine solche Welt mit seinen Koordinatenpunkten nur vorzustellen, ohne das diese auf dem Bildschirm sichtbar ist.
Da ich mit Blender arbeite werde ich hier nicht weiter auf die mathematische Formbeschreibugen eingehen, da ich als GUI-Anwender leider nicht in der Lage bin Formen mathematisch beschreiben zu können (vielleicht werde ich ja mal genügend Zeit haben, mir dieses zueigen zu machen).
Wenn Sie mehr Interresse an Povray haben oder hier bekommen sollten, schauen Sie am besten auf der Homepage von Povray vorbei.


1. Povray Editorfenster
Installation:

Laden Sie sich das Programm von der Homepage herunter und installieren es in einen Ordner Ihrer Wahl. Zur Zeit ist die Version Povray 3.6.1a aktuell.
Nach erfolgreicher Installation wird zur Überprüfung der Funktionstüchtigkeit ein Testrendering durchgeführt. Wenn dieses beendet ist schließt sich das Programm wieder. Darauf beschränkt sich aber dieser Prozeß auch schon.

Die GUI:

Öffnen Sie nun das Programm. Sie haben nun Dieses Fenster vor sich. Ich werde dies jetzt nicht weiter erklären, das Sie ja eh hier ein wenig herumschnüffeln werden.


Das erste Objekt:

Kicken Sie auf New, um eine neue Datei zu erstellen.

Speichern Sie diese ersteinmal in ein Verzeichnis Ihre Wahl.

Stellen Sie 512 x 384, No AA (kein Anti Aliasing) in der Auswahl ein. Wir erstellen zuerst eine einfache Umgebung, so das die Testrenderings ersteinmal zügig berechnet werden können.



Schreiben Sie folgenden Text in den Editor:

#include "koord.inc"
#include "achsen.inc"
#include "farbe.inc"

global_settings { assumed_gamma 1.0 }

background { color <0.1, 0.15, 0.25> }

camera {
  location  <8.0, 10.0, 14.0>
  look_at   <0.0, 1.5,  0.0>
  angle 45
  //right     x*512/384
}

light_source {
  0*x
  color rgb <1,1,1>
  translate <-10, 40, 10>
}


Speichern Sie diese Datei mit der Datenamenserweiterung .pov in ein Verzeichnis ihrer Wahl.
Laden Sie sich nun diese drei .inc ( achsen.inc, farbe.inc und koord.inc ) Dateien herunter und speichern diese in das selbe Verzeichnis in der Sie diese Übungsdatei abgespeichert haben.

Vesuchen Sie sich nicht zu verschreiben, da Povray keine Fehler durchgehen läßt. Falls doch einmal etwas nicht gerendert werden sollte wird in der Message eine Entsprechende Meldung angezeigt. Dann heißt es den Fehler suchen. szene_1.pov

Wir können jetzt zum Test diese Szene rendern. Dazu klicken Sie auf den Button Run. Wenn Sie den Renderprozeßstoppen oder einer Renderpause einlegen möchten dann klicken Sie aus Stop (Dieser Button ist erst im Renderprozeß aktiv) bzw. auf Pause.





Es ist nicht gerade Weltbewegend aber unbedingt schwer war es ja auch nicht. Bei dieser Übung geht es mir nicht um Erzeugung einer Weltbewegenden Bildes, sondern vielmehr um eine Vorstellung der 3D-Welten zu bekommen.

Wir haben hier nun folgendes erzeugt:

global_settings:

Globale Einstellungen


background:

Hintergrund { farbe <rot, grün, blau> }

In diesem Fall ein einfarbiger dunkelblaugrauer Farbton


camera:

Kamera:
  Perspektivische Kamera (Grundeinstellung)
  Position der Kamera <x, y, z>
  Ziel der Kamera <x, y, z>
  Winkel der Kameraöffnung
  Größe der Kameraansicht

light:

Lichtquelle -> Punktlicht {
  Position 0.0 in der X-Achse
   farbe rgb <rot, grün, blau> (Weiß)
  Verschoben an Position <x, y, z>}



Testbild





Ich habe hier zur beseren Orientierung, die Koordinaten und Achsen mal sichtbar gemacht. Es sollte Ihnen die ersten Schritte ein wenig erleichtern (hoffe ich jedenfalls).
Der Koordinatenmittelpunkt befindet sich auf x=0, y=0, z=0. Die Linien ensprechen jeweils eine Abstand von 1.0.
Ich habe mich hier auf die +Z Koordinate eingeschränkt, so das Objekte im Minusbereich der Z-Achse nicht sichtbar sind.

Erstellen eines Würfels

Wir erzeugen nun einen Würfel mit einer halbtransparenten Farbe. Schreiben Sie folgenden Text an das Ende unserer Beispieldatei:

box {
  <-1, -1, -1>
  < 1, 1, 1>
  texture {
    pigment {
      color rgbt <1, .5, 0.1, 0.3>*1.5
    }
    finish {
      ambient 0.25
    }
  }
  //translate y*1.0
}

Rendern Sie nun das Bild erst einmal. Falls Sie die Datei nicht gespeichert haben kommt jetzt eine Abfrage ob Sie diese vor dem Rendern speichern möchten.
Klicken Sie hier zuerst auf Automatisches Speichern der Datei für die gesamte Session und dann auf Save. Damit muß die Arbeit nicht immer wieder vor dem Render abgespeichert werden, da dies ,zumindestens bei dieser Arbeit, automatisch erledigt wird.





Lassen Sie uns nun den eben geschrieben Text des Würfels zurückkommen.

box steht für einen Würfel

Dieser besteht aus 6 Seitenflächen die im Raum definiert werden müssen:
Diese sind hier jeweils bei -1.0 und 1.0 auf jeder Achse positioniert. Also jewiels einer bei

x = -1 und x = 1 <-1, -1, -1> <1, 1, 1>
y = -1 und y = 1 <-1, -1, -1> <1, 1, 1>
z = -1 und z = 1 <-1, -1, -1> <1, 1, 1>



texture ist der Container für

pigment u. finish



pigment beschreibt die Farbeigenschaften

color Farbe
rgbt rot, grün, blau, transparenz
<1, .5, 0.1, 0.3>*1.5 Farbanteile u. Transparenz x 1.5


finish beschreibt die Oberflächeneigenschaften

ambient Eigenleuchten des Objektes


//translate Verschieben des Objektes

// Zeile wird von Povray beim auswerten nicht mit berücksichtigt.
y*1.0 Verschieben auf der Y-Achse um 1.0






Objekt Positionieren

Lassen Sie uns nun die Flächen der Z-Achse anders positionieren um den Würfel um 1.0 über dem Boden zu haben.

Ersetzen Sie nun die bestehenden Werte der Z-Achse:

<-1, -1, -1> <1, 1, 1>


durch diese:

<-1, 1, -1> <1, 3, 1>



Wenn Sie es nun Rendern erhalten Sie dieses Bild.



Wie Sie sehen befindet sich der Würfel um 1.0 über dem Boden.
Wir setzen jetzt den Würfel direkt auf den Boden, so können Sie die folgenden Bewegungen besser nachvollziehen.
Setzen Sie die Werte wieder auf je -1 und 1 zurück.
So das nun wieder dieses stehen haben:

<-1, -1, -1> <1, 1, 1>





Wir Verschieben jetzt denWürfel mit translate um 1.0 in der Z-Achse.
Löschen Sie dazu bitte die beiden Schrägstriche // vor translate.
Damit bezieht nun Povray diese Zeile für die Bildberechnung wieder mit ein.
Der Mittepunk de Würfels befindet sich nun an Position x=0, y=1, z=0.



Bibliothek erstellen

Wir wollen nun mehrere Würfel in dieser Szene unterbringen und diese jeweils unterschiedlich Skalieren. Dazu legen wir uns ein Bibliotheks-Objekt an, welches wir als Grundlage für die anderen verwenden werden.
Zumindestens ist es von Vorteil, da sich ja bei den weiteren Objekten ebenfalls um Kubusformen handel wird, ein Referenz-Objekt zu haben.

Überschreiben Sie nun den Eintrag für die box mit folgenden Text:

#declare newBox=
  box {
    <-1, -1, -1>
    < 1, 1, 1>
    texture {
      pigment { color rgbt <1, .5, 0.1, 0.3>*1.5 }
      finish { ambient 0.25 }
    }
  }

box { newBox translate y*1 }

box { newBox
  scale <3.0, 2.0, 0.0>
  //scale 3*x+2*y  // Alternative Wertangabe
  translate <-5,2,0>
}


Wie Sie sehen habe ich hier darauf verzichtet die Bibo-Box zu verschieben, da sich mit dieser Grundeinstellung besser arbeiten läßt. Denn sonst müßte dieser Wert immer berücksichtigung bei den Wertangaben finden.
Die erste box verwendet alle Eigenschaften und Werte von der #declare Box.
Die zweite wurde zuerst in der X-Achse um 3.0 und in der Y-Achse um 2.0 skaliert und erst dann an Position -5.0 entlang der X-Achse und um 2.0 entlang der Y-Achse verschoben.
Dies hat natürlich seinen Grund. Setzen Sie um diesen Grund zu erfahren, die translate Zeile über die scale Zeile und Rendern es dann.
Sie werden nun sehen das der zweite verschwunden ist. Na dann schauen Sie mal hinter die rechte Wand. Tragen Sie dazu bei camera unter location u. look_at diese Werte ein.

location <-10.0, 10.0, 14.0>
look_at <-14.0, 1.5, 0.0>


Um translation vor scale zu verwenden benötigen Sie diese Werte:

translate <-1.65,1.0,0>
scale <3.0, 2.0, 0.0>


Spätestens hier bemerken wir das es Povray sehr genau nimmt wann, wo und was wir scheinbar wollen.

Ich habe Ihnen unter scale auch eine andere Möglichkeit notiert. Mit dieser können Sie diese Angaben auch vornehmen, da es ja dasselbe aussagt.

scale 3*x+2*y