Ein Vortrag zu POV-Ray in der LUG-DD

Während unseres ersten Treffens im Jahr 2002 hat Christian Perle einen Vortrag zum Thema POV-Ray gehalten. Ich habe dazu ein kleines Modell beigesteuert, das ich im folgenden vorstellen möchte. Eine etwas ausführlichere Übungsanleitung steht als PDF-Datei zur Verfügung.

Die Sourcen (POV- und INI-Datei) kann man sich aus dieser Webseite (ganz unten) herauskopieren oder in gepackter Form herunterladen. Im einfachsten Fall muss man das Archiv einfach nur entpacken und

povray cube.ini

aufrufen. Zuerst soll nun das fertige Modell gezeigt werden:

Das fertige Modell


// wir beginnen mit dem Fraesen auf
// der Oberseite des Wuerfels.
// Es werden vier Zylinder ineinander
// gesteckt und miteinander vereinigt.
#declare fc1 = union { cylinder { <0, 36, 0>, <0, 22, 0>, 30 } cylinder { <0, 36, 0>, <0, 15, 0>, 20 } cylinder { <0, 36, 0>, <0, 9, 0>, 12 } cylinder { <0, 36, 0>, <0, 6, 0>, 8 } }

// nun wird dieses Teil um eine gedachte x-Achse
// um 180 Grad gedreht und mit dem Ursprungsobjekt
// vereinigt.
#declare fc2 = union { object {fc1} object {fc1 rotate x*180} } // und das Ergebnis sieht schon recht interessant
// aus.
Schritt 1

// das reicht aber noch nicht: wir benoetigen das
// Teil insgesamt drei Mal. Daher wird es nun um
// die x-Achse und um die z-Achse gedreht und alle
// drei Objekte werden miteinander vereinigt.
#declare fca = union { object {fc2} object {fc2 rotate x*90} object {fc2 rotate z*90} } // und hier wird daraus ein sichtbares Objekt...
object {fca texture { pigment { P_Chrome5 } finish { ambient 0.250 } } } // ... das im folgenden Schritt von dem Wuerfel
// subtrahiert wird.
Drehung um Z

// hier bilden wir die Differenz aus dem Wuerfel
// und den zu fraesenden Festkoerpern.
difference{ object {UnitBox scale 35} object {fca} texture { pigment { P_Chrome5 } finish { ambient 0.250 } } rotate <0 clock 0> }
eine bunte Version...




// Hier ist nun die endgueltige POV-Datei.
// Unter Verwendung einer INI-Datei kann man
// das Raytracing dieses Modells sehr gut
// steuern. Dazu sei der Name der POV-Datei
// mit cube.pov gegeben.
global_settings { assumed_gamma 2.2 } #include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "metals.inc" #include "glass.inc" // zum Drucken ist weiss besser geeignet:
background {color White} camera { location <0, 0, -140.0> direction <0, 0, 1> up <0, 1, 0> right <4/3, 0, 0> angle 60 look_at <0, 0, 0> } // Lichtquellen
light_source {< -50, 0, -50> color LightGray shadowless} light_source {< 50, 0, -50> color LightGray shadowless} #declare fc1 = union { cylinder { <0, 36, 0>, <0, 22, 0>, 30 } cylinder { <0, 36, 0>, <0, 15, 0>, 20 } cylinder { <0, 36, 0>, <0, 9, 0>, 12 } cylinder { <0, 36, 0>, <0, 6, 0>, 8 } } #declare fc2 = union { object {fc1} object {fc1 rotate x*180} } #declare fca = union { object {fc2} object {fc2 rotate x*90} object {fc2 rotate z*90} } difference{ object {UnitBox scale 35} object {fca texture { pigment { P_Chrome3 } finish { ambient 0.250 } } } texture { pigment { P_Chrome5 } finish { ambient 0.250 } } rotate <0 45 0> } // oder:
// rotate <0 clock 0>
// die clock-Variable wird durch die ini-Datei
// gesteuert.


Zuletzt wird die INI-Datei cube.ini dokumentiert:


Antialias=on
Antialias_Threshold=0.03
Antialias_Depth=9
Quality=9

Jitter=on
Jitter_amount=0.05
         
         
         
Width=800
Height=600

Output_File_Type=T


Pause_when_Done=off

Input_File_Name=cube.pov

Initial_Frame=0
Final_Frame=0

Initial_Clock=0
Final_Clock=0

Während des Vortrags war ich auch auf die Möglichkeit eingegangen, das Teil per INI-Datei zu drehen. Die Bilder dazu stehen jetzt ebenfalls zur Verfügung. Für eine gute Qualität der entstehenden Bilder ist es in den meisten Fällen angebracht, die Bildabmessungen größer zu wählen als notwendig. Die Bilder können dann mit ImageMagick und anderen Grafikwerkzeugen wieder verkleinert werden. Die Arbeit mit solchen Programmen in der Shell soll irgendwann noch einmal Gegenstand eines Vortrags sein.


Copyright © 2002 -Stefan Lagotzki-