Vorwort:
Als erstes möchte ich darauf hinweisen, daß sich bei RayFX um ein Plugin im Beta-Stadium handelt. Dementsprechend ist es noch nicht voll funktionsfähig, und auch das Tutorial könnte man deshalb noch als "Beta-Tutorial" bezeichnen. So sind mir selbst noch einige Funktionen etwas unklar, bei manchen weiß ich nicht, ob es nun an der Beta-Version des Plugins liegt, oder schlicht und einfach an meiner eigenen Unwissenheit. Wer also in diesem Tutorial auf definitiv falsche Aussagen trifft, möge mir dies bitte mitteilen, damit ich die entsprechenden Textpassagen abändern kann.

Bei RayFX von Blur handelt es sich um ein kostenloses Plugin (hoffentlich bleibt das auch so :-)), das die Raytrace-Fähigkeiten des Standard Scanline Renderer von Max R3 um einige wichtige Features erweitert.
Das wichtigste dabei sind wohl die RayFX-Schatten: damit könnt ihr weiche Raytrace-Schatten erstellen, indem ihr sogenannte "Arealights" verwendet. Bisher habt ihr weiche Schatten nur durch Schattenmaps erhalten, was aber bei durchsichtigen Objekten (Glas) zum Problem wird.

Wenn ihr noch wenig Erfahrung mit Raytrace- und Schattenmap-Lichtern habt, schaut euch zunächst die zwei Tutorials Caustics und Lichtsetzung in Max an. Dort werdet Ihr einiges über die Standard-Fähigkeiten von Max in Sachen Licht und Raytracing erfahren. Mit RayFX könnt Ihr dann einige Probleme, die dabei auftreten, einfacher lösen.

Zunächst etwas zur Installation:
Ladet euch von BlurBeta folgende Zip-Files herunter:

RayFX.zip (beinhaltet RayFx.dlu / RayMtl.dlt / RayTex.dlt)
RayFXShadows.zip (beinhaltet RayFxStdShadow.dlo / RayFxAreaShadow.dlo)
BlurLib.zip (beinhaltet BlurLib.dlu)

Schiebt die Dateien alle in euren StdPlugins-Ordner von Max, und macht euch zunächst eine Sicherheitskopie von RayFx.dlu / RayMtl.dlt / RayTex.dlt. Falls ihr mit den Blur-Raytrace Tools nicht zufrieden seid, könnt ihr die alten (Max-Standard) Raytrace-Plugins wiederherstellen.

Die BlurLib.dlu ist notwendig, um überhaupt Plugins, die von Blur stammen, verwenden zu können.

RayFX Shadows:
Es gibt zwei verschiedene Arten von RayFX-Shadows. Einmal die Standard-RayFX-Schatten und die Area-RayFxSchatten. Die Standard RayFX-Schatten unterscheiden sich nur unwesentlich von den Standard-Max-Raytrace-Schatten. Zwar besitzen die Standard-RayFxShadows einige Optionen mehr, die aber, aufgrund der lamgsameren Geschwindigkeit, nichts wert sind.

Interessanter sind die RayFX Area Shadows. Zwar wandern auch hier die Rechenzeiten in die Höhe, dafür hat aber eben "weiche" Raytraceschatten, bzw. AreaLights. Area-Lights kommen der Realität schon sehr nahe. Besonders deutlich wird ihr Effekt, wenn die Lichtquelle größer ist, als das Objekt, das den Schatten wirft. Es ist wie bei einer Sonnenfinsternis: Die Sonne ist die (Area)Lichtquelle, der Mond wirft einen Schatten auf die Erde. Dabei ist immer vom Kernschatten die Rede. Wie ihr im Bild erkennen könnt befindet sich der Kernschatten nur an der Stelle, wo der Mond einen absoluten Schatten auf die Erde wirft. Der Rest befindet sich im Halbschatten, d.h. der Mond wirft zwar einen Schatten, da die gesamte Sonne aber größer als der Mond ist, wird dieser Schatten vom restlichen Sonnenlicht überstrahlt.
Das zweite Bild zeigt die Funktionsweise von normalen, computergenerierten Lichtquellen. Diese gehen immer von einem Punkt aus (hier das Zentrum der Sonne). Dementsprechend kann der Mond auch keinen Halbschatten erzeugen, sondern bildet nur einen einzigen 100%igen dunklen Fleck.

Nun aber zu den Einstellungsmöglichkeiten der RayFX-Area Shadows.

