Blender Dokumentation/ Tutorials/ Special Effects/ Feuer 2.46

Aus Wikibooks
Diese Seite bezieht sich auf Blender v2.46
Abbildung 1: Partikelfeuer.

Vordergründig geht es diesem Tutorial darum, wie man den Eindruck von animiertem Feuer erzeugt. In Wirklichkeit geht es um Kontrolle, Wahrnehmung und Illusion.

Es gibt sehr viele verschiedene Möglichkeiten, den Eindruck von brennendem Feuer zu erzeugen. Hier wird eine Möglichkeit von vielen vorgestellt, die Idee dazu stammt von Francois Grassard. Auf seiner Webseite gibt es ein Videotutorial dazu. Ich kürze einige Schritte ab und zeige gleich die Ergebnisse, flechte allerdings einige Elemente ein, die eher zeigen sollen wie bestimmte Teile des Partikelsystems zusammenarbeiten.

Mittlerweile ist das Tutorial auch in leicht abgewandelter Form im Blenderart-Magazin Nr. 16 erschienen, dort können Sie sich eine Beispiel-Datei herunterladen.

Der grundsätzliche Ablauf ist folgendermaßen:

  1. Man erzeugt ein Partikelsystem.
  2. Jedes Partikel bekommt ein Kugelobjekt zugewiesen.
  3. Das Partikelsystem wird durch verschiedene Kraftfelder bewegt, bis eine realistisch erscheinende Flammenbewegung erzeugt wird. Das ist der Teil mit der Kontrolle.
  4. Die Größe der Kugelobjekte wird animiert, von klein auf groß und zurück (werden und vergehen).
  5. Die Kugelobjekte bekommen ein transparentes Material mit hohem Glanzlichtanteil (keine Halos).
  6. Die Glanzlichter der Kugeln werden durch Filtereffekte verstärkt (Glow) und anschließend verwischt (Blur). Insbesondere wird Vectorblur verwendet, also eine Bewegungsunschärfe. Soweit zur Wahrnehmung.

Die verwischten Glanzlichter der Kugelobjekte erzeugen zusammen mit ihrer Bewegung den Eindruck einer sich bewegenden Flamme. Das ist die Illusion.

Ich nehme für dieses Tutorial an, dass ich die Grundlagen der Bedienung von Blender nicht mehr erläutern muss.

Das Partikelsystem[Bearbeiten]

Abbildung 2: Emitterobjekt und Objekt, das später von den Partikeln getragen wird (Spark).
  • Fügen Sie eine Icosphere ein (in das Zentrum des Weltkoordinatensystems). Dieses Objekt wird später als Partikel gerendert. (Wichtig! Das Objekt, welches später zum Partikel wird, muss unbedingt auf Loc 0,0,0 liegen, weil sich sonst die Animation der emittierten Partikel genau um den Abstand zu Loc 0,0,0 verschiebt! Dies ist wichtig, wenn das Feuer in eine vorhandene Scene kommen soll, wo es sich nicht zwangsläufig in der Mitte befindet.)
    • Skalieren Sie die Icosphere auf eine Größe von 0.1.
    • Das Objekt bekommt den Namen "Spark" [Funke].
  • Als Emitterobjekt fügen Sie eine weitere Icosphere ein, dieses bekommt den Namen "Emitter" (Abb. 2).
  • Fügen Sie ein Partikelsystem mit 3500 Partikeln hinzu (Abb. 3a):
    • Name FlameLarge
    • Typ Emitter
    • Sta: 1
    • End: 250 (eben so lange, wie die Animation dauern soll)
    • Life: 45 (die Lebensdauer muss passend zur Höhe des Feuers gewählt werden)
    • Emit from: Random/Faces/Even/Random
    • Initial Velocity: Random: 0.08
    • AccZ: 4.70 (damit bewegen sich die Partikel nach oben)
    • Auf dem Visualisation-Panel stellen Sie den Typ Object ein, und tragen das Spark-Objekt ein.
    • Emitter aktivieren, damit das emittierende Objekt auch gerendert wird.

