Tutorial von Stefan Bredereck - Jan 2005

(All rights reserved)

Dieses Tutorial soll einen Weg aufzeigen, wie man einen Vampir in Jenseits befördert.

Als Vorbild dienen die „Blade“-Filme, in welchen jeder von Silber durchbohrte Vampir in eine Wolke aus Glut, Russ- und Ascheteilchen zerfällt. Zur Veranschaulichung dient hier allerdings nur ein Schädel. Die Methodik sollte aber auf nahezu jede Form von Geometrie übertragbar und in vieler Hinsicht erweiterbar sein.

Voraussetzungen: LW 8.0.1+, Schneller Rechner und natürlich das Lightwave-Projekt.

Teil 1 – Das Auflösen

Nach dem Entpacken der „BladeFX_by_Brederock.zip“ starten wir den LW Layouter, verändern den Content Pfad auf das Tutorialprojekt und laden die „BladeFX_Default.lws“ Szene.

Als erstes betrachten wir uns den Szenenaufbau im Scene Editor. Hier finden wir die Camera mit CameraTarget (Null), 3 Lichtquellen (zwei Fill Distant Lights ohne Schatten & Specular sowie ein Key Spot) und ein Nullobjekt, welches zwei Varianten unseres Schädels untergruppiert beherbergt. Die „HighRes“ Variante soll gerendert werden, die „LowRes“ Variante dient später als ParticleFX Emitter wird selbst aber nicht gerendert.

Aber bevor wir zu den Partikeln kommen, kümmern wir uns erst um das Auflösen des Schädels. Das erste was wir brauchen ist ein Steuerobjekt, welches die Position, Richtung und Geschwindigkeit der Auflösung definiert.  Mit „Add > Null“ erzeugen wir dieses und benennen es „BurnPos“, weil es die Stelle bestimmt. an der unser Schädel verbrennt.

Wir animieren das „BurnPos“ Nullobjekt von Position Z(-7m ) bei Frame 0 auf Z(5m) bei Frame 100. Das Auflösen soll also etwas weniger als 4 Sekunden andauern. Wir brauchen aber noch eine zweites Null-Objekt welches als Versatz dienen soll, damit wir den Gradient korrekt anlegen können. Wir nennen es „GradientOffset“ und gruppieren es an das animierte „BurnPos“ (Parent in Place sollte abgeschaltet sein!). Jetzt fehlt nur noch der Versatz: Z(20m) womit das Objekt die Animation des Übergeordneten „BurnPos“ mitmacht, aber eben 20 Meter weiter hinter dem Schädel.

Jetzt können wir uns dem Shading zu wenden. Wir öffnen den SurfaceEditor, zusammen mit dem VIPER. Nicht das einmalige Berechnen eines Bildes (F9) vergessen, damit der VIPER auch mit Information gefüttert ist.

Als ersten schauen wir uns den Texture Editor von Luminosity an (T-Button). Da bisher kein Texturlayer vorhanden war, erzeugt Lightwave automatisch einen. Den „Layer Type“ ändern wir in Gradient, als „Input Parameter“ wählen wir „Z Distance to Object“ und wählen darunter unser „GradientOffset“ Null aus.

Erst soll ja der Schädel nicht glühen weshalb wir zwei Parameter, bei 0m und bei 18m mit „Value“ 0% erzeugen. Bei 20m soll das Objekt ja verbrannt sein, also an der Stelle wo unser „BurnPos“ sitz, also brauchen wir dort ein hohes Value von 200%. Dabei wird für alle Parameter als „Smoothing“ „Linear“ eingestellt.Wenn man sich nun die Zeit nehmen möchte kann man ein Preview im VIPER Fenster rechnen lassen (Preview > Make Preview). Dann sollte der Schädel animiert von vorn nach hinten aufglühen.

Leider will es so gar nicht nach verbrennen aussehen, da alles noch sehr linear aussieht. Wir müssen also den Gradient modulieren und dazu bietet sich ein prozeduraler Texture Layer an, welchen wir unter dem Gradient Layer anlegen. Bevor wir die Einstellungen an dem neuen Layer verändern, zeihen wir den Timeline Slider auf Frame 20. Im Viper sollte der vordere Teil des Schädels nun wie gehabt glühen.

Als „Blending Mode“ wählen wir „Texture Dipslacement“ womit der darüber liegende Gradient verzerrt wird. „Layer Opacity“ setzen wir auf 400% da wir eine starken Verzerrungseffekt erzeugen wohlen. Als „Procedural Type“ wählen wir „Smoky3“ mit den Einstellungen „Texture Value“ = 100%, „Frequencies“ = 6, „Contrast“ = -25%, „Small Power“ = 0.6 und ganz wichtig für eine Eigenbewegung der Textur, „Turbulence(m/s)“ = 4.0.

