Photoshop
Cinema 4d
Fotografie
Weitere Grafiksoftware
HTML / CSS
JavaScript
Flash
PHP
Webserver
Sonstige
[plugin] Roll- It v1.0 für Cinema 4D (Cinema 4d Tutorial)
Tutorial erstellt von Andreas, letzte Änderung am 20.09.2007
Voraussetzungen:
Cinema 4D R10 (+)
Grundwissen Cinema4D
Roll It 1.0 free Download
keine Module notwendig
Hallo und herzlich willkommen -wir schreiben den 7.September 2007- zu einem kleinen Tutorial, was euch die Möglichkeiten des brandneuen plugins Roll-It v1.0 näher bringen könnte. Bei dem Nachfolger des Roll-It v.0.9 handelt es sich um ein echtes plugin. Es wurde eine ausführliche Anleitung (die schon als Handbuch bezeichnet werden kann) seitens des Programmierers erstellt, auf die ich verweise. Schaut euch das Demoreel von Roll-Itv1.0 an, um einen ersten Eindruck über diese kleine Geheimwaffe zu gewinnen. Oben drauf stellt der Autor eine *.c4d-Szene mit vielen Beispielen zur Verfügung. Ein "Rundumsorglospaket" -prima.
Einführung
Es gibt sicherlich viele Anwendungsfälle, zumal es sich bei Roll-It eigentlich um drei kleine plugins handelt, die seitens des Programmierers Mark Beckmann zusammengefasst worden sind. Mit der neuen v1.0 wurden so eine Floor- und Rotate- Einheit eingeführt. Floor bietet die Möglichkeit, rudimentär eine Dynamicssimulation vorzunehmen, durch Aktivierung und Hineinziehen eines Objektes rollt das zu bewegende Objekt nicht nur physikalisch korrekt, sondern folgt auch der Oberfläche des Floor-Objektes. (Beispiel: Fahrzeug fährt über Bodenwelle). Rotate gestattet es, dem rollenden Objekt einen Winkel zu verleihen (keybar), so dass er sich einerseits physikalisch korrekt dreht und andererseits einen Effet erhalten kann (Beispiel: rollende Münze, die zum Stillstand kommt und liegt)
Wir wollen uns einmal das erste Beispiel anschauen und Roll-It v1.0 nutzen, um ein Fahrzeug korrekt über Unebenheiten fahren zu lassen. Zum Verständnis: Es handelt sich nicht um eine echte Physicengine, vielmehr um die geschaffene Illusion durch die Kollisionsabfrage mittels des integrierten Floor-Objektes. So ist es nicht möglich, dass die Karosserie dynamisch mitkippt (dies kann man mittels weniger Keys handanimieren), oder gar die Reifen lenkbar sind und das Fahrzeug korrekt folgt. Die Hauptarbeit einer einfachen Animation aber -das korrekte Rollen der Räder und die Kollisionsabfrage der Reifen bei Unebenheiten- erledigt Roll-It.
Vorbereitungen
Wir benötigen ein Fahrzeug. Wenn kein eigenes zur Hand ist, sucht euch eines in den unendlichen Weiten des Netzes. Theoretisch reichen auch 4 Zylinder, es geht vielmehr um das Prinzip. Achtet bitte darauf, dass es zu Vorbereitungszwecken in der Koordinate X = 0 steht, damit wir effektiv das Setup vorbereiten können. Wenn RollIt es rollen lassen soll, müssen logischerweise die Räder separiert sein. Falls das Modell, was genutzt wird, ein Gesamtmesh ist, müssen durch Abtrennen der Polygone die Reifen isoliert werden. Dann wäre es zudem wichtig, dass sich die Objektachse mittig des Rades befindet. Hierzu deselektieren wir alle Punkte des jeweiligen Rades und zentrieren die Achse über Struktur -Achse zentrieren.