Das Rollout Schattenparameter:
Um AreaShadows überhaupt verwenden zu können, müßt ihr in diesem Rollout die "RayFXAreaShadows" auswählen. Daraufhin erscheint ein neues Rollout "RayFX Area Shadows". Hier werden alle nötigen Einstellungen vorgenommen. Die übrigen Einstellungsmöglichkeiten wie Schatten-Farbe und -Dichte funktionieren bei den RayFXShadows noch (!) nicht.

Das Rollout RayFX Area Shadows:

Basic Options:
Laßt das Kästchen "Transparent Objects" nur aktiviert wenn ihr auch tatsächlich transparente Objekte (wie z.B. Gläser) in eurer Szene verwendet. Ansonsten schraubt ihr damit nur die Renderzeiten unnötig in die Höhe! Das Ergebnis verbessert sich dadurch nicht!

Mode: RayFX unterstützt momenten nur zwei Arten von Area-Lights. Rectangle Lights und Box Lights. Die anderen wie Disc, Triangle oder Sphere werden noch nicht unterstützt. Im Normalfall kommt man aber mit diesen beiden Arten aus. Stellt euch einfach ein glühendes Rechteck als Lichtquelle vor (z.B. ein Monitor), oder einen glühenden Würfel. Als Lichtquelle sind dementsprechend Spotlichter (rectangle light) oder Punktlichter (box light) zu verwenden. Punktlicher erfordern natürlich wesentlich mehr Rechenzeit.

RayFX Global Parameters: Hier werden wie beim Standard-Max auch, die Raytrace-Parameter eingestellt. Dazu aber später noch mehr.

RayFX Include: Hier kann man Objekte von dem Schattenwurf des RayFX Lichtes ein- und ausschließen. Obwohl Illumination die einzige Auswahlmöglichkeit ist, gilt diese Box nur für den Schattenwurf. Auch muß man mindestens zwei Objekte auswählen, um eine Wirkung zu erzielen: Zum einen ein Objekt das einen Schatten wirft, zum anderen ein Objekt das diesen Schatten erhält. Nur dann wird der Schatten unsichtbar (bzw. wird nicht berechnet, die Renderzeit verkürzt sich).Obwohl nach wie vor die richtige Ein- und Ausschließenbox im Rollout Allgemeine Parameter aktiv ist (und auch verwendet werden kann), solltet ihr diese neue Möglichkeit verwenden, um Objekte vom Schattenwurf auszuschließen. Es geht einfach schneller.

Area Light Dimensions:
Hier stellt ihr die Größe eures AreaLights ein. Dies ist nötig, um überhaupt weiche Raytraceschatten zu erhalten (die Lichtquelle muß eine feste Größe haben, um flächiges Licht auszusenden. Denkt an das Sonnenbeispiel!). Wenn es sich um ein Rectangle Light handelt, gilt nur Breite x Höhe. Bei Box Lights kommt noch die Tiefe (Länge) hinzu. Die Angaben beziehen sich auf die Units (Einheiten) Eurer Szene. Leider werden die Ausmaße eines Arealights noch nicht im Ansichtsfenster dargestellt, dies soll aber mit der nächsten Version der RayFX Shadows behoben sein. Je höher ihr hier die Werte dreht, um so größer wird eure Lichtquelle, umso weicher die Schatten. In meiner Beispielszene (siehe weiter unten) besitzt die Kugel einen Radius von 20 Einheiten, das Arealight Ausmaße von 100 x 100 Einheiten (wenn man der Beschreibung von Blur Glauben schenken darf, ist das Arealight etwa doppelt so groß wie die Kugel.

Area Light Parameters:
Hier werden die wohl wichtigsten Einstellungen vorgenommen, die mit den weichen Ray-Trace Schatten zu tun haben:

Detect Supersampling: So wie ich die Anleitung von Blur verstanden habe, verhindert diese Box eine Art doppeltes Antialiasing.
Wenn der Schatten auf ein Objekt, welches Supersampling verwendet, fällt, wird der Schatten noch weicher gezeichnet (besser geblurrt). Das zwei Bilder nebenan verdeutlichen dies genauer (ich habe dort den Kontrast weit nach oben gezogen, um die Problematik sichtbar zu machen, daher der Schwarz/Weiß-Eindruck)

Eine Kugel wirft einen (Area)Schatten auf einen Quader, der als Boden dient. Im oberen Bild wurde der Boden ohne Supersampler gerechnet. Man kann deutlich die Schatten-Artefakte in der linken Bildhälfte erkennen.

Das untere Bild zeigt den Schattenwurf (keiner der Schattenparameter wurde verändert) auf einen gesupersampelten Quader. Die Artefakte werden weniger.

Sogesehen stimmt es also, daß Schatten "doppelt weichgezeichnet" werden. Was die Schaltfläche "Detect Supersampling" damit zu tun hat, ist mir jedoch unverständlich. Ob ein- oder ausgeschaltet, auf Supersampling-Materialien wird ein Schatten immer doppelt weichgezeichnet. Die Schaltfläche zeigt einfach keinen Effekt. Ob das nun an der Beta-Version liegt, kann ich nicht sagen. Bei mir klappts einfach nicht....

 

Detect Recursion: Auch hier muß ich leider passen. Laut Anleitung soll auch damit ein doppeltes und dreifaches Antialiasing verhindert werden (z.B. weiche Raytraceschatten in einer spiegelden Fläche betrachtet). Da aber das Anitaliasing bei Reflektion und Refraktion noch nicht einwandfrei funktioniert (mehr dazu später), ist auch dies Schaltfläche meiner Meinung nach noch wertlos.

Pass 1 Quality: Areashadows werden im Endeffekt nur gefaked. Anstatt eine Lichtquelle (die auch nur einen Schatten wirft) zu verwenden, werden mehrere Lichtquellen benutzt, die schwächer dafür aber über eine Fläche verstreut (siehe Area Light Dimensions) ihr Licht aussenden. Einfach gesagt: Pass 1 Quality gibt an, wieviele dieser Lichtquellen existieren. Bei 1 sind es wenige, je höher die Zahl umso mehr Lichtquellen verteilen sich über die AreaLight-Oberfläche, der Schatten wird exakter. Seht euch die zwei Bilder links an. Ich habe alle anderen Werte auf ein Minimum zurückgeschraubt, um den Effekt besser darzustellen. Das obere Bild zeigt Pass 1 Quality auf einem niedirgen Wert von 1. Das mittlere Bild einen Wert von 3, das untereste einen Wert von 6.

Im oberen Bild sind deutlich drei Schatten zu erkennen, einer direkt unter der Kugel, und zwei die nach links und rechts abweichen. Im mittleren Bild werden schon mehrere Schatten kalkuliert, und im letzten noch mehr. Einleuchtend daß sich dadurch auch die Qulität der Area-Shadows erhöht.

Laut Blur-Anleitung soll man diesen Wert hochdrehen, wenn man Artefakte im Halb-Schattenwurf hat oder sehr kleine Objekte gar keinen Schatten werfen.



Pass 2 Quality: Während Pass1Quality für die primäre Schattenausdehnung zuständig ist, reguliert Pass 2 Quality die Anzahl der im Halbschatten befindlichen "Sub-"Schatten. Dieser Wert sollte immer höher sein wie die Pass 1 Quality. Seht euch die Bilder nebenan an. Hier ist Pass1Quality auf ein Minimum von 1 gestellt.

Im oberen Bild sieht man noch die Auswirkungen von einer Pass 2 Quality auf 1 (wie im oberen Beispiel). Nur der Grundschatten ist sichtbar.

Im mittleren Bild kann man erkennen, wie die von mir genannten "Sub"-Schatten entstehen. Hier wurde die Pass 2 Quality auf 2 gestellt. Es sieht so aus als würde jeder Pass1-Schatten wiederum in zwei (oder sind drei?) Subschatten aufgeteilt, die sich in ihrer Dichte zusammen addieren.

Im letzten Bild wurde Pass 2 Quality auf 3 gestellt. Es sind noch mehr "Sub-"Shadows entstanden, die Qualität verbessert sich langsam.

Laut Anleitung soll man diesen Wert erhöhen um Steifen oder Rauschen im Halbschatten zu vermeiden. Wichtig ist, daß mit sich Pass 1 Quality mit Pass 2 Quality multipliziert, und Pass 2 Quality nochmals mit sich selbst multipliziert. Dummes Beispiel (stimmt nicht ganz, aber so ähnlich verhält es sich zumindest): Wenn ihr Pass 1 auf eins gesetzt habt, und Pass 2 auf eins so wird jeweils nur ein Halbschatten berechnet.
Wird Pass 2 Quality auf 2 erhöht, so habt ihr schon vier Halbschatten (1x2x2). Erhöht ihr auf drei so sind es 9 Halbschatten (1x3x3).

Solltet ihr nun noch die Pass 1 Quality auf 2 erhöhen so werden es 18 Halbschatten (2x2x3x3).
Ich weiß, dieses Beispiel stimmt nicht ganz (in der Blur-Anleitung stehts ausführlicher drin), aber so ähnlich verhält es sich. Die Werte also nicht zu hochschrauben, und wenn ihr es doch tut, dann bitte nicht über enorme Renderzeiten wundern!

 

Blur und Jitter-Amount: Ihr habt nun mehr oder weniger "Sub-"Shadows, die jedoch alle untereinander noch hart abgegrenzt sind. Jetzt kommen Wert wie Blur und Jitter zu Einsatz.

Blur scheint die einzelnen Halbschatten zueinander zu verschieben, ist aber kein richtiger Weichzeichner, wie der Name aber vermuten läßt.

Durch die Verschiebung der einzelnen Halbschatten, werden nur die Ränder des Halbschattens weicher, wie das Bild nebenan zeigt. (Ich habe hier die Ausmaße des Arealights auf 20x20 zurückgestellt, um einen schärferen Schatten zuerhalten). Das obere Bild wurde mit einem Blur von 0 gerendert, das untere mit einem Blur von 50. Es ist deutlich zu erkennen, daß im unteren Bild die Halbschatten weiter auseinander liegen, als im oberen.
Eine direkte Empfehlung für die Größe dieses Wertes kann ich nicht angeben, dennoch denke ich das 50 zuviel sind (nur für ein übertriebenes Beispiel wie hier zu gebrauchen). Tatsache ist, je höher der Blur, umso höher sollte man auch den Jitter Amount einstellen.

Die Störungen die dabei auf der Kugel und dem Bodenquader auftreten, sind eine direkte Folge der Erhöhung des Blurs. Je höher der Blur, umso größer die Wahrscheinlichkeit, daß Polygonkanten ebenfalls einen Schatten auf sich selbst werfen. Dieses Problem beheben wir später noch.

 

Der Jitter Amount, ist ein Störungsfilter, der die einzelnen Halbschatten mit einem Noise (Rauschen) versieht, und somit die harten Kanten unsichbar werden läßt, bzw. sie miteinander "verrauscht". Hier werden Werte zwischen 0.25 und 1.0 empfohlen. Je höher der Blur Wert, umso stärker sollte der Jitter Amount eingestellt werden. Bei hohen Blur Werten sogar über 1.

In der Bildfolge links habe ich folgende Einstellungen für Jitter und Blur verwendet: Der Blur-Wert steht wie zuletzt im obigen Beispiel auf 50, ist also eigentlich recht hoch angesetzt.

Im ersten Bild ist der Jitter Amount noch auf null, gleicht also dem letzten Bild der oberen Bildfolge. Ich habe nur den Kontrast in Photoshop erhöht, um die Auswirkungen des Jitters besser erkennen zu können.

Im zweiten Bild liegt der Jitter Amount bei 0,8. Die Übergange zwischen den einzelnen "Sub"Shadows werden durch die Störungen, die der Jitter Amount nun hinzufügt, verwaschen.

Im letzten Bild ist der Jitter Amount bei 3,0. Aufgrund des hohen Blurwertes von 50 war es nötig ihn über die empfohlene Grenze von 1.0 zu setzen.

Um nun noch ein weicheres Ergebnis zu erhalten sollten die Pass 2 Quality erhöhen, um dieses starke Rauschen zu entfernen. Ich habe dies getan und bin schließlich auf einem Wert von 8 gelandet. Außerdem habe ich die Pass 1 Quality auf 3 gestellt um ein annehmbares Ergebnis zu erhalten (wie ihr in den nächsten drei Bildern sehen könnt, noch nicht perfekt, die Pass1 und Pass2 Quality ist immer noch zu niedrig).

 

Nun noch zur letzten Bildfolge und somit zu "Ray Bias". Ray Bias ist mit der Map-Neigung bei Schattenmaps zu vergleichen (heißt es in der engl. Version nicht auch Bias?). So häßliche Artefakte wie im linken oberen Bild kennt man auch von den Schattenmaps. Besonders auf Kugeln, und in Raumecken (90Grad-Winkeln) treten diese Artefakte auf.

Um dies zu vermeiden muß man den Ray Bias Wert erhöhen. Im oberen Bild steht dieser Wert noch auf null.

Im zweiten Bild habe ich ihn auf 4 erhöht, die Artefakte auf dem Boden und der Kugel sind verschwunden. Nur in der Raumecke (dem 90Grad-Winkel) ist noch ein schwarzer Eigenschatten zu erkennen.

Im letzten Bild ist auch dieser verschwunden, nachdem ich den Ray Bias auf 10 erhöht habe.

Es ist Geschmackssache, aber oft finde ich solche Eigenschatten in Raumecken (wie im mittleren Bild) recht schön. Das gibt einem Bild den oft fehlenden Kontrast, simuliert Schmutz an Ecken und Kanten. Nur übertreiben darf man es eben nicht. Wenn ihr genau hinguckt ist auch im untersten Bild noch ein leichter Streifen zu sehen. Ein wenig stärker noch (Ray Bias also wieder runter) und es wäre perfekt.

Als letztes wäre noch das Coplanare Face Culling (Ausfiltern von koplanaren Flächen) zu erwähnen: Laut Anleitung soll es verhindern das koplanere Flächen (Flächen die im gleichen Winkel zueinander liegen) sich gegenseitg mit Schatten bewerfen. Dies ist z.B. bei Kugeln der Fall. Der Threshold gibt dabei den Winkel an (0-1).

Leider habe ich keine großartigen Auswirkungen feststellen können. Belasst diesen Wert also lieber da wo er ist, und spielt lieber mit dem Ray Bias herum, wenn ihr Probleme mit Eigenschatten (bzw. Artefakten) habt.

 

 

 

 

Zuletzt noch ein kleineres Problem, an dem Blur zur Zeit noch verstärkt arbeitet:
Durch das Ersetzten der Standard Max Raytrace Plugins, mit den Blur-Plugins, hat sich einiges in Eurem Raytracer getan. Das auffälligste ist wohl die Sprachumstellung, wenn ihr die Globalen Raytrace-Einstellungen aufruft (egal ob über den Material-Editor oder über das Lichtmenü). Max spricht nicht mehr deutsch, sondern englisch. Für Benutzer der englischen Version ist dies jedoch keine Neuerung.
Darin liegt jedoch nicht das Problem. Vielmehr ist euch vielleicht schon folgendes Problem aufgefallen. Sobald ihr geraytracede Objekte in eurer Szene verwendet, und in den Raytrace Options, das Antialiasing aktiviert, weißen diese Objekte seltsame Muster in From des Wireframes auf. Blur hat für das nächste Update ein Bugfixing diesbezüglich versprochen. Momentan gibt es nur drei Möglichkeiten dies zu umgehen:

a) man verwendet kein Antialiasing für Raytrace-Objekte. Ist nicht gerade zufriedenstellend. Pixelige Relektionen und Refraktionen sind der Fall.

b) Ihr akiviert unter den Globalen Raytrace Settings die Manuelle Beschleunigung (Manual Acceleration), und verwendet ausschließlich den Singel Pipe Modus. Dabei aber die Grenzüberprüfung (Bounds Checking) deaktivieren!
Der Nachteil dabei: Ihr könnt die RayFX Schatten in die Tonne treten. Eure Objekte werden nicht mehr beleuchtet (totale Schwärze), oder andere kuriose Dinge passieren. Ihr müßt in diesem Fall wieder auf die Standard RaytraceSchatten zurückgreifen, oder (noch schlimmer) wieder ShadowMaps verwenden.
Der Vorteil: Ihr könnt eure Spiegelungen wieder unschärfen (Blur/Defocussierung!). Dies ist nur möglich wenn eure Spiegelungen (oder Refraktionen) tatsächlich antialiased werden.

c) Ihr aktiviert nicht das Antialiasing, sondern das Supersampling. Es wirkt sich auch auf Spiegelungen und Refarktionen aus. Ihr müßt also kein extra Raytrace-Antialiasing verwenden, sondern vollends auf den Supersampler vertrauen. Die RayFX Schatten stört das nicht. Nachteil hier: Ihr müßt auf die Defocussierung/Blur eurer Raytrace-Materialien verzichten. Was aber nicht weiter schlimm ist, viele wissen nicht einmal, daß es so etwas gibt ;-).

Wer dennoch nicht genug haben sollte, muß noch bis August warten. Dann möchte Blur eine neue Version Ihrer RayFX herausbringen. Damit sollen dann sogar Dinge wie Caustics, Global Illumination, Radiosity usw.. möglich sein. In der Blur Gallery könnt ihr schon mal gucken was uns erwarten wird. Lassen wir uns überraschen!

Alles wird gut, wie Nina Ruge immer zu sagen pflegt ;-) und Bilder wie dieses sind dann auch kein Problem mehr (Möglichkeit c) !). Auch wenn's auf einem Dual600er (512mb) 56 Minuten gedauert hat...

Zu dem Rauch wird's vielleicht demnächst auch ein Tutorial geben. Er ist auch animierbar!

 

 

© 2000 Andreas Skrzypnik / lightrays.de

93Grad - design und animation für entertainment