Geben Sie dem Emitter ein zweites Partikelsystem. Es soll fast identische Eigenschaften haben, nur kleinere Funken erzeugen (Abb. 3b).

  • Klicken Sie auf dem Particle System-Panel auf den Pfeil rechts neben 1 Part 1. Das Button-Fenster leert sich, nur das Particle System-Panel bleibt. In dem Feld steht jetzt 1 Part 2.
  • Wählen Sie mit dem Doppelpfeil neben dem Add New-Button das Partikelsystem Flame Large aus.
  • Klicken Sie auf die Zahl "2" neben dem Pa:-Feld und bestätigen Make local. Die Zahl zeigt an, dass das Partikelsystem Flame Large zweimal benutzt wird, durch Make local kopieren Sie die Einstellungen in ein eigenständiges System.
  • Ändern Sie folgende Einstellungen:
    • Name FlameSmall
    • Random: 0.1 (etwas größere Variation der Anfangsgeschwindigkeit)
    • Seed: 1 (damit beginnt das Zufallssystem von Blender mit anderen Startwerten, sonst sind große und kleine Partikel parallel)
    • Size: 0.1 (das Spark-Objekt wird damit auf 1/10 verkleinert dargestellt)
    • Rand: 0.1 (die Größe wird noch leicht variiert)
Abbildung 3a: 1. Partikelsystem für Emitter.
Abbildung 3b: 2. Partikelsystem für Emitter.

Jetzt bewegen sich Partikel nach oben, und es gibt eine leichte Variation der Bewegung.

Beeinflussen der Bewegung der Partikel[Bearbeiten]

Um die Flamme zu bewegen und zu formen, verwenden wir drei verschiedene Kräfte:

  1. Ein Lattice um die Partikel an der Spitze des Feuers zusammenzuhalten.
  2. Wind, um die Flamme im Ganzen zu bewegen (damit habe ich in Abb. 1 vielleicht etwas übertrieben).
  3. Ein Texture-Kraftfeld mit einer Textur, die ein bisschen Unregelmäßigkeiten in das Geschehen bringen soll.
Abbildung 4a: Lattice und Lattice-Modifier

Grundsätzlich muss jedes Objekt, welches einen Einfluss auf ein Partikelsystem ausüben soll, mit seinem Emitter eine gemeinsame Ebene teilen. Ein Kraftfeld des Emitterobjektes selbst übt keine Wirkung auf das Partikelsystem aus.

  • Fügen Sie ein Lattice-Objekt hinzu, erhöhen die W-Unterteilung auf 5 und bringen es in die gewünschte Form (Abb. 4a).
  • Benutzen Sie einen Lattice-Modifier für das Emitter-Objekt. Das Lattice beeinflusst jedes vor ihm stehende Partikelsystem.
  • Damit das Lattice nicht auch das Emitterobjekt verformt, tragen Sie den Namen einer nichtexistierenden Vertexgruppe in den Modifier ein.


Abbildung 4b: Animiertes Wind-Kraftfeld
  • Fügen Sie ein Empty hinzu und drehen es so, dass seine Z-Achse senkrecht zum Feuer zeigt.
  • In den Object->Physics-Buttons auf dem Fields-Panel tragen Sie ein Wind-Kraftfeld ein.
  • Die Stärke des Wind-Kraftfeldes wird animiert. Fügen Sie zunächst einen Ipo-Key mit der Maus über dem Button-Fenster ein I->Force Strength.
  • Verwenden Sie im Ipo-Fenster die Curve->Record Mouse Movement-Funktion, mit der sich leicht eine zufällige Kurve für die Force Strength erzeugen lässt.
    • Im Ipo-Fenster: Curve->Record Mouse Movement, Auswahl Still. In der Werkzeugleiste des 3D-Fensters (wer hat sich das ausgedacht?) erscheint die Kurzanleitung zu dieser Funktion.
    • Drücken Sie Strg und bewegen die Maus horizontal hin- und her. Dabei läuft der Framecounter, und die horizontale Bewegung der Maus wird in Kurvenausschläge umgesetzt (leider noch nicht zu sehen).
    • Wenn Sie Strg loslassen, hält der Framecounter an.
    • Mit Space [Leertaste] schließen Sie die Aktion ab, die aufgezeichnete Mausbewegung wird als Ipo-Kurve umgesetzt.
  • Die Ipo-Kurve wird passend verschoben und skaliert (Abb. 4b).


Abbildung 4c: Texture-Feld für die Unordnung