Roll-It berechnet die Kollisionsabfrage des Floor-Objektes und des zu rollenden Objektes anhand der Punkte des Polygonmeshes bzw. der Segment(punkte) bei Grundkörpern. Daraus ziehen wir zwei Schlüsse: Roll-It ist auf alle Objektarten anwendbar, unerheblich ist, ob es ein Grundkörper oder ein Polygonmesh ist. Zweitens: Je höher die Segmentzahl eines Grundkörpers (z.B. Zylinders), umso genauer die Berechnung. Wenn ein Würfel korrekt über eine Landschaft rollen soll, brauch er mehr Segmente, da sonst nur die 4 Eckpunkte pro Fläche kollidieren würden, die eigentliche Fläche würde "versinken". Erhöht man die Segmente, "kollidieren" diese, der Würfel würde nicht mehr versinken...
Für die Berechnung in unserem Fall ist der Durchmesser des Reifens relevant, daher werden wir ganz schnell ein proxy- Objekt erstellen. Dies wäre kein notwendiger Schritt, Roll-It würde auch mit dem Reifenmesh direkt zusammenarbeiten. Allerdings hab ich mir diese Arbeitsweise angewöhnt, um eventuellen nachträglichen Änderungen am Reifenmesh vornehmen zu können, ohne Risiko zu laufen, etwas "zu zerstören". Einem späteren "Reifenwechsel" steht somit nichts im Wege...
Der wichtigste Punkt ist, dass alle Objekte, die Roll-It steuern sollen, unter einem Null- Objekt liegen. Wenn hier 4 Räder gesteuert werden sollen, bedarf es also zumindest einem Null- Objekt und hierarchisch gleichwertig untergeordnet die Reifen-Objekte!
Ruft einen Zylinder auf. Diesen selektiert bitte und ruft über Funktion -Übernehmen auf. Per Drag&Drop ziehen wir das erste Rad in die Optionen und weisen zu. Danach liegt die Objektachse exakt im Drehpunkt des Rad- Meshes.

Jetzt skalieren wir im Objekt-Bearbeiten-Modus den Zylinder auf Radgröße, auf gar keinen Fall verschieben wir ihn, damit würden wir die Objektachse wieder ändern!
Eine Kopie des Zylinders verschieben wir auf das rechte Vorderrad, so z.B. einfach durch Vorzeichenänderung im Koordinatenmanager (daher eingangs die Bitte, das Fahrzeug in X=0 zu stellen...).

Einen der beiden Zylinder kopiert, wieder per Funktion -Übernehmen an eines der Hinterräder zuweisen und selbiges Spiel per Koordinatenmanager mit einer Kopie des 3. Zylinders schafft unser letztes proxy-Objekt. So sollte es aussehen:

Als nächstes ordnen wir hierarchisch jedes einzelne Rad seinem proxy-Objekt unter. Des weiteren schalten wir die proxys für die Sichtbarkeit im Editor und beim Rendern auf aus; da die Räder nun aufgrund ihrer Unterordnung auch unsichtbar wären, müssen diese in der Sichtbarkeit aktiviert werden.

Erstellt ein Null-Objekt, nennt es z.B. Roll-It, das wird das Sammelobjekt unserer Räder.
Roll It!
Per Rechtsklick auf den ersten proxy (bei mir 1-vl) öffnet sich unser Submenü und es erscheint unter den Tags als neuer Eintrag Roll-It. Weist ihn zu. Bitte erledigt dies für alle proxy- Zylinder. Achtet auch darauf, jeden einzeln zuzuweisen und nicht den Tag einfach zu kopieren!

Klickt auf das erste Roll-It-Tag, es öffnet sich dessen Attribute- Manager. Zunächst stellen wir die Methode auf Globaler Umquader und klicken auf Berechne. Roll-It ermittelt nun den Umquader jedes Proxys, der für das korrekte Abrollen ja notwendig ist. Der globale Umquader macht eigentlich nur bei Objekten Sinn, deren Radius sich über die Zeit ändert. Bei einem Zylinder bleibt der Radius, wenn er um seine Längsachse gedreht wird, konstant.In diesem Fall würde also der lokale Umquader bzw. Radius des Zylinders ausreichend sein. Wenn ihr euch aber nicht sicher seid, verwendet einfach den Globalen Radius, da es die "unschädliche Variante" ist. Bei einer Animation, wo sich der Radius des zu drehenden Objektes ändert, wäre der globale Radius vonnöten. Zudem müsste dann "Berechne pro Bild" eingestellt werden, damit Roll-It den sich ändernden Radius darstellen kann

