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!