Nun sollten wir die Textur noch von der Größe her anpassen. Hier geben wir bei „Scale“ X=5m, Y=5m und Z=10m ein.

Macht man jetzt ein Preview im VIPER Fenster, sieht der Übergang schon deutlich chaotischer aus, aber die Farbe erinnert immer noch nicht an Verbrennungen 12ten Grades.

Bevor es weiter geht gehen wir im Texture Editor auf Copy > All Layers, um eine Kopie unserer Texturebenen im Zwischenspeicher abzulegen.

Nun wechseln wir auf den „Texture Editor“ von „Color“, und benutzen „Paste > Replace All Layers“, um unsere Texturebenen einzufügen. Der Layer  „P:Smoky3“ wird wie folgt modifiziert: „Layer Opacity“ = 750% und “Texture Color“ = 255 255 255. Der Gradient ist hier das wichtigste Element, da er die Farbe der Verbrennung bestimmt. Er muss stark verändert werden:

1.) „Parameter“ 0m;  „Color“  211 159 084; Alpha 0%; 2.) „Parameter“ 18m;  „Color“  211 159 084; Alpha 0%; 3.) „Parameter“ 18,75m;  „Color“  211 159 084; Alpha 100%; 4.) „Parameter“ 19,5m;  „Color“  255 074 005; Alpha 100%; Alle Parameter bleiben beim „Smoothing“ auf „Linear“.

Nach einem Preview sollte nun ein feuerähnlicher Verlauf über den Schädel schnellen. Natürlich ist jedem freigestellt besser Farben einzustellen oder komplexere Gradients zu benutzen, aber für das Tutorial sollen diese Shading Einstellung fast reichen. Ganz wichtig ist noch in unserem Material „Double Sided“ einzuschalten. Damit wir auch die Innenseite des Schädels beim Auflösen sehen.

Jetzt muss der Schädel sich nur noch wirklich auflösen. Dazu schließen wir alle Editoren und öffnen die „Object Properties“ unseres „HighRes“ Schädels. Im Register „Render“ finden wir die „Clip Map“.

Ein Click auf das T offenbart uns einen üblichen „Texture Editor“. Auch hier „Pasten“ wir mit „Replace All Layer“ unseren beiden Texturebenen aus der „Luminosity“ rein.

Der „Smoky3“ Layer wird wie folgt modifiziert: „Blending Mode“ = „Normal“, „Layer Opacity“ = 100% und  „Contrast“ = 75%.

Auch der Gradient muss wieder angepasst werden: „Blending Mode“ = „Multiply“ und der Parameter bei 20m wird auf 22m verschoben. Diese Veränderungen sind zum Teil notwendig weil „Blending Mode“ „TextureDisplacement“ nicht ganz mit „Clip Mapping“ funktioniert. An dieser Stelle machen wir ein Kopie der beiden Texturebenen in den Zwischenspeiche, da wir sie später an anderer Stelle wieder brauchen. (Copy > Copy All Layer)

„Clip Mapping“ bedeutet das optische Löschen von Objekten. Da wo eine Textur oder ein Gradient 100% oder mehr als Wert hat ist das Objekt unsichtbar, darunter sichtbar. Hier geht es keinesfalls um Transparenz sondern um das echte partielle Fehlen von Polygonteilen.

Wer nun also die Animation mal richtig (nicht VIPER) durch rechnen lässt oder denn Luxus genießt „F-Prime“ sein eigen zu nennen, kann sich von der fertigen Illusion überzeugen. Der Schädel löst sich von der Nase angefangen bis zum Hinterkopf feurig auf.

Teil 2 – Partikel

Für das komfortable weitere bearbeiten sollte man das gerenderte Zwischenergebnis gespeichert halten. Ich habe eine Bildsequenz im Jpeg-Format in das Images Verzeichnis gespeichert. Diese Sequenz laden wir im „Image Editor“ ein, indem wir das erste Bild der Sequenz laden und bei „Source > Image Type“ stellen wir statt „Still“ auf „Sequence“. Da wir von Frame 1 bis 100 gerechnet haben, müssen wir das „Start Frame“ auf 1 stellen. Diese Sequenz wolle wir in den Hintergrund unserer Kamera Ansicht packen, damit wir die Partikel genau auf das Auflösen des Kopfes justieren können.  Dazu gehen wir zum Menu „Scene > Effects > Compositing > Background Image“ und wählen dort unsere Sequenz aus. Jetzt müssen wir Lightwave nur noch sagen, das es bitte auch im OpenGL Kamera Fenster den Hintergrund anzeigt. Dazu müssen wir in die „Display Options“, wenn nicht verändert, mit einem Druck auf die Taste „d“. Unten gibt es  den Punkt „Camera View Background“ welcher auf „Background Image“ verändert wird.