Das Texture-Kraftfeld bringt nun weitere Unordnung in das System. Wir können Texturen nur an Materialien oder an die Welt gebunden erzeugen, in diesem Fall nehmen wir das Material des Emitterobjektes, lassen die Textur aber nicht anzeigen.

  • Weisen Sie dem Emitter das Default-Material zu, oder erzeugen Sie ein neues Material mit einer Textur.
  • Entfernen Sie auf dem Texture-Panel den Haken vor der Textur, damit wird sie nicht angezeigt.
  • Wechseln Sie in die Texture-Buttons und wählen als Textur-Typ Distorted Noise (es spielt im Grunde keine Rolle, welchen Noise-Typ Sie wählen, Hauptsache es gefällt Ihnen).
  • Nennen Sie die Textur "DistNoise".
  • Fügen Sie ein weiteres Empty als Träger des Kraftfeldes ein.
  • In den Physics Buttons weisen Sie dem Empty ein Texture-Feld zu, Stärke 0.4, als Texturname wählen Sie "DistNoise".

Alle anderen Einstellungen müssen Sie nicht ändern. Das schöne an einem Texture-Feld ist, dass es sich um ein echt dreidimensionales Kraftfeld handelt, es seine Stärke also von Punkt zu Punkt ändert.



Animation der Kugelgröße[Bearbeiten]

Abbildung 5: Animation der "Spark"-Größe

Um das Entstehen und Vergehen der Partikel zu animieren, wird die Kugel skaliert. Da an Partikel gebundene Objekte ihre eigene Zeit mitbringen, muss die Animation in 45 Frames - der Lebensdauer der Partikel - geschehen. NB: bei Texturen ist das anders, dort werden in der Standardeinstellung 100 Frames Ipo-Kurve auf die Lebensdauer der Partikel gemappt, allerdings lässt sich die verwendete Zeit auch umstellen.

  • Skalieren Sie das "Spark"-Objekt in Frame 1 auf eine Größe von 0.05, und fügen einen Ipo-Key ein.
  • Wechseln Sie in Frame 11, und skalieren das Objekt auf eine Größe von 0.2. Wieder einen Ipo-Key einfügen.
  • Wechseln Sie nun in Frame 45, skalieren das Objekt auf die Größe 0,001 (!) und fügen den letzten Ipo-Key ein. (Ein Skalieren auf 0 würde einen Fehler bei der Animation in Frame 45 ergeben; das Bild würde in diesem und allen folgenden Frames schwarz werden.)

Bringen Sie die Ipo-Kurve in eine hübsche Form, damit es zu nicht so abrupten Formwechseln kommt und die Kugeln die passende Lebensdauer haben.



Material und Beleuchtung[Bearbeiten]

Das Kugelobjekt bekommt nun ein Material, das zum einen recht durchsichtig ist, und zum zweiten einen hohen Spec-Wert [Glanzlicht] hat. Die Glanzlichter an der Oberfläche der Kugeln erzeugen das helle Feuer.

  • Das Material bekommt ZTransp mit einem Alpha-Wert von 0.2.
  • Specularity 2.0 und Hard 200. Viele Bereiche im Zentrum der Flamme sind später weiß, wenn die rein weißen Flächen verringert werden sollen, müssen Sie die Specularity verringern.
  • Die Grundfarbe wird Orange, die Spec-Farbe ein helles Gelb.
Abbildung 6: Material für das "Spark"-Kugelobjekt.
  • Für das Emitter-Objekt aktivieren Sie Shadeless, die Materialfarbe stellen Sie auf Schwarz.

Eine einzelne Lamp-Lampe beleuchtet die Szene.

  • Lampenenergie 3.0, keine Schatten, also RayShadow bitte ausstellen.

Die hohe Lampenenergie zusammen mit dem hohen Spec-Wert erzeugt die sehr intensiven Glanzlichter, damit auch die Objekte in der Mitte der "Flamme" leuchten, darf die Lampe keine Schatten werfen.

  • Die Welt wird schwarz, die Horizontfarbe also einfach auf Schwarz stellen.


Und so sollte die Animation nun im 3D-Fenster aussehen (Abb. 7).

Abbildung 7: Partikelanimation im 3D-Fenster.



Compositing[Bearbeiten]

Im letzten und wichtigsten Schritt wird aus den einzelnen Objekten Feuer erzeugt, indem man die Bilder der einzelnen Objekte verwischt.

