Dokumentation

Oberflächeneigenschaften definieren

<- Basisobjekte definieren
-> Kombinationen und Zusammenfassungen
Diffuse Lichtreflexion
Spiegelnde Lichtreflexion
Verspiegelung
Transparenz und Brechungsindex
Standardwerte global festlegen


Quelltext

Diffuse Lichtreflexion

Die diffuse Lichtreflexion beschreibt den Anteil des Lichtes, der an der Oberfläche in alle Richtungen gestreut wird. Die Helligkeit hängt dann nicht von der Blickrichtung des Betrachters ab, sondern nur von der Ausrichtung der Oberfläche zur Lichtquelle. Welcher Anteil des Lichtes auf diese Weise reflektiert werden soll, beschreibt der Parameter "flat", dem ein Wert zwischen 0 und 1 zugewiesen werden kann. Die Voreinstellung ist 1:

new Objekt-Typ{
  flat=f;
  ...
}
Im Beispiel links hat die linke Kugel einen flat-Wert von 0.5, die rechte einen von 1.

[
nach oben]

Quelltext

Spiegelnde Lichtreflexion

Die spiegelnde Lichtreflexion ist für die Glanzpunkte an Oberflächen verantwortlich. Dabei lassen sich zwei Parameter einstellen: Die Helligkeit und die Größe der Glanzpunkte. Dafür gibt es die Parameter phong und phongsize:

new Objekt-Typ{
  phong=p;
  phongsize=s;
  ...
}
phong muss dabei ein Wert zwischen 0 und 1 zugewiesen werden, die Voreinstellung ist 0. Sinnvolle Werte liegen in der Größenordnung von etwa 0.05. Im Beispiel links hat die rote Kugel phong=1 und phongsize=0.02, während die grüne phong=0.8 und phongsize=0.2 hat. Die rote Kugel hat zudem einen flat-Wert von nur 0.7.
Für realistische Bilder sollten alle Oberflächen, die glatt aussehen sollen, Glanzpunkte erhalten, insbesondere verspiegelte Oberflächen.

[
nach oben]

Quelltext

Verspiegelung

Der Parameter reflect gibt an, welcher Lichtanteil wie bei einem Spiegel reflektiert werden soll. Mögliche Werte liegen wieder zwischen 0 und 1, die Voreinstellung ist 0.

new Objekt-Typ{
  reflect=r;
  ...
}

[
nach oben]

Quelltext

Transparenz und Brechungsindex

Mit dem Parameter trans können Objekte durchsichtig gemacht werden. Zusätzlich kann mit fraction der Brechungsindex des Materials angegeben werden. Anhand dieses Parameters wird dann die Lichtbrechung eines Strahls (vom Vakuum) in das Material berechnet. Bei fraction=1 geschieht keine Lichtbrechung, dies ist die Voreinstellung. Im Bild links sieht man deutlich die Auswirkung schon von einer kleinen Erhöhung des Brechungsindex.

new Objekt-Typ{
  reflect=r;
  fraction=f;
  ...
}
Für realistische Ergebnisse ist es sinnvoll, die Parameter so zu setzen, dass die Summe aus trans, reflect und flat nicht größer als 1 wird. Schließlich kann eine Oberfläche nicht mehr Licht abgeben, als insgesamt auftrifft.

[
nach oben]
 

Standardwerte global festlegen

Wenn für viele Objekte die gleichen Oberflächeneigenschaften verwendet werden sollen, ist es sinnvoll, die Standardwerte zu verändern. Dazu können die Parameter einfach außerhalb der Objektdefinition gesetzt werden. In allen danach definierten Objekten werden diese dann als Voreistellung verwendet:

flat=f;
phong=p;
...

new Objekt1{
  ...
}

new Objekt2{
  ...
}
In den Objekten können dann auch einzelne Parameter überschrieben werden. Davon wird die Voreinstellung jedoch nicht beeinflusst.
Alternativ können die Parameter, evtl. auch zusammen mit der Objektfarbe, in einem Makro definiert werden, etwa so:
macro material1{
  phong=p;
  flat=f;
  color=[r,g,b];
  ...
}

new Objekt1{
  material1;
  ...
}
Näheres zu Makros entnehme man dem entsprechenden Abschnitt dieser Dokumentation.

[
nach oben]

Martin Melcher