Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
Gestaltung von Oberflächen mit POV-Ray -
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial
  Oberflächengestaltung
  - Farben und Texturen
    Inhalt

    texture Syntax
    - Grundbeispiel
    - pigment{ ... }
    - normal{ ... }
      - pigment_pattern
      - normal Beispiele
    - finish{ ... }
    Vorgefertigtes
    - Regeln
    - colors.inc
    - textures.inc
    Farben Do-it-Yourself
    - color rgb< , , >
    - Transparenz
    Muster
    Muster Listen
    Warps
    uv_mapping
    Mapping
    Überlagerungen

    Eigene Texturen
 
                                           

Syntax von "texture"

Textur (engl.: "texture" )= Oberflächenbeschaffenheit
(d.h. Färbung, Rauhigkeit, Helligkeit, Glanzeigenschaften; Transparenz)

Das Syntaxschema geometrischer Objekte an einem Beispiel:

sphere{ <0,0,0>, 1 translate<0,1,0>
        texture{ pigment{color Orange}
                 normal {bumps 0.5 scale 0.05}
                 finish {diffuse 0.9 phong 1.0}
               } //Ende der Texturbeschreibung
      } // Ende der Kugelbeschreibung


Eine Textur wird durch die folgenden 3 Bestandteile vollständig beschrieben:
  1. Farbeigenschaft:, inklusive Durchsichtigkeit
        pigment{ ... }    < - Farbeingenschaft muß angegeben werden!
  2. Oberflächenstruktur (Rauheit).
        normal  { ... }    < - kann angegeben werden, muß nicht!
  3. Helligkeits-, Glanz- und Reflexionseigenschaften:
        finish    { ... }    < - sollte mind.: "finish{ambient 0.1 diffuse 0.9}"
          vgl. Anmerkungen dort

Dieses klare Schema sollte weitgehendst eingehalten werden. Teilweise funktioniert auch eine fehlerhafte oder undeutliche Beschreibung - sie produziert oft nur Warnhinweise beim Rendern. Trotzdem sollte solchen Fehlern intensiv nachgegangen werden, da sie oft die Keimzelle noch umfangreicherer Missverständnisse sind. Auch kleine Syntax-Mängel sollten vermieden werden, schnell wachsen sie sich zu großen und vollständig undurchsichtigen Fehlkonstruktionen aus. Es ist zudem nicht gewährleistet, dass zukünftige Versionen des Programms heutige "nicht-fatale" Fehler noch weiterhin tolerieren!


Soll ein aus mehreren geometrischen Grundkörpern mittels "union{ } zusammengesetzter Körper einheitlich in allen Bestandteilen gleich eingefärbt werden, so ist es rationeller erst dem gesamten Körper eine Textur zuzuweisen!


Farben, Pigmente und Texturen lassen sich sowohl "in Handarbeit" herstellen (im folgenden beschrieben), als auch mit speziellen Zubehör-Programmen für POV-Ray erstellen. Deren Bedienung setzt allerdings meist gute Kenntnisse über Texturen voraus!

Zum Ausprobieren verwendet man am besten eine einfache Datei (einfarbiger Himmel und Boden, Kamera, Licht (weiß) von ferne wie Sonnenlicht ). Als Test-Objekt für Texturen verwende man eine einfache, schnell zu zeichnende Kugel mit Radius 1 --- zum Vergleich sollte man auch manchmal einen Quader(box) oder einen Zylinder verwenden, da insbesondere Texturen mit Glanz oder teilweisem Spiegeln in ihrer Wirkung stark von der Körperform abhängen! So erscheint das Glanzlicht einer Textur (simuliert z.B. mit "phong 1.0" im "finish"-Befehl ) nur an Stellen, an denen der Lichteinfallswinkel ungefähr der Reflexionswinkel ist.

Hat man sich einige speziellen Farben und Texturen gemacht, die man gerne immer wieder verwenden will, so kann man sich deren Definitionen (#declare MeinRot = color <1, 0, 0.25> ) in einer eigenen Include-Datei (z.B. mit dem Namen "Farben1.inc") zusammen ablegen und im Kopf eines jeden Textes durch #include "Farben1.inc" einbinden. Diese eigene Include-Datei sollte entweder im Verzeichnis des Szenentextes (mit der Endung " .pov" ) oder im Verzeichnis "INCLUDE" liegen. An diesen Stellen sucht das Programm POV-Ray automatisch nach irgendwelchen Include-Dateien. Man sollte aber unter allen Umstände die originalen Standard-Include-Dateien "colors.inc", "textures.inc" etc. unangetastet lassen, da sonst eventuell einige Beispiel-Dateien etc. nicht mehr korrekt funktionieren!


Wichtig: Da "scale", "rotate" und "translate" nur auf diejenige Objekte wirken, in deren Klammer sie stehen, lassen sich sowohl das Farbmuster in "pigment{ ...}", als auch die scheinbare Oberflächen-Verformung durch "normal{...}" unabhängig voneinander und getrennt von der geometrischen Körperform vergrößern oder verkleinern, spiegeln, rotieren oder verschieben!

Beispiel:

sphere{<0,0,0>,1
       scale <1.2,1,1>
       translate<0,1,0> // wirkt nur auf Kugelgeometrie!
       texture{
         pigment{Candy_cane
                 scale 0.25 }// wirkt nur auf "pigment"!
         normal {wrinkles 0.75
                 scale 0.1} // wirkt nur auf "normal"!
         finish {diffuse 0.9
                 phong 0.3}
         rotate<0,0,45>
                 // wirkt auf die gesamte Textur,
                 //jedoch nicht auf die Kugelgeometrie!
              } // Ende von "texture"
       scale 0.5 // wirkt auf die Kugel und ihre Textur!
                 //Achtung: wirkt auch auf
                 // die Verschiebung mit "translate"!
                 // Kugelmitte ist nun bei <0,0.5,0>!
       } // Ende von "sphere"
top

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