Das Auflösen wird ja in Lightwave im OpenGL Fenster nicht in Echtzeit dargestellt, aber mit unserer „Image Sequence“ im Hintergrund der Kamera Ansicht sehen wir genau, was wann vor sich geht. Dazu muss das Fenster oben auf „Camera View“ und daneben der Display Mode sollte auf „Bounding Box“ stehen, da dies zwar für alle Objekte nicht aber für die Partikel gilt. Bewegt man sich nun auf der Timeline vor und zurück sieht man den auflösenden Schädel im Hintergrund und vorn unsere Null Objekte und die Bounding Box unseres Schädels. Nun kann es endlich mit den Partikeln losgehen.

Für Partikel brauchen wir als erstes einen geeigneten „Emitter“. Dazu gehen wir nun in die „Object Properties“ des „Low Res“ Schädels. Im letzten Menupunkt „Dynamics“ wählen wir unter „Add Dynamic“ „Emitter“ aus.

Ein Doppelklick auf „FX Emitter“ öffnet die Eigenschaften unserer Partikelquelle. Nun müssen wir einige Einstellungen vornehmen.

„Birth Rate“ = 750, „Generate by“ = „Frame“, „Nozzle“ = „Sphere“, „Size Effect“ = „Size(no change)“, “Generator Size” X=7m, Y=9m, Z=8m und „Particle Limit“ = 7500. Wir benutzen nur für das schnelle Einstellen als Emitter „Sphere“ da der später zu benutzende „Object-Surface“ Modus wirklich sehr langsam berechnet wird.

Jetzt müssen wir in den „Texture Editor“ vom Menupunkt „Birth Rate“ gehen. Mit „Paste > Replace All Layer“ fügen wir die Texturebenen aus dem Zwischenspeicher ein, welche wir am Ende des ersten Tutorialteil angelegt haben. Der Gradient muss grundlegend verändert werden. Die Parameter sehen wie folgt aus:         

1.) bei 0m > „Value“ = 0 und „Alpha“ = 100%; 2.) bei 18m > „Value“ = 0 und „Alpha“ = 100%; 3.) bei 18,5m > „Value“ = 25000 und „Alpha“ = 100%;

4.) bei 19m > „Value“ = 0 und „Alpha“ = 100%.

Der „Smoky3“ Layer  wird beim „Texture Value“  nur auf 0 gesetzt. Jetzt haben wir erreicht, das unser Schiebetrick auch Partikel erzeugt und zwar genau da wo der Schädel verbrennt. Trotzdem will die Partikel Bewegung, welche wir, für ein korrektes Berechnen, jedes mal mit dem „Calcutate“ Button erzeugen, nicht so recht interessant aussehen. Die Teilchen sollen ja nach unten fallen und vorher wild durch die Gegend wirbeln. Deshalb verändern wir folgende Partikelparameter:

Menu „Particle“:

„Particle Weight“ =1, „+-„=0,5; „Particle Resistance“ =1, „+-„=0,25; „Life Time(frame)“ = 50.

Menu „Motion“:

„Explosion(m/s)“=2; „Vibration(m/2)“=12; „Vibration(min)“=25%.

Menu „Etc“:

„Gravity(m/s^2)Y“=-10.

Nun fehlt noch etwas Einfluss von „außen“. Wir brauchen dazu zwei Wind-Felder. Wichtig ist das die Partikel im Fenster nur dann sichtbar sind, wenn der „LowRes“ Schädel selektiert ist, da das Objekt über „Dissolve“ unsichtbar fürs Rendering gemacht wurde.

Über „Items > Add > Dynamic Obj > Wind“ erzeugen wir das erste Windfeld welches wir „Random_Wind“ nennen.

Die Einstellungen sehen wie folgt aus: „Wind Mode“= „Random“, „Blend Mode“= „Heavy Wind“, „Falloff“ = „OFF“ und „Power“ = 200%.

Dann erzeugen wir ein zweites Windfeld namens „Direction_Wind“ mit folgender Einstellungsveränderung: „Falloff Mode“ auf „OFF“. Außerdem müssen wir dieses Windobjekt noch auf drehen, um die Windrichtung festzulegen: -50° für „Rotation Heading“ (H) und „Rotation Pitch“ (P).

Unsere Eingabearbeit sollte nun mit einem Druck auf „Calculate“ belohnt werden. Jetzt sieht alles schon dynamischer aus. Manchmal kann es passieren, das Lightwave die Partikel nicht berechnet. Da hilft einfach im Menu „Generator“ die „Birth Rate“ nochmals einzugeben, also einfach noch mal 750 eingeben und neu „Calculate“ drücken. Dieser Bug kommt meist dann vor, wenn man die Szene gespeichert hat. Dann sind manchmal alle Partikel weg und der User ist verwundert. Dies passiert aber nicht mit Partikel, welche samt ihrer Bewegung in eine Datei gespeichert wurden, also „gebaked“ in einer „*.pfx“ Datei vorliegen. Also wer wie ich auf Nummer sicher gehen will, sollte vor jedem „Calculate“ drücken, kurz die „Birth Rate“ eingeben.

