Home
- POV-Ray Tutorials
POV-Ray Einführung
INHALT - INDEX
1. Arbeiten mit POV-Ray:
"Insert Menu Add-on".
2. Grundsätzliches zum
Erstellen von Szenentexten.
Räumliche Koordinaten,
Zahlen und Vektoren
3. Szenen-Aufbau
Ein Grundbeispiel.
4. Header einer Szene,
#include-Dateien
camera, light_source.
5. Geometrische Grundobjekte
sphere, box, cylinder,
cone, torus, plane.
und andere Körper
6. Transformationen
Streckung, Drehung,
Verschiebung u. andere.
CSG: union,
difference, intersection.
>7. Farben und Oberflächen
texture, pigment, normal, finish
8. #declare, #local, #macro,
Platzhalter, flexible Objekte.
9. #while Schleifen
Grundbeispiele.
10. #include, Include-Dateien.
Wiederverwendbare Objekte.
11. Rationelles Arbeiten,
Geschwindigkeit, Flexibilität,
modulares Arbeiten
Anpassung v. 3.1 auf 3.5/3.6
Anpassung v. 3.5/3.6 auf 3.7
POV-Ray + Windows Vista.
- Insert Menu Add-on
& Download
|
Die Gestaltung der KörperOberfächen -
Das Texturieren von Objekten
( Anmalen - Verbeulen - Helligkeit und Glanzeigenschaften)
textur{ } = Oberflächenbeschaffenheit ("texture")
Eine Textur besteht im wesentlichen aus:
pigment{ } Farbe und Durchsichtigkeit ("")
normal { } Oberflächen-Rauhheit ("normal")
finish { } Oberflächen-Helligkeit u. -Glanz ("")
Beispiel:
texture{ pigment{ color Orange}
normal { bumps 0.5 scale 0.05 }
finish { phong 1.0 reflection{0.2} }
} |
Die Befehle "pigment{...}", "normal{...}" und "finish{...}" können prinzipiell alleine stehen
(ohne in "texture{...}" eingebunden zu sein),
um jedoch eine klare Strukture zu erhalten ist es sehr empfehlenswert
diese Sachen in einen gemeinsamen Container "texture{...}" zu packen!
|
|
pigment{color ... } - Farbe (muß!) und Durchsichtigkeit (kann!)
Sofern zuvor die Zeile: #include "colors.inc" vorhanden ist,
kann mit vordefinierten Farben mit englisch/amerikanischen Namen gearbeitet werden:
z.B.: pigment{ color Red }
Ferner läßt sich jede beliebige Farbe aus Rot, Grün und Blau mischen ("Additive Farbmischung"!),
dazu verwendet man die Anweisung pigment{color rgb<..,..,..>} (red,green,blue).
Die in der Klammern einzusetzenden 3 Zahlen für die Farbstärken müssen Werte zwischen 0.000 und
1.000 darstellen. Dabei bedeutet 1.00 = 100% und 0.00 = 0% der jeweiligen Farbe.
Hier einige Beispiele für rgb-definierte Farben:
color rgb<0,0,0> = Schwarz ("color Black"),
color rgb<0.5,0.5,0.5> = Grau ("color Grey"),
color rgb<1,1,1> = Weiß ("color White"),
color rgb<1,0,0> = Rot ("color Red"),
color rgb<0,1,0> = Grün ("color Green"),
color rgb<0,0,1> = Blau ("color Blue"),
color rgb<1,1,0> = Gelb ("color Yellow"),
color rgb<0,1,1> = HimmelBlauGrün genannt: Cyan
color rgb<1,0,1> = RotViolett genannt: Magenta.
color rgb<1,0.65,0> = OrangeGelb
color rgb<0.25,1,0> = Gelbgrün ("color YellowGreen"),
color rgb<1,0,0.25> = Weinrot .
Ferner kann man Farben aufhellen bzw. abdunkeln:
color rgb<1,0.5,0.5> = HellRot
color rgb<0.5,0,0> = DunkelRot
|
|
Es lohnt sich, es einfach mal selbst auszuprobieren !!!
Das menschliche Auge kann ungefähr 16 Millionen Farbtöne unterscheiden.
Für eine Repräsentation im Computer benötigt man 24 bit pro Farbpixel!
Es empfiehlt sich die Monitoreinstellung der Graphikkarte zu überprüfen: sie sollte auf mindesten 24 bit Farben ('true-color')
eingestellt sein. Die Fabrikeinstellung beträgt oft weniger
(16 bit Farben oder 'hight colors') - kein Problem mit den meisten Computergames,
aber mit POV-Ray wird man den Unterschied sehen!
Nach #include "textures.inc" kann man die darin
definierte vorgefertigte Farbmuster (pigment)
und vorgefertigte Texturen verwenden.
Beispiel vorgefertigtes pigment:
texture{ pigment{ Jade }
finish{ phong 1 }
} |
Andere vorgefertigte Pigmente sind z.B.:
Candy_Cane, Red_Marble, Brown_Agate.
|
Beispiel vorgefertigte Texture:
texture{ Cork
finish{ phong 1 }
} |
Andere vorgefertigte Texturen sind z.B.:
Polished_Chrome, Polished_Brass.
|
Jade
|
Transparentes Material mit Refraktion:
(Refraktion = Lichtbrechung)
Für z.B. dickes Glas mit Lichtbrechung
benötigt man "interior{ }":
material{ texture{ ... }
interior{ ior 1.5 }
} // end of material |
|
Beispiel vorgefertigtes Material:
|
Glass
|
normal{ ... } Oberflächen-Rauhheit (kann! falls nicht glatt)
Wird diese Eigenschaft nicht definiert, so bleibt die Oberfläche glatt.
Einige interessante Effekte sind z.B.:
bumps -Beulen; waves -Wellen;
dents - Zacken;
ripples -Rippel; wrinkles - Knitter.
|
|
Sind einzelne Effekte nicht sofort zu erkennen, so liegt es meist daran, daß sie zu groß eingestellt wurden.
Dies läßt sich durch Hinzufügen z.B. der Anweisung "scale 0.05" oder ähnlicher Werte ändern -
man muß die richtige Größe probieren!
Wesentlich ist es zu wissen, daß diese Effekte nur ein mehr oder weniger rhythmisches Kippen des Normalenvektors
("Lot auf die Fläche") auf der Oberfläche hervorrufen. Nach diesem Lot werden die Reflexion des Lichts und der
Schattenfall auf der Oberfläche berechnet (Reflexionswinkel = Einfallswinkel, jeweils zum Lot hin gemessen).
Die Silhouettenlinie (Körperumriß) der Körper bleibt davon (leider!) unberührt! Das bedeutet,
daß die Verbeulung des Körpers nur scheinbar ist! Sofern die unveränderte Siluette keine störenden
Effekte verursacht, lassen sich mit solchen und vielen weiteren Funktionen jedoch verblüffend realistische
Oberflächen modellieren.
finish {....} - Oberflächen-Helligkeit und -Glanz (sollte definiert werden!)
Die wichtigsten Werte sind:
(Hier wird vorausgesetzt, dass der Befehl "global_settings {assumed_gamma 1.0 }"
im Kopf der Szenendatei eingefügt ist!)
ambient 0.10 Schattenhelligkeit der Farbe (ist voreingestellt als "default" auf 0.10)
(simuliert die durch indirekte Beleuchtung hervorgerufene Helligkeit. Eine korrekte Berechnung von allem zur
indirekten Beleuchtung beitragendem Licht (radiosity) ist praktisch nur näherungsweise möglich!)
diffuse 0.90 Anteil der durch direkte Beleuchtung erzeugte Helligkeit (vgl. hierzu die Anmerkungen unten!).
reflection 0.15 SpiegelungsAnteil der Helligkeit
phong 1.0 Einfache Erzeugung von Glanzlichtern
specular 0.5 Einfache Erzeugung von flächigem Schimmer.
|
|
!!! Anmerkung:
Die Grundeinstellung ("default") von ambient und finish beträgt (bei Version 3.1 und 3.5):
"finish{ambient 0.1 diffuse 0.6}". Dabei wird vorausgesetzt, daß die grundsätzliche Kontrasteinstellung
mittels "global_settings { assumed_gamma 1.0 }" festgelegt wird.
Dies läßt auf Monitoren von Rechnern mit Intel-Prozessoren (486er, Pentium etc.)
die Farben viel zu dunkel erscheinen ! Es empfiehlt sich
durch "finish {ambient 0.10 diffuse 0.90}" oder etwa "finish {ambient 0.15 diffuse 0.85}"
die Werte zu erhöhen.
Am besten legt man die Werte für diffuse und ambient generell durch die Anweisung
#default{ finish{ ambient 0.1 diffuse 0.9 }} |
am Anfang einer Szenenbeschreibung
und ändert diese nur noch bei z.B. spiegelnden Flächen entsprechend ab.
Werden für die "default-Werte" bei Textur-Definitionen später andere Werte angegeben, so
überschreiben diese bei der neu definierten Textur die Werte der Grundeinstellung.
Will man Körper plastischer, aber nicht heller darstellen (weniger indirektes Licht,
härteren Kontrast der Beleuchtung, tiefere Schatten ), so sollte die Summe aus
ambient und diffuse beibehalten werden. Z.B. durch: "finish {ambient 0.05 diffuse 0.95}"
Beträgt die Summe aus ambient, diffuse und reflection mehr als 1, dann
erscheint die Beleuchtung meist unrealistisch! Die Körper erscheinen dann oft in ihren
Schattenpartien strukturlos ausgefressen, wie auf einem überbelichteten Photo.
Leuchtende Körper stellt man nicht durch übertrieben helle Texturen da (sie strahlen trotzdem nicht!!!),
sondern besser durch Lichtquellen in schattenlosen Körpern mit dem Kommando "looks_like" - diese
strahlen dann auch richtig!
|