Szenen-Einstellungen[Bearbeiten]

In den Szene-Buttons müssen Sie folgende Einstellungen vornehmen.

  • Auf dem Render Layers-Panel aktivieren Sie Vec, da das gleich für den Vector-Blur Node gebraucht wird.
  • Auf dem Anim-Panel aktivieren Sie Do Composite.

Nodes[Bearbeiten]

  • Öffnen Sie ein Node-Fenster.
  • Aktivieren Sie Composite Nodes und Use Nodes. Ein Render Layer- und ein Composite-Node werden automatisch eingefügt.
  • Add->Filter->Vector Blur.
  • Verbinden Sie Image-, Speed- und Z-Ausgang des Render Layer-Nodes mit den entsprechenden Eingängen des Vector Blur-Nodes.

Der Vector Blur-Node sorgt für eine geschwindigkeitsabhängige Unschärfe. Die Schlierenbildung in heißer Luft, das Züngeln der Flammen wird nun im Anschluss mit einem Displace-Node erzeugt. Als Eingabewert des Displace-Node dient ein ganz leicht vergrößertes Bild.

  • Add->Distort->Scale, Skalierungsfaktor für X und Y jeweils 1.05.
  • Verbinden Sie den Vector Blur-Ausgang mit dem Scale-Node.
  • Add->Vector->Map Value, Offset: -0.5
  • Verbinden Sie den Ausgang des Scale-Node mit dem Map Value-Node.
  • Add->Distort->Displace, X/Y Scale: -10.00
  • Verbinden Sie den Image-Ausgang des Vector Blur-Node mit dem Image-Eingang des Displace-Nodes, und den Value-Ausgang des Map Value-Nodes mit seinem Vector-Eingang (Abb. 8a).
Abbildung 8a: Aus den gerenderten Kugeln entsteht mit Vector-Blur und Displace bereits eine recht ansehnliche Flamme.

Im nächsten Schritt verstärken wir die Glanzlichter. Ein Color Ramp-Node selektiert die hellen Bereiche des Bildes, diese werden dann über einen Add-Node verstärkt. Damit die Übergänge nicht zu abrupt verlaufen, wird der Vorgang mit einem geblurten Bild wiederholt.

  • Add->Convertor->Color Ramp, der Image-Ausgang des Displace-Nodes wird mit dem Fac-Eingang verbunden.
  • Den Schwarz-Wert der Color Ramp schieben Sie nach rechts, ca. auf 60%.
  • Add->Color->Mix, den Mix-Node auf Add stellen, Fac: 1.0.
  • Den Ausgang des Displace-Node (oben) und der Color Ramp (unten) mit dem Add-Node verbinden.
  • Add->Filter->Blur, Filter Type->Gauss, X/Y: 20.
  • Der Image-Ausgang der Color Ramp kommt in den Image-Eingang des Blur-Node.
  • Der gerade hinzugefügte Add-Node wird dupliziert, der Faktor auf 2.0 gestellt.
  • Der Image-Ausgang des ersten Add-Node wird oben mit dem zweiten Add-Node verbunden, der Image-Ausgang des Blur-Node mit dem unteren Eingang des zweiten Add-Node (Abb. 8b).
Abbildung 8b: Die hellen Bereich werden verstärkt.

Im letzten Schritt wird der Kontrast des Bildes verstärkt, indem die dunklen Bereiche weiter abgedunkelt werden, und noch ein allgemeines Glühen hinterlegt.

  • Add->Color->RGB Curves, stellen Sie eine etwa parabelförmige Kurve ein.
  • Der Image-Ausgang des zuletzt hinzugefügten Add-Nodes wird mit dem RGB Curves-Node verbunden.
  • Add->Filter->Blur, Type: Gauss, X/Y: 40.
  • Add->Color->Mix, auf Add stellen, Fac: 1.0.
  • Verbinden Sie den Image-Ausgang des RGB Curves-Node mit dem Blur-Node und dem oberen Eingang des Add-Node.
  • Verbinden Sie den Ausgang des Blur-Node mit dem unteren Eingang des Add-Node.
  • Verbinden Sie den Ausgang des Add-Node mit dem Eingang des Composite-Node (Abb. 8c).
Abbildung 8c: Der Abschluss des Composite Nodes-Setup.

Das war das vollständige Setup. Viel Erfolg mit diesem Tutorial!