Einführung in die Beschreibungssprache des Raytracers POV-Ray       - Seite 7
von Friedrich A. Lohmüller
English English English
Italiano Italiano
Français français

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:
material{ M_Glass3 }


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!


Teil 0 | Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5 | Teil 6 | Teil 7 | Teil 8 | Teil 9 | Teil 10 | Teil 11

top

© Friedrich A. Lohmüller, 2014
homepage:www.f-lohmueller.de