![]() |
|
Tutorial: XPresso - Ein rollendes Rad (Teil 2: Die XPresso-Schaltung erstellen) Bisher war von XPresso nicht viel die Rede, doch jetzt ist es endlich an der Zeit, ein paar Knoten zu knüpfen... Das Rad soll rollen, das ist unser Ziel. Dazu muß es sich aber nicht nur entlang des Splines bewegen, sondern auch entsprechend drehen. Natürlich könnte man das mit Handarbeit per Keyframe hinbekommen, aber das wäre nun wirklich unflexibel; sobald man am Weg-Spline etwas änderte, müßte man auch die Werte der Keyframes anpassen. Es liegt also nah, das man sich einer Expression bedient, welche sich um einen Algorithmus um die Drehung des Rades kümmert. Mit XPresso können wir eine solche Expression leicht erstellen, ohne eine einzige Zeile Code schreiben zu müssen. Nur etwas Denkarbeit und ein paar Nodes benötigen wir dafür.
|
6. Damit wir uns in der Szene (und später auch in der XPresso-Schaltung) besser zurecht finden, benennen wir die Objekte erst einmal sinnvoll. Das Röhren-Grundobjekt nennen wir am besten "Rad" und das Null-Objekt "Rad.Null". Dann rechtsklicken wir auf das Rad und erzeugen über das Kontextmenü ein XPresso-Tag. Der XPresso-Editor öffnet sich automatisch. ![]() |
7. Damit das Rad am Spline entlang rollen kann, benötigen wir die Länge des Splines und den Umfang des Rades. Daraus können wir eine Rotation für jede Position auf dem Spline berechnen, und das Rad somit drehen. Aber immer der Reihe nach. Zunächst berechnen wir den Umfang des Rades. Dazu ziehen wir das Rad mit der Maus in den XPresso-Editor, und erhalten ein mit dem Rad verlinktes Objekt-Node. Mit einem Klick auf das rote Viereck oben rechts im Node erstellen wir einen Ausgangs-Port für den Attribut "Äußerer Radius". ![]() |
8. Jetzt machen wir einen kleinen Ausflug in die Mathematik. Um den Umfang unseres Rades zu berechnen, bedienen wir uns der Formel für den Kreisumfang: Umfang = Radius * pi * 2. Den Radius haben wir schon, jetzt benötigen wir noch den Wert für 2*pi. Deshalb rechtsklicken wir jetzt an eine beliebige Stelle im XPresso-Editor und erzeugen über das Kontextmenü ein Node "Allgemein > Konstante". In den Attributen des Nodes geben wir als Wert "2*pi" ein. Cinema4D wertet die Konstante pi korrekt aus. ![]() |
9. Um die Berechnung abzuschließen müssen wir den Wert von "2*pi" noch mit dem Radius multiplizieren. Dazu erzeugen wir ein Node "Berechnungen > Mathe", und stellen es im Attribute Manager auf "Multiplizieren". Jetzt verbinden wir die Ports wie auf dem folgenden Bild gezeigt. Fertig! Am Ausgang des Mathe-Nodes liegt jetzt das Ergebnis von "Radius * pi * 2" vor: Der Rad-Umfang. ![]() |
10. Jetzt benötigen wir noch Daten von unserem Weg-Spline. Dazu ziehen wir das Spline-Objekt mit der Maus in den XPresso-Editor und erhalten dadurch ein weiteres, mit dem Spline verlinktes Objekt-Node. Für das neue Node erzeugen wir gleich einen Ausgangsport "Objekt". ![]() |
11. Eigentlich wollen wir ja die Länge des Splines ermitteln. Dazu bietet sich ein Spline-Node an, welches im Kontextmenü bei den XPresso-Nodes unter "Allgemein > Spline" zu finden ist. Ein Klick auf das rote Viereckt im Spline-Node zeigt, dass es einen Ausgangsport für die Länge gibt. Den brauchen wir nur anzuklicken, und anschließend noch das mit dem Spline verlinkte Objekt-Node mit dem Objekt-Eingangsport des Spline-Nodes zu verknüpfen. Am Länge-Ausgangsport des Spline-Nodes liegt ab jetzt die Länge unseres Weg-Splines vor. ![]() |
12. Weiter geht unsere Berechnung. Wie haben nun den Rad-Umfang und die Länge des Splines (sprich: Die Länge des zurückzulegenden Weges). Was wir als nächstes brauchen, ist die Anzahl der Umdrehungen, die das Rad brauchen würde, um den gesamten Weg zurückzulegen. Die Berechnung dieses Wertes ist simpel: gUmdrehungen = SplineLänge / RadUmfang. Wir erzeugen als einfach ein weiteres Mathe-Node und stellen es im Attribute Manager auf "Dividieren". Anschließend verbinden wir den Länge-Ausgangsport des Spline-Nodes mit dem oberen der beiden Eingangsports, und den Ausgang des multiplizierenden Mathe-Nodes mit dem unteren Eingangsport. ![]() |
13. Es wird Zeit, dass wir mal Ergebnisse zu sehen bekommen. Passender Weise stellt uns XPresso ein Ergebnis-Node zu Verfügung, welches im Kontextmenü bei den XPresso-Nodes unter "Allgemein > Ergebnis" zu finden ist. Wir erzeugen also ein Ergebnis-Node und kopieren es noch zweimal. Dann schließen wir sie so an wie auf dem folgenden Bild zu sehen ist. Nun können wir sehen, wie lang unser Weg-Spline ist, wie groß der Umfang des Rades ist, und wieviele Umdrehungen das Rad brauchen würde, um das gesamte Spline einmal entlang zu rollen. ![]() |
14. Zugunsten der besseren Übersicht habe ich die Ergebnis-Nodes für das Tutorial wieder entfernt. Man kann sie aber zu Kontrollzwecken auch gerne behalten. Aber zurück zu unserer Aufgabe: ![]() |
15. Erstellen wir doch mal ein Ergebnis-Node und verbinden es mit dem Position-Ausgangsport. Prima: Die Position liegt als Wert zwischen 0 und 1 vor. Gehen wir z.B. in die Mitte unserer Animation zeigt das Ergebnis-Node "0.5" an. Das ist genau, was wir brauchen. ![]() |
16. Um die Position mit der Gesamtanzahl der Umdrehungen zu multiplizieren, erzeugen wir ein weiteres Mathe-Node und stellen es im Attribute Manager auf "Multiplizieren". Dann verbinden wir den Position-Ausgangsport sowie den Ausgangsport des dividierenden Mathe-Nodes mit dem neuen Mathe-Node. ![]() |
17. Ein weiteres Ergebnis-Node überzeugt endgültig: Die Rechnung geht wie geplant auf. Am Ausgangsport des letzten Mathe-Nodes liegt jetzt immer die Anzahl der Umdrehungen an, um welche das Rad für die aktuelle Position auf dem Spline rotiert werden muß. ![]() |
18. Jetzt könnten wir die berechnete Rotation eigentlich direkt auf das Rad übertragen. Das klappt so allerdings noch nicht ganz, denn die Winkelangaben von Cinema4D müssen in Radians angegeben werden. Für die Umrechnung gibt es sogar ein eigenes Node, aber im Rahmen dieses Tutorials basteln wir uns das selbst. Die Berechnung ist sowieso sehr einfach: Wir müssen unseren Wert lediglich nochmal mit "2*pi" multiplizieren. Wie das geht, wissen wir ja bereits: Zunächst ein Node "Allgemein > Konstante" erzeugen, und als Wert "2*pi" eintragen. ![]() |
19. Anschließend erzeugen wir ein weiteres Mathe-Node, und stellen es auf "Multiplizieren". Dann verbinden wir die Ports wie auf dem nachfolgenden Bild gezeigt: ![]() |
20. Um nun die fertige Rotation auf das Rad zu übertragen, ziehen wir das Rad in den XPresso-Editor und erzeugen damit ein weiteres Objekt-Node. Mit einem Klick auf das blaue Viereck in dem Node öffnet sich das Kontextmenü und wir erzeugen einen Eingangsport für "Koordinaten > Winkel > Winkel.P". Noch schnell die Ports verbinden... fertig! ![]() |
21. Endlich fertig! Wie schließen den XPresso-Editor, klicken auf Play und gucken uns das Rad einmal an... und bemerken, dass es sich in die falsche Richtung dreht. Wenn unser Plan gewesen wäre, das Rad an der Decke entlangrollen zu lassen, hätten wir unsere Mission bereits erfüllt. So müssen wir aber wohl oder übel nochmal ran. ![]() |
22. Zum Glück ist die umgekehrte Rotation schnell behoben: Wir müssen nur dafür sorgen, dass das Ergebnis unserer Berechnung negiert wird. Als Angriffspunkt bietet sich das Konstante-Node am Ende unserer Schaltung an; wir setzen einfach ein Minuszeichen "-" vor den Wert im Attribute Manager. Die korrekte Formel für die Rotation lautet also: Rotation = gUmdrehungen / WegPosition * -2 * pi. ![]() |
23. Nachdem wir den XPresso-Editor wieder geschlossen und die Wiedergabe gestartet haben, rollt das Rad endlich wie erwartet. Ein berechtigter Kritikpunkt ist allerdings die Tatsache, dass das Rad (wenn wir uns das Spline als Pfad auf dem Boden vorstellen) zur Hälfte im Boden versinkt. Doch auch das läßt sich mit XPresso leicht bewerkstelligen... ![]() |
24. Wir öffnen erneut den XPresso-Editor und ziehen ein weiteres Mal das Rad mit der Maus in das Editorfenster. Dem neu entstandenen Objekt-Node geben wir einen Eingangsport die "Koordinaten > Position > Position.Y". Diesen Port verbinden wir einfach mit dem Ausgangsport "Äußerer Radius" des ersten mit dem Rad verknüpften Objekt-Nodes. ![]() |
25. Was lange währt wird endlich gut... das Rad rollt wunderschön an seinem Spline-Pfad entlang. Unsere Expression ist fertig. ![]() |
|
Damit wären die Arbeiten an der XPresso-Schaltung beendet. Dennoch ist dies nicht das Ende dieses Tutorials. Wir werden das Spline noch auf eine Landschaft projezieren, und das Rad somit auch über Berge und Täler rollen lassen, und wir werden uns der Ordnung in unserer Schaltung widmen. Denn bestimmt ist dem einen oder anderen im Laufe dieses Kapitels aufgefallen, wie unübersichtlich eine Schaltung werden kann, wenn man nicht immer auf Ordnung achtet. Weiter zum nächsten Teil
|
|
|