Wenn das für alle 4 Roll-It-Tags erledigt ist und die richtige Hierarchie (ein Null- Sammelobjekt für das gesamte Fahrzeug, darunter gleichrangig der Rest des Fahrzeuges (Karosserie) und das Roll-It-Null-Objekt) hergestellt ist, rollt es schon! Dazu wird nur das Fahrzeug-Null-Objekt animiert, Roll-It erledigt den Rest. Somit kann man schon einmal das Fahrzeug anfahren und abbremsen lassen, indem das Null-Objekt Fahrzeug in der Position verschoben wird.
Wir können nun kleine Animationen anfertigen, bei der die Reifen korrekt mitdrehen, immerhin. "Kurvenfahrten" könnten aber auch mit Mehraufwand erstellt werden. Ein kleiner Ansatz wäre, dem Reifen "Gelenke" per Null- Objekt zu spendieren, die den Reifen beherbergen und auch animiert werden könnten. Immer noch keine Automation eines Fahrwerkes, aber eine Möglichkeit, auch Kurvenfahrten anzudeuten. Nebenher sei erwähnt, dass Roll-It v1.0 voll "xpressofähig" ist. Wenn der Tag in eine XPresso- Schaltung gezogen wird, liegen alle notwendigen Eingangs- und Ausgangsnodes an. So sind noch viele Anwendungen denkbar...

Das Floor-Objekt
Roll-It kann aber noch mehr. Erstellen wir einmal eine Ebene, unterteilen diese genug, konvertieren sie (es würden auch Grundobjekte funktionieren, z.B. das Landschafts-Objekt) und selektieren einige Punkte auf dieser „Strasse“, um sie in Y nach oben oder unten zu verschieben; wir bauen also schnell Unebenheiten auf die Fahrbahn.

Öffnet wieder die Hierarchie von Roll-It und selektiert das erste Tag. Dort gehen wir auf den Reiter Floor. Floor ist in der Grundeinstellung deaktiviert. Zunächst stellen wir die Berechnungsmethoden ein. Die Objekt- Methode sowie die Boden-Methode stellen wir auf Geometrie. Damit wird gewährleistet, dass die Segmente des Zylinders (unser Rad-proxy) auf die Polygone der Ebene reagieren. Entweder reagieren Grundobjekte mittels ihrer Segmente oder Polygonobjekte aufgrund der Polygon(geometrie). Somit wird klar, dass Roll-It für alle Arten von Objekten genutzt werden kann. Probiert es ruhig einmal aus und lasst eine Kugel über ein Text-Extrude-Nurbs kullern... Doch zurück: Wenn also ein Rad auf eine Unebenheit trifft, rollt es weiter, wird aber angeboben/abgesenkt. Die Y- Position des Roll-It-Objektes folgt also der Geometrie der Strasse.
Aktiviert wie auf den Screen bei allen Roll-It-Tags Floor, stellt Geometrie ein und zieht per Drag&Drop die Strasse als Floor-Objekt (unsere bezupfte Ebene) hinein.

Wenn nun das Fahrzeug- Null-Objekt entlang der Strasse animiert wird (und nur dieses wird angefasst!), heben und senken sich die einzelnen Räder entsprechend der Bodenunebenheiten. Unsere kleine Animation hat mittels weniger Schritte eine Wertsteigerung erhalten und wir benötigten keinerlei Physicengine-Module...

Dies war ein Anwendungsfall von Roll-It. Es gibt viele Möglichkeiten, dieses Plugin in der täglichen Arbeit zu nutzen. Da Roll-It so „gestrickt“ ist, dass sich die Roll- Objekte bewegen, kann man diese z.B. stehenlassen, ergo nicht animieren und dafür das Floor- Objekt animieren. Somit wird Roll-It zur Kollisionsabfrage genutzt. Die Objekte folgen dann der Oberfläche, rollen aber nicht.
Hinzu kommen die Möglichkeiten per Rotate, dort können Winkel gekeyt werden. Wenn man dies am obigen Beispiel anwenden würde, könnte man ein Rad „eiern“ lassen...
Auf jeden Fall sollte man sich dieses free- plugin in seinen plugin- Ordner stecken. Es ist freigegeben für die private und kommerzielle Nutzung
Wenn öfters Animationsaufgaben anstehen, wo z.B. ein Körper entlang einer Spline fährt und dabei korrekt rollen soll, ist Roll-It die erste Wahl und eine echte Bereicherung für 3D-Designer, die das "schlimme" Script nicht selber erstellen wollen/können *g* ergo so einige... (was nicht schlimm ist , eher Spezifizierung bedeutet, nur so geht es) Man kann damit sicherlich mehr anstellen, als man denkt... dank XPresso- "Vollanbindung" eine Überlegung wert!
Was sich gegenüber der Vorversion noch alles geändert hat, könnt ihr auf der Site von eggtion nachlesen.
Lasst es rollen! (Empfehlung 5 Sternchen *g*)
Euer Andreas
>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!