Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


raytracing:texture

Dies ist eine alte Version des Dokuments!


Texturen

Grundlagen

Als Textur wird in der Computergrafik das Erscheinungsbild einer Oberfläche bezeichnet. Dabei wird versucht, der physikalische Vorgang der Ineraktion von Photonen mit Materialien nachzubilden. In der Physik werden die folgenden drei Phänomene unterschieden:

  • Absorption: Ein Teil des Lichts wird vom Material aufgenommen und in Wärme umgewandelt.
  • Beugung: Das Ablenken des Lichts durch ein durchsichtiges Medium. Bei der Beugung oder Diffraktion werden Strahlen unterschiedlicher Wellenlänge unterschiedlich stark abgelenkt.
  • Reflexion: Die Lichtstrahlen werden zurückgeworfen. Es wird zwischen der gerichteten Reflexion von vielen benachbarten Lichtstrahlen in die gleiche Richtung und der ungerichteten diffusen Reflexion (auch Streuung) unterschieden.

Umsetzung in POV-ray

Diese vier Phänomene werden in der Computergrafik allgemein und auch in POV-ray durch entsprechende Konstrukte modelliert.

Absorbtion

Die Absorbtion wird durch einen RGB-Wert bestimmt. Ein Wert von 0 bedeutet, dass das gesamte Licht dieses Spektrums absorbiert wird, 1 bedeutet, dass kein Licht in diesem Spektrum absorbiert wird.

Beispielsweise bedeutet der folgende Code, dass das grüne und blaue Licht absorbiert wird. Somit erscheint der Körper rot:

texture {
    pigment { color rgb <1, 0, 0> }
}

Zusätzlich kann die Lichtdurchlässigkeit des Körpers mit transmit angegeben werden:

texture {
    pigment { color rgb <1, 0, 0> transmit 0.5 }
}

Ein Wert von 0 bedeutet, dass kein Licht durchgelassen wird, der Körper also solid erscheint. Ein Wert von 1 bedeutet vollständige Durchlässigkeit, der Körper ist unsichtbar.

Beugung

Die Beugung wird simuliert, indem virtuelle Photonen auf ein bestimmtes Objekt geschossen werden.

Beugung und Lichtdurchlässige Objekte (Glas) werden später angeschaut.

Reflexion

Im finish-Teil einer Textur wird die diffuse und gerichtete Reflexion festgelegt.

Mit diffuse wird der Anteil des Lichts definiert, welches diffus reflektiert wird. Der Standardwert ist 0.6 (also 60%). Um eine spiegelnde Oberfläche zu erhalten, muss diffus auf einen Wert nahe bei 0 gesetzt werden.

Die diffuse Reflexion hängt vom Winkel, mit welchem das Licht auf die Oberfläche trifft, ab. Bei einem flachen Winkel wird normalerweise weniger Licht diffus reflektiert. Dieses Verhalten kann mit dem brilliance-Wert beeinflusst werden. Ein höherer Wert bedeutet, dass bei flachem Einfallswinkel mehr Licht diffus reflektiert wird. Der Standardwert ist 1. Ein hoher Wert führt zu einem metallischen Aussehen der Oberfläche.

texture {
    finish {
        diffuse 0.7
        brilliance 2
    }
}

Glanzlichter

Als Glanzlichter werden die tupfenartigen Lichteffekte auf glatten Oberflächen bezeichnet. Physikalisch setzen sie sich aus einer Mischung aus diffuser und gerichteter Reflexion zusammen. Um einen solchen Effekt korrekt mit Raytracing zu berechnen, müsste die gerichtete Reflexion an tausenden mikroskopischer Flächen genau modelliert werden, was zu einem nicht realisierbaren Rechenaufwand führen würde.

Ein einfaches Modell zur Erzeugung von Glanzlichtern entstammt dem Phong-Beleuchtungsmodell. Der phong-Wert zwischen 0 und 1 legt der Anteil der mikroskopischen Flächen fest, welche so ausgerichtet sind, dass sie das Licht in Richtung Kamera reflektieren. Ein höherer Phong-Wert erzeugt also ein helleres Glanzlicht. Die Grösse des Glanzlichts wird durch den Wert phong_size festgelegt, welcher standardmässig 40 beträgt. Eine grössere phong_size bedeutet eine rauhere Oberfläche.

texture {
    finish {
        phong 0.6
        phong_size 20
    }
}

Vordefinierte Texturen

POV-ray stellt auch einige vordefinierte Texturen zu Verfügung. Dazu muss die Datei textures.inc eingebunden werden:

#include "textures.inc"
 
sphere {
    <0, 0, 0>, 1
    texture { White_Marble }
}

Steine

  • Jade
  • Red_Marble
  • White_Marble
  • Blood_Marble
  • Blue_Agate
  • Sapphire_Agate
  • Brown_Agate
  • Pink_Granite
  • PinkAlabaster

Glas

  • Glass
  • Glass2 (Plexiglas)
  • Glass3 (Bleiglas)
  • Green_Glass
  • NBglass
  • NBoldglass
  • NBwinebottle
  • NBbeerbottle
  • Ruby_Glass
  • Dark_Green_Glass
  • Vicks_Bottle_Glass
  • Yellow_Glass
  • Orange_Glass

Speziell

  • Candy_Cane
  • Y_Gradient
  • X_Gradient
  • Peel
  • Water
  • Cork
  • Lightening1
  • Lightening2
  • Starfield

Holz

  • Cork
  • Cherry_Wood
  • Pine_Wood
  • Dark_Wood
  • Tan_Wood
  • White_Wood
  • Tom_Wood
  • DMFWood1
  • DMFWood2
  • DMFWood3
  • DMFWood4
  • DMFWood5
  • DMFLightOak
  • DMFDarkOak
  • DMFWood6
  • EMBWood1
  • Yellow_Pine
  • Rosewood
  • Sandalwood

Metall

  • Chrome_Metal
  • Brass_Metal
  • Bronze_Metal
  • Gold_Metal
  • Silver_Metal
  • Copper_Metal
  • Polished_Chrome
  • Polished_Brass
  • New_Brass
  • Spun_Brass
  • Brushed_Aluminum
  • Silver1
  • Silver2
  • Silver3
  • Brass_Valley
  • Rust
  • Rusty_Iron
  • Soft_Silver
  • New_Penny
  • Tinny_Brass
  • Gold_Nugget
  • Aluminum
  • Bright_Bronze

Himmel und Wolken

  • Blue_Sky
  • Bright_Blue_Sky
  • Blue_Sky2
  • Blue_Sky3
  • Blood_Sky
  • Apocalypse
  • Clouds
  • FBM_Clouds
  • Shadow_Clouds
raytracing/texture.1416763056.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)