Damit wir uns auf die Arbeit mit den neuen Funktionen konzentrieren können, habe ich im Paket mit den Begleitmaterialien eine Projektdatei vorbereitet: PSD_R21_VektorVolumen_start.c4d. Sie enthält ein parametrisches Kugel-Objekt und zwei Partikel-Emitter, die von oben bzw. unten auf die Kugel gerichtet sind. Ziel dieses Tutorials soll sein, dass die ausströmenden Partikel auf die Kugel treffen und sich dort in alle Richtungen verteilen.
Sehen wir uns die Bestandteile der Szene kurz an. Beide Partikel-Emitter besitzen die gleichen Einstellungen: Sie stoßen 500 Partikel bis Bild 300 aus, wobei die Lebensdauer der Partikel 1000 Bilder beträgt, was bis zum Ende der Animationslänge reicht.
Ein Klick auf den Abspielbutton zeigt, dass die Partikel beider Emitter im Moment noch unbeeindruckt durch die Kugel wandern. Das wollen wir jetzt ändern.
Aufbau des ersten Vektoren-Feldes
Wir beginnen, indem wir aus der von der Kugel vorgegebenen Geometrie ein erstes Vektoren-Feld generieren. Es soll die auftreffenden Partikel per Zufallsmuster um die Kugel leiten.
Dazu holen wir uns als Erstes einen Volumenerzeuger aus dem Menü Volumen.
Anschließend legen wir das Kugel-Objekt per Drag-and-drop über den Objekt-Manager als Unterobjekt in den Volumenerzeuger. Im Moment ist dort als Volumentyp noch das Distanzfeld angegeben, deshalb baut der Volumenerzeuger unsere Kugel derzeit noch aus Voxeln nach.
Um die Kugel stattdessen zu einem Vektoren-Feld zu machen, ändern wir den Volumentyp über das zugehörige Menü einfach in den Typ Vektor.
Die noch etwas grobe Unterteilung des Vektoren-Felds ändern wir nun noch über die Voxelgröße. Ein Wert von 5 cm reicht vollkommen für unsere Zwecke.
Aus unserem vormaligen Kugel-Objekt ist nun dank Volumenmesher ein radiales Feld von unzähligen Vektoren geworden.
Wenn wir etwas näher an das Vektoren-Feld heranzoomen, sehen wir die einzelnen Vektoren, die allesamt senkrecht zur Position auf der Kugeloberfläche stehen. Daraus resultierende Kräfte weisen also allesamt von unserer Kugel weg. Nicht wirklich das, was wir für die Umleitung der Partikel um die Kugel gebrauchen können.
Wir müssen uns also um zwei Dinge kümmern: Die Vektoren müssen parallel zur Oberfläche der Kugel liegen und zudem ein Zufallsmuster aufweisen, damit die Partikel auf der Oberfläche in verschiedenste Richtungen umgelenkt werden.
Für das Zufallsmuster sorgt ein Zufallsfeld, das wir uns über das Menü Erzeugen>Feld in unsere Szene holen.
Wir legen das Zufallsfeld per Drag-and-drop über den Objekt-Manager als Unterobjekt in den Volumenerzeuger. Im Einstellungsdialog des Volumenerzeugers ist das Zufallsfeld daraufhin als Ebene oberhalb unserer Kugel gelistet.
Ein Blick in die 3D-Ansicht zeigt, dass die beiden Vektor-Felder noch nicht so arbeiten, wie wir es benötigen. Das Zufallsfeld soll schließlich auf die in der Liste unter ihm liegende Vektoren-Kugel wirken.
Um dies zu erreichen, selektieren wir den Eintrag des Zufallsfelds in der Liste der Objekte im Volumenerzeuger und setzen in den darunter befindlichen Einstellungen für das Zufallsfeld den Erzeugungsraum auf Objekte davor.
Jetzt wirkt das Zufallsfeld wie gewünscht auf alle von der Kugel bereitgestellten Vektoren. Nun müssen wir nur noch erreichen, dass die chaotisch verdrehten Vektoren entlang der Kugeloberfläche zeigen.
Der Verrechnungsmodus von Zufallsfeld und Kugel scheint also noch nicht ganz zu passen. Über das Modus-Menü in der Objekt-Liste wählen wir für das Zufallsfeld die Verrechnungsmethode Kreuz. Dieser Modus ist genau dafür gemacht, die Senkrechte zu zwei miteinander verrechneten Vektoren per Kreuzprodukt zu ermitteln.
Wie ein Blick in unsere 3D-Ansicht zeigt, verlaufen die Vektoren nach diesem Schritt wie gewünscht tangential um unsere Kugel.
Einsatz des Kraftfelds
Nun haben wir das erste Vektoren-Feld für den Weg der Partikel um die Kugel vorbereitet, doch leider nehmen die Partikel bislang noch keine Notiz von unseren Vektoren.
Damit die Vektoren unseres selbst erzeugten Feldes als Kräfte wirken können, benötigen wir ein sogenanntes Kraftfeld-Objekt. Wir finden es im Menü Simulieren>Kräfte.
Damit unser Vektor-Volumen als Kraftfeld wirkt, öffnen wir den Einstellungsdialog des Kraftfelds und ziehen den Volumenerzeuger per Drag-and-drop über den Objekt-Manager in das Objekt-Feld des Kraftfeld-Objekts.
Direkt beim Loslassen werden wir über ein kleines Auswahlmenü gefragt, ob der Volumenerzeuger als Punkt- oder Volumenobjekt behandelt werden soll. Wir wählen natürlich die Option Volumenobjekt.
Nun sollte unser vom Volumenerzeuger definiertes Vektor-Volumen als Eintrag in der Liste der Kraftfelder stehen. Wie wir sehen, arbeitet das Kraftfeld ebenfalls über Ebenen und Verrechnungsmodi, was die neu entstandenen Möglichkeiten mit dem Kraftfeld-Objekt erahnen lässt.
Wenn wir die Animation nun per Abspielbutton starten, sehen wir, dass die Partikel nun von unserem Vektoren-Feld beeinflusst werden.
Das ist noch nicht ganz das erwünschte Ergebnis. Im Moment ist im Kraftfeld-Objekt noch der Geschwindigkeitstyp Zu Geschwindigkeit addieren aktiv, die Partikel werden also lediglich mit etwas mehr Schwung abgelenkt. Wir wollen aber, dass die Partikel ihre Richtung gemäß der Vektoren ändern, was wir im Menü Geschwindigkeitstyp entsprechend auswählen.
Nach dieser Änderung sieht die Animation schon besser aus. Viele Partikel suchen sich bereits ihren Weg über die Kugeloberfläche, einige andere werden aber von der Kugel weg abgelenkt. Es fällt außerdem auf, dass diese abgelenkten Partikel sich auf sehr seltsamen Bahnen bewegen.
Letzteres können wir sehr einfach beheben, indem wir im Einstellungsdialog des Kraftfeld-Objekts den Volumenerzeuger in der Objekt-Liste auswählen und in dessen Einstellungen auf der Ebenen-Seite den Samplemodus von Nächster auf Linear setzen. Dadurch wird nicht einfach zum nächsten Voxel auf- bzw. abgerundet, sondern ein linearer Mittelwert verwendet.
Nach dieser Änderung bewegen sich die von der Kugel abgelenkten Partikel schon wesentlich freier umher. Gleich sorgen wir dafür, dass auch diese Partikel auf der Kugeloberfläche bleiben.
Damit die Bahnen der an der Kugeloberfläche laufenden Partikel nicht zu filigran ausfallen, erhöhen wir im Einstellungsdialog des Zufallsfelds noch die Größe des zugrunde liegenden Noise. Natürlich steht es jedem frei, noch ein bisschen weiter mit den Einstellungen des Zufallsfelds zu experimentieren.
Wenn wir das Zufallsfeld-Objekt selektiert haben, können wir den Parameter Größe übrigens über einen eigenen Greifer interaktiv in der 3D-Ansicht ändern.
Ich habe mich für eine Größe von 300 % entschieden, damit der Noise bei den Vektoren deutlich zu erkennen ist.
Aufbau des zweiten Vektoren-Feldes
Wie der Name unseres Kugel-Objekts „Kugel innen“ von Anfang an schon andeutet, soll es neben dem eben fertiggestellten Vektoren-Feld für die innere Kugel auch ein zweites Vektoren-Feld für eine äußere Kugel geben. Diese zweite, etwas größere Kugel soll dafür sorgen, dass eventuell reflektierte Partikel wieder zurück auf die Oberfläche der inneren Kugel geschickt werden.
Wir duplizieren uns dazu das Kugel-Objekt durch Ziehen mit gedrückt gehaltener Strg- bzw. Ctrl-Taste im Objekt-Manager, belassen es als Unterobjekt des Volumenerzeugers und geben ihm den Zusatz „aussen“, um beide Kugeln unterscheiden zu können. Dieser äußeren Kugel geben wir außerdem einen um 2 cm größeren Radius als Spielraum für die Partikel mit.
Der Volumenerzeuger hat aus der zweiten, äußeren Kugel auch gleich das entsprechende Vektor-Feld generiert und zu den bereits bestehenden Objekten hinzuaddiert.
In der Liste der Objekte im Einstellungsdialog des Volumenerzeugers steht die äußere Kugel nun an oberster Stelle und würde als Letztes abgearbeitet. Doch wir wollen ja, dass die äußere Kugel zunächst von den Partikeln durchdrungen wird und die Partikel anschließend nicht mehr entlässt.
Bringen wir also etwas Ordnung in die Objekt-Liste. Zunächst versetzen wir die „Kugel aussen“ an die unterste Stelle der Reihenfolge. Weil das Zufallsfeld auf die darunter liegende „Kugel innen“ wirkt, dabei aber direkt nach der „Kugel aussen“ abgearbeitet werden soll, legen wir einfach einen Ordner an, in den wir das Zufallsfeld und die innere Kugel verschieben können. Dazu klicken wir auf den Ordner-Button unterhalb der Objekt-Liste.
Nun legen wir das Zufallsfeld und die innere Kugel aus der Objekt-Liste des Volumenerzeugers per Drag-and-drop in diesen neuen Ordner.
Da die äußere Kugel, deren Vektoren senkrecht zur Kugeloberfläche stehen, als Erstes wirkt, werden auftreffende Partikel im Moment noch komplett reflektiert. Um das Vektoren-Feld der äußeren Kugel umzudrehen, verwenden wir einen Volumenfilter, von denen uns auch für die Arbeit mit Vektoren einige zur Verfügung stehen. Wir finden das Volumenfilter-Menü unterhalb der Objekt-Liste und wählen uns daraus den Invertieren Vektor-Filter.
Da wir möchten, dass der Volumenfilter ausschließlich auf die Vektoren der äußeren Kugel wirkt, setzen wir ihn per Drag-and-drop direkt oberhalb der „Kugel aussen“.
Jetzt sollte alles wie gewünscht funktionieren. Ein Klick auf den Abspielbutton zeigt, dass alle Vektor-Felder korrekt eingestellt sind. Die Partikel treffen auf der Kugel auf und verteilen sich zufällig über die Oberfläche.
Wir können noch ein bisschen mehr Leben in die Partikelströme bringen, indem wir das Noise-Muster des Zufallsfelds animieren.
Dazu rufen wir den Einstellungsdialog des Zufallsfelds auf und setzen eine Anfangsgeschwindigkeit fest, in meinem Beispiel 50 %.
Die Partikelströme werden nun durch das animierte Noise-Muster kürzer, sie brechen an mehr Stellen auseinander.
Umwandeln der Partikel zu Spline-Pfaden
Als Partikel können wir jetzt natürlich jedes beliebige – vorzugsweise kleine – Objekt auf die Reise über die Kugeloberfläche schicken. Eine Alternative ist, die Wege der Partikel automatisch nachzeichnen und in Spline-Pfade umwandeln zu lassen. Dafür benötigen wir das Tracer-Objekt aus dem Menü MoGraph.
Damit die Partikelströme beider Emitter in Spline-Pfade umgewandelt werden, ziehen wir die beiden Emitter-Objekte per Drag-and-drop über den Objekt-Manager in das Feld Tracer Verknüpfung im Einstellungsdialog des Tracer-Objekts.
Weil die Emitter über die Zeit doch eine ganze Menge Partikel ausstoßen, begrenzen wir die Länge der vom Tracer generierten Spline-Pfade. Im Einstellungsdialog des Tracer-Objekts wählen wir dazu als Grenze das Ende …
… und legen über den Parameter Bilder die Länge der Spline-Pfade fest. Ich habe mich für eine Länge von 100 Bildern entschieden. Niedrigere Werte ergeben entsprechend kürzere Spline-Pfade.
Nach einem Klick auf den Abspielbutton können wir nun beobachten, wie sich die vom Tracer generierten Spline-Pfade animiert über die Kugeloberfläche ziehen.
Für das Aufmacherbild dieses Tutorials habe ich mir noch ein Duplikat des Kugel-Objekts erstellt und dieses mit einem roten Material bedacht. Mit Ausnahme des Tracer-Objekts können wir die Sichtbarkeit aller anderen Objekte im Objekt-Manager deaktivieren.
Um aus den vom Tracer-Objekt generierten Spline-Pfaden dreidimensionale Objekte zu erzeugen, könnt ihr das Tracer-Objekt zum Beispiel zusammen mit einem Kreis-Objekt einem Sweep-Objekt unterordnen. Achtet in diesem Fall aber auf die Anzahl der Partikel und deren Lebenszeit, da der Rechner sonst sehr schnell in die Knie geht …