Es gibt mittlerweile eine ganze Anzahl von Lösungen zur Modellierung kinematischer Abhängigkeiten. Die Entwicklung der Collie Tools begann, ehe XPresso zur Verfügung stand, und ehe andere Plugin-Programmierer ihre Lösung veröffentlicht hatten. Falls Sie bereits eines dieser Plugins verwenden, haben Sie vermutlich keinen Bedarf an den kinematischen Collie Tools. Die Tools bieten jedoch eine gemeinsame Designidee für mehrere Arten der kinematischen Abhängigkeit, und werden in naher Zukunft noch weitere reichhaltige Speziallösungen anbieten.
Die kinematischen Tools sind ein Satz von Expressions, die die Bewegungsdaten eines Objekts mit denen eines anderen verbinden. Normalerweise sind Objekte mit ihren Eltern im Objektbaum verlinkt, so daß sie sich mit ihren Eltern mitbewegen. Die kinematischen Tools gestatten jedoch das Verlinken von zwei (oder mehr) Objekten, die nicht bereits in der Objektbaum-Hierarchie miteinander verbunden sind.
Beispielsweise erlaubt die Expression "Kopiere Transformation" Ihnen, die Rotation eines Zylinders abhängig zu machen von der Rotation eines Würfels, der irgendwo anders im Baum steht.
Es ist möglich, dies auch über XPresso zu lösen. XPresso hat tatsächlich wesentlich größere Fähigkeiten als jede existierende Speziallösung und kann beliebig viele Objekte mit beliebig vielen anderen über praktisch jeden Parameter steuern. XPresso ist ein ausgesprochen mächtiges Werkzeug, übertroffen wohl nur von direkter Programmierung von COFFEE-Expressions und Plugins, und ich kann jedem nur empfehlen, es zu erlernen. Es gibt nur wenige Nachteile: erstens muß man die XPresso-Nodes (grafisch) programmieren, was je nach Vorhandensein von Templates oder Fertiglösungen, Anzahl der beteiligten Objekte und Schwierigkeit der Mathematik unterschiedlich aufwendig ist. Zweitens kann der fertige Node (für jemanden, der ihn nicht erstellt hat, oder für den Programmierer selbst nach ein paar Monaten) schwer zu durchschauen sein. Drittens wird die XPresso-Expression als unspezifisches Tag im Baum erscheinen, das seine Funktionsweise nicht auf Anhieb preisgibt. Viertens ist der Tooltip einer XPresso-Expression nicht unbedingt nützlich. Fünftens kann man die Expression nicht mit den C4D-üblichen Mitteln lokalisieren (in eine andere Sprache übersetzen)... All diese Kleinigkeiten sind nicht wirklich schwerwiegend, und der erfahrene XPresso-Programmierer wird vielleicht sogar sein Werkzeug jeder Spezialexpression vorziehen.
Die kinematischen Expressions der Collie Tools behandeln die meistgenutzten Verbindungen: ein Objekt bewegen wie ein anderes, ein Objekt drehen wie ein anderes, auf ein Objekt zeigen, ein Objekt zwischen anderen Objekten positionieren. Obwohl spätere Erweiterungen nicht ausgeschlossen sind, werden sie sicherlich niemals exotische Anforderungen erfüllen wie "verbinde die Skalierung eines Objekts mit dem roten Glühen in der Textur eines anderen". Mit XPresso sind auch diese Exoten möglich, aber das ist nicht der Zweck der Collie Tools.
Die Collie Tools stellen nur die Basisverbindungen bereit, die in der Praxis meiner Erfahrung nach schon 80% der notwendigen Kinematik abdecken. Jede Expression hat ein eindeutiges Icon, so daß schon ein Blick auf den Objektbaum genügt, um Ihnen zu zeigen, wie ein Objekt verbunden ist. Mehr noch, das bloße Deuten mit der Maus auf das Tag enthüllt einen dynamischen Tooltip, der die wichtigsten Werte der Verbindung aufzeigt, ohne daß Sie den Attributmanager öffnen müßten.
Diese kinematischen Abhängigkeiten gibt es zur Zeit:
...mehr Funktionen kommen mit der nächsten Version. Klicken Sie auf ein Link für nähere Erläuterungen.
Die gemeinsame Eigenschaft all dieser kinematischen Abhängigkeiten ist, daß sie eine "lokale Namenssuche" benutzen, um die Quellobjekte für die Transformationswerte zu suchen. Vor der Cinema-Version V8, in der die "Links" eingeführt wurden, konnten die Quellobjekte nur über ihren Namen gefunden werden, und die Namenssuche begann stets mit dem ersten Objekt der Szene und gab auch nur das erste gefundene Objekt dieses Namens zurück. Man kann sich leicht vorstellen, daß man unerwünschte Resultate erhielt, wenn man mehrere Objekte desselben Namens benutzte. In der Modellierung von Modellen der Mechanik ist das nicht gerade ein seltenes Vorkommnis, besonders wenn man ganze Baugruppen per Kopieren und Einfügen mehrmals in derselben Szene plaziert.
In diesen Fällen mußte man die Quellobjekte in all diesen Baugruppen umbenennen (und natürlich die Referenzen in den Tags), so daß diese "globale" Suche nur ein eindeutiges Objekt ergab.
Um diese unnötige Arbeit zu ersparen, habe ich eine Methode programmiert, um die Namenssuche auf einen gewissen Bereich einzuschränken. Werfen Sie einen Blick auf das folgende Beispiel, wo eine "Zeige auf"-Expression am Objekt "Zeiger" hängt. Der "Zeiger" soll auf ein Objekt "Target" zeigen, also muß die Namensreferenz im "Zeige auf"-Tag genau dieses Objekt finden - auch und gerade wenn mehrere Objekte namens "Target" in der Szene existieren. (Bild aus Verständnisgründen vereinfacht - ja, ich habe in dieser Szene Deutsch und Englisch munter gemischt...)
Öffnen Sie den Attribut-Manager für das Tag. Hier steht der Ziel-Name "Target". (Lassen Sie sich nicht durch die Bezeichnung "Ziel" irritieren: es ist zwar das Ziel des Zeigens, aber die Quelle der Werte für die Expression.) Zusätzlich zu dieser Information findet sich aber noch ein Wert "Beginne Stufen oberhalb". Dieser Wert besagt: Die Suche nach dem Objekt dieses Namens beginnt nicht beim ersten Objekt der Szene, sondern so viele Stufen oberhalb des getaggten Objekts, wie "Beginne Stufen oberhalb" angibt. Steht dort also der Wert 1, beginnt die Suche einen Level oberhalb des Objekts, wo das Tag steht. Nur Objekte dieses Levels und deren Kinder werden überhaupt auf den Namen getestet. Objekte, die noch weiter oben im Objektbaum stehen, werden nicht geprüft, ebensowenig deren Kinder. Damit wird bereits ein großer Teil des Baums von der Suche ausgeschlossen, und es ist schon weitaus wahrscheinlicher, daß das richtige Objekt getroffen wird.
Der folgende rote Rahmen zeigt die Objekte, die als Start für die Suche in Frage kommen, wenn wie im Dialog "Beginne Stufen oberhalb" auf 1 gesetzt ist. Wenn der Wert 0 ist, können nur Objekte des aktuellen Levels für die Suche benutzt werden. Ist der Wert größer als 1, beginnt die Suche weiter oben im Baum und umfaßt entsprechend auch mehr Objekte.
Der andere Wert, der dort zu finden ist, "Suche Stufen abwärts", bestimmt, wie viele Ebenen abwärts die Suche gehen darf (gerechnet vom Startlevel aus). Ein Wert von 0 bedeutet: untersuche nur die Objekte des Startlevels selbst, aber nicht die Kinder. Ein Wert von 1 bedeutet: alle Kinder werden ebenfalls untersucht, aber nicht mehr die Kinder der Kinder.
Der folgende rote Rahmen (die Hierarchie wurde gegenüber der obigen etwas verändert) zeigt die Objekte, die bei einem Wert "Beginne Stufen oberhalb" von 1 und einem Wert "Suche Stufen abwärts" von 1 verglichen und gefunden werden. Die Kinder von "Zeiger", die hier eingeklappt sind, werden bei diesen Werten nicht mehr bei der Suche berücksichtigt!
Achtung: "abwärts" und "oberhalb" beziehen sich auf die Hierarchie des Objektbaums, nicht auf die Position des Objekts in der Darstellung. "Kugel" wird in diesem Baum zwar über "Zeiger" angezeigt, steht aber auf derselben Hierarchieebene. "ZeigerMitBasis" ist hingegen eine hierarchische Ebene oberhalb von "Zeiger".
Wenn die lokale Namenssuche das gewünschte Objekt nicht finden kann - dies kann passieren, wenn die Such-Werte zu knapp gewählt wurden, oder wenn eine vertikale Hierarchie durch das Einfügen von Objekten verändert wurde -, wird ein Fehler in der Konsole ausgegeben. (Eine Anzeige in Form eines Dialogs wäre unpraktisch, da das Tag sehr häufig aufgerufen wird, und Sie nicht dauernd Fehlerdialoge wegklicken möchten.)
Wie Sie sehen, können Sie mit sorgfältig gewählten Hierarchie-Grenzen bestimmen, welche Objekte unter einem bestimmten Namen tatsächlich gefunden werden, indem der Suchbereich auf die gerade vorliegende Baugruppe eingegrenzt wird. Damit können Sie auch eine ganze Reihe gleichartiger Baugruppen mit jeweils gleichen Namen und Verbindungen kopieren und einfügen, ohne Objekte und Referenzen umbenennen zu müssen.
Cinema 4D Version 8 verwendet einen anderen Ansatz. Hier werden symbolische Links verwendet, um Abhängigkeiten zu modellieren. Diese Links sind von Objektnamen unabhängig. Wie der oben abgebildete Attributmanager zeigt, unterstützen die Collie Tools auch diese Methode. Die lokale Namenssuche wird aus Kompatibilitätsgründen und für Spezialfälle weiterhin als Alternative angeboten.