Benutzer:Toni Grappa/ Raytracing-Spiegelungen

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Raytracing Spiegelungen sind eine Methode, um in Blender realistisch spiegelndes Material zu erstellen. Wie jede Raytracing Methode erfordern sie das Aktivieren der Option Ray in den Render Buttons (F10). Und genauso wie bei den anderen Raytracing Berechnungen kann die Renderzeit unter Umständen sehr lang werden.


Fresnel[Bearbeiten]

Batak dam afternoon view.jpg

Wenn man auf eine Wasseroberfläche schaut, bemerkt man dass mit zunehmendem Blickwinkel - also je schräger man schaut - das Wasser undurchsichtig wird. Stattdessen reflektiert das Wasser nur noch. Blickt man von oben senkrecht in das Wasser hinein, so reflektiert es nur sehr wenig, ist dafür aber sehr durchsichtig. Das nennt man den Fresnel Effekt (gesprochen "Fre-nel"). Der Fresnel Effekt ist für Metalle sehr klein und kann praktisch vernachlässigt werden (sofern die Metalle ganz sauber sind). Glas und Wasser dagegen zeigen einen sehr starken Fresnel Effekt.

Der Fresnel Wert ist daher für transparente Materialien von besonderer Bedeutung, er spielt aber auch eine Rolle für nur teilweise transparentes Material, wie z.B. Plastik. Außerdem wird man viele Materialien (z.B. Autolack) in Blender so behandeln, als bestünden sie nur aus einem einheitlichen Material, gerade Lack aber besteht aus mehreren Schichten mit sehr unterschiedlichen Eigenschaften. Die Physik dahinter exakt zu simulieren ist mit vertretbarer Renderzeit vermutlich nicht möglich. Letztlich wird es also immer auf den zu erzielenden Effekt ankommen, welche Einstellungen von Ray Mirror, Fresnel und Fac man wählt.


Wasser[Bearbeiten]

Der reflektierte Intensitätsanteil beträgt für den Übergang von Wasser zu Glas bei senkrechter Betrachtung etwa 2%.

Am "physikalischsten" ist die Einstellung beider Fresnel-Werte auf fünf, insbesondere sollten sie gleich groß sein.

Blender3D FreeTip.gif

Wenn nichts zum Spiegeln da ist, können Sie Ray Mirror einstellen wie sie wollen. Sorgen Sie also für eine interessante Umgebung!



Spiegel[Bearbeiten]

Mirror.jpg

Metalloberflächen zeigen praktisch keine Abhängigkeit der Reflexion von der Blickrichtung, der Fresnel/Fac-Wert für ideale Spiegel ist demnach 0.0/1.0. Da Spiegel an der Vorderseite aber eine Glasscheibe haben, oder die Metalloberfläche dreckig sein kann, kann man auch kleine Werte (0.1/1.1) wählen, z.B. mit einer Wolkentextur für die Spiegeloberfläche.

Bei Aluminium ist es z.B. so, dass das Reflexionsvermögen für unpolarisiertes Licht erst ab einem Betrachtungswinkel von 70° etwa um 5% abfällt, um dann ab 85° wieder anzusteigen. Bei fast 90° Einfall wird das Licht dann zu fast 100% reflektiert. Man wird diesen Effekt also ignorieren können.

Glas[Bearbeiten]

Der reflektierte Intensitätsanteil beträgt für den Übergang von Luft zu Glas bei senkrechter Betrachtung etwa 4%. Bis zu einem Winkel von 50° bleibt die Reflexion für unpolarisiertes Licht auch etwa so. Nun ändert sich die Winkelabhängigkeit aber dramatisch.

In ungefährer Parabelform steigt die Reflexion auf 100% bei einem Betrachtungswinkel von 90° (siehe unten).


Etwas Physik[Bearbeiten]

Auf die Grenzfläche zweier Materialien fallendes Licht erfährt prinzipiell drei Effekte.

  • Transmission: Ein Teil des Lichtes scheint durch ein Material hindurch, dabei wird es gebrochen.
  • Reflexion: Ein Teil des Lichtes wird reflektiert, dabei gilt das Reflexionsgesetz Einfallswinkel=Ausfallswinkel.
  • Absorption: Ein Teil des Lichtes wird verschluckt.

Die Summe aus Transmission, Reflexion und Absorption muss gleich der einfallenden Lichtmenge sein. Die Summe der relativen Anteile muss also 1 ergeben.

Die Verhältnisse werden leider dadurch verkompliziert, dass das Verhältnis von reflektierter und transmittierter Lichtmenge vom Einfallswinkel der Lichtstrahlen abhängt. Diesem Umstand trägt der Fresnel Wert Rechnung. Schaut man senkrecht auf eine Oberfläche reflektiert sie am wenigsten, transparente Materialien transmittieren am besten. Umgekehrt spiegeln bswp. Glasscheiben oder Wasseroberflächen bei schräger Betrachtung sehr stark, der transmittierte Lichtanteil ist entsprechend geringer.

In Blender wird der Fresnel Effekt mit der Schlickschen Näherung (Schlick's Approximation) berechnet. Für Glas (IOR=1.5) und Wasser (IOR=1,33) habe ich für verschiedene Fresnel Werte jeweils den reflektierten und den transmittierten Anteil dargestellt. Wer sich für die Berechnungsformeln interessiert, sei auf Dielectrics and Distribution in Ray Tracing verwiesen. Der Fresnel Wert fünf für Reflexion und Transmission entspricht dabei der exakten Berechnung am meisten.

Abbildung 2: Glas (IOR=1.5), Fresnel-Wert 1.
Abbildung 3: Glas (IOR=1.5), Fresnel-Wert 3.
Abbildung 4: Glas (IOR=1.5), Fresnel-Wert 5. Dies ist die physikalisch richtigste Darstellung für Fensterglas.
Abbildung 5: Wasser (IOR=1.33), Fresnel-Werte 1, 3 und 5 in einem Diagramm aufgetragen. Der Unterschied zum Glas ist verhältnismäßig klein.


Die technische Umsetzung in Blender - der Renderer[Bearbeiten]

Da Blender schon über einen schnellen und betriebssicheren Renderer verfügt, wurde Raytracing als eine Materialeigenschaft hinzugefügt. Bei der ersten „Berührung“ mit dem Objekt wird die Tiefeninformation (z-Buffer) gespeichert. Von da ab kann der Strahl Licht oder Farbinformationen weiter verarbeiten.(siehe auch [Link Raytracing])

Um Schnittpunkte zwischen Faces und Strahlen sicher erkennen zu können, wurde die Octree Methode ausgewählt. Dies ist ein lokales Unterteilungssystem, in dem die ganze Szene in kleine Würfel aufgeteilt wird. Beginnend mit einem Würfel, kann mit 8, 64, 512 Würfeln gerechnet werden. Jeder Würfel enthält Referenzpunkte von Faces, wenn sie sich innerhalb dessen Volumens befinden. Wandert der Strahl durch diverse Würfel, lassen sich die zugeordneten Flächen leicht ausfindig machen.

Blender verwendet die „top down traversing“ Methode und der Octree hat eine Obergrenze von 64x64x64 Würfeln maximal. Mit einem Algorithmus, der dem von Bresenham ähnelt, werden die Würfel berechnet, die von dem Strahl durchquert wurden. Diese Methode ist als DDA (digital differential analyzer) -oder im Fall Blender- als 3DDA Methode bekannt. Der größte Nachteil der festgelegten Octree Zahl ist, dass immer noch hunderte, wenn nicht tausende Faces für einen einzelnen Durchgang berechnet werden müssen.

Um die Rechenzeiten zu begrenzen, gibt es zwei Möglichkeiten für den Anwender:

  • Halten Sie die für die Strahlen „sichtbare Umgebung“ so klein wie möglich. Sie können ein face von der Berechnung ausschließen, indem Sie in den Materialen „Traceable“ deaktivieren z.B. bei nicht reflektierenden Wänden oder Böden.
  • Erhöhen Sie die Octree Anzahl.


  • Environment Maps werden gerendert, bevor Raytracing überhaupt initialisiert wird. Dadurch wird sichergestellt, dass EnvMaps schnell gerendert werden.
  • Bekanntes Problem: Beim Raytracing werden nicht für jeden reflektierten Strahl die korrekten Werte für Filter und OSA berechnet, dadurch werden gespiegelte Bildtexturen etwas unschärfer als erwartet.