Doch bevor diese Datei erzeugen, müssen wir die Daten erst korrekt berechnen. Dazu schalten wir nun im Menu „Generator > Nozzle“ auf „Object-Surface“.  Damit die Partikel auch noch Zeit haben sich in Ruhe aufzulösen, verlängern wir die Timeline unten Rechts von 100 auf 150.

Wir sind jetzt auch vom vielen Arbeiten sehr durstig und wollen ein Pause machen, oder? Das trifft sich den wenn wir nun Calculate drücken, können wir dies je nach Rechnerleistung getrost tun. Damit sich die Rechenzeit in Grenzen hält, haben wir die „LowRes“ Version benutzt und sparen somit eine Menge Zeit.

Sobald der Rechner fertig ist sollte man im Partikelmenu „File“ den „Save Motion“ Button drücken und die Bewegung z.B. als „BladeFx_Particles.pfx“ im Projekt speichern. Nun greift Lightwave auf diese Datei zurück und das Arbeiten sollte nun deutlich schneller und komfortabler ablaufen. Spätestens jetzt sollte man die Szene und Objekte auch mal speichern („Save Scene“ und „Save All Objects“). Bevor wir uns nun den Shading der Partikel zuwenden schalten wir unsere Kamerahintergrundsequenz ab, da wir sie nun nicht länger benötigen. (Scene > Effects > Compositing > Background Image > (none))

Nun öffnen wir uns ein „VIPER“ Fenster und das „Hypervoxel“ Menu. In der Liste unter „Object Name“ aktivieren wir per Doppelklick „Skull_Default:LowRes“. Nun folgen eine Menge Einstellungen:  „Object Type“ = Sprite;

 Menu „Geometry“:

„Particle Size“ = 20cm; „Size Variation“ = 250%; „Stretch Direction“ = „Velocity“; „Stretch Amount“ = 125%; „Maintain Volume“ & „Align To Path“ = ein;

Menu „Shading" :

„Color“ = 211, 158, 084; „Luminosity“ = 2500%; „Density“ = 75%; „Light 1“ = (none);

Menu „Hypertexture Texture“ :

„Turbulence“; „Frequencies“ = 6; „Contrast“ = -50%; „Texture Amplitude“ = 200%; „Texture Effect” = „Turbulence“; „Effect Speed“ = 20%;„Scale X, Y,Z“ = 2m.

Nun folgen noch zwei Gradients: Auf „Particle Size“  ein 3 Punkteverlauf:

„Input Parameter“ = „Particle Age“; 1.) Parameter 0 > „Value“ = 0%; Alpha = 100%; 2.) Parameter 2 > „Value“ = 100%; Alpha = 100%; 3.) Parameter 50 > „Value“ = 0%; Alpha = 100%;

Das hilft gegen das Reinploppen der Partikel und sorgt auch für ein weiches Ausblenden.

Den zweiten Verlauf erzeugen wir auf der „Color“ im „Shading“ Menu:

„Input Parameter“ = „Particle Age“ 1.) Parameter 0 > „Color“ = 255,000,000; Alpha = 0%; 2.) Parameter 50 > „Color“ = 000,000,000; Alpha = 100%;

Des gibt den Partikeln eine dynamische Farbveränderung in Abhängigkeit zu ihrem Alter.

Jetzt sind wir fertig und müssen nur noch Rendern. Dazu sollten in den Kameraeinstellungen noch Format, Qualität und nach Wunsch noch Bewegungsunschärfe eingestellt werden. Außerdem sollten noch bei den „Render Options“ Dateiformat, Name und sowie „Render Last Frame“ auf 150 eingestellt werden. Auch „Ray Trace Shadows“ sollte nun angeschaltet werden. Und wenn alles funktioniert hat sollte sich, nach fertiger Berechnung, ein Schädel in Blade Art und Weise auflösen.

Finale Animation.

Alle Einstellung können und sollten natürlich noch weiter verfeinert oder verändert werden. Man könnte zum Beispiel mehrere Emitter benutzen um verschieden Partikelstile zu verwenden, für Asche und andere Effekte. Komplexer wird es natürlich wenn noch die Haut des Vampirs zu berücksichtigen ist. Die verbrennt als erstes mit mehr Russ und Qualm während der Knochen sich erst danach auflöst mit anderen spezifischen Partikeln. Es gibt unendliche Möglichkeiten, und je nach Produktionszeit kann man hier unglaublich ins Detail gehen. Zum Vergleich oder für die Profis findet man auch eine „BladeFX_Default.lws“ Datei mit dem Endergebnis des Tutorials. Viel Spaß beim ausprobieren.