Diese Expression kopiert Rotation, Translation und/oder Skalierung eines Quellobjektes auf ein Zielobjekt (das aktuelle Objekt). Jede Achse kann dabei separat behandelt werden. Ein Faktor und ein Offset können für jede Transformation und Achse angegeben werden. Zusätzlich ist es möglich, eine obere und untere Grenze für den Wertebereich anzugeben. Wenn solche Grenzen existieren, ist es möglich, mittels einer Dämpfungskurve die Transformation so abzuändern, daß das Zielobjekt sich im Bereich der Grenzwerte "langsamer" bewegt.
Tatsächlich kann der Wert für jede Achse des Ziels auch von jeder anderen Achse (und jeder beliebigen Transformation) der Quelle gelesen werden. Es ist damit möglich, die H-Drehung der Quelle in eine B-Drehung des Ziels umzuwandeln, oder sogar die X-Skalierung der Quelle in eine Z-Position des Ziels zu übernehmen.
Die Expression "Kopiere Transformation" kann hingegen nicht Daten mehrerer Quellen benutzen, die zu Zieldaten "zusammengemischt" werden. Falls das die gewünschte Funktionalität ist, benutzen Sie bitte das "Abstand"-Tag.
Zunächst muß das Quellobjekt angegeben werden. Es wird entweder über ein standardmäßiges Link identifiziert, oder über eine lokale Namenssuche (Details finden sich auf der Seite über Kinematische Tools). Das Flag "Aktiv" entscheidet, ob die Expression überhaupt angewendet wird.
Dazu gibt es drei separate Abschnitte im Attribut-Manager, je einen für Rotation, Translation und Skalierung. Jede dieser drei Transformationen enthält eine Untersektion für jede der drei Achsen. Diese arbeiten komplett unabhängig, so daß es möglich wäre, ein einzelnes Objekt mit drei verschiedenen "Kopiere Transformation"-Tags auszustatten, so daß ein Tag die Position von Quellobjekt A kopiert, ein weiteres Tag die Rotation von Quellobjekt B, und das dritte die Skalierung von Quellobjekt C. Dadurch läßt sich die obige Beschränkung, daß man nur ein Quellobjekt angeben kann, aufweichen. Es ist sogar möglich, die X-Position von Objekt A und die Y-Position von Objekt B zu übernehmen. Aber denken Sie daran, daß dazu mehrere Tags notwendig sind.
Die eigentlichen Werte pro Achse sind leicht zu verstehen. "Benutze..." entscheidet, ob diese Achse/Transformation überhaupt benutzt werden soll. "Quelle" ermöglicht es, die Achse, die Transformation und das Koordinatensystem (lokal oder global) des Quellobjekts zu wählen, aus denen die Daten übernommen werden sollen. Unter "Ziel" muß das Koordinatensystem (lokal oder global) des Zielobjekts angegeben werden. Als Voreinstellungen für ein Tag sind diese Werte immer so gesetzt, daß Achse, Transformation und Koordinatensystem von Quelle und Ziel übereinstimmen, d.h. eine X-Position in lokalen Koordinaten der Quelle wird in eine X-Position in lokalen Koordinaten des Ziels umgesetzt usw. Aber wie oben bereits festgestellt, können Sie ebensogut eine Position in eine Rotation kopieren, wenn Ihr Modell danach verlangt.
Der resultierende kopierte Wert wird mit dem Faktor multipliziert, und schließlich wird der Offset-Wert hinzuaddiert. Ein Faktor von 1 ist der neutrale Wert, ebenso ein Offset von 0. Diese neutralen Werte sind auch die Voreinstellungen. Falls Sie ein Ziel benötigen, das sich zweimal so schnell bewegt wie die Quelle, müssen Sie den Faktor auf 2 setzen; wenn Sie ein Ziel wollen, das sich in die andere Richtung dreht wie die Quelle, ist der passende Faktor -1, und so weiter. Die Benutzung eines Offsets ist empfehlenswert, wenn man z.B. die gesamte Positionsinformation kopiert, damit das Ziel sich in einer gewissen Entfernung zur Quelle befindet und nicht damit kollidiert. Werfen Sie einen Blick auf die Demoszene, in der diese Werte auf verschiedene Weise gesetzt sind.
Wenn Sie das Optionsfeld "Limit" wählen, begrenzen Sie die Werte des Zielobjekts bezüglich dieser Transformation und Achse auf einen Bereich zwischen Min und Max. Beachten Sie, daß die Grenzwerte erst geprüft und angewendet werden, nachdem Faktor und Offset zum kopierten Wert hinzugerechnet wurden, und somit wirklich Zielwerte begrenzen und nicht Quellwerte! Zudem ist, wie man sieht, jede Achse und jede Transformation mit einem separaten Flag und eigenen Grenzwerten ausgestattet, so daß es möglich ist, die X-Position des Ziels einzuschränken, aber die Y-Position unbehelligt zu lassen.
Beachten Sie auch, daß Min und Max immer zusammen gesetzt werden müssen. Dies geschieht, damit die Dämpfungsfunktion korrekt arbeitet. Es ist nicht möglich, nur eine obere Grenze anzugeben, aber keine untere. Wenn Sie nicht mit der Dämpfungsfunktion arbeiten, kann man diese Beschränkung allerdings leicht umgehen, indem man einen sehr kleinen Wert für die untere Grenze oder einen sehr großen Wert für die obere Grenze wählt.
Zwei Felder sind noch offen: die Auswahlbox "Dämpfung" und der Wert "Linearer Bereich". Wie Sie sehen, kann man die Dämpfung nur anwählen, wenn Grenzwerte gesetzt wurden, und der lineare Bereich ist nur dann für Eingaben offen, wenn die Dämpfung auf "Quadratisch/Linear" gesetzt ist.
Aber was soll eigentlich eine Dämpfung sein?
Normalerweise werden die Zielwerte aus den Quellwerten linear errechnet, das bedeutet: außer Faktor und Offset beeinflussen keine weiteren Parameter die Zielwerte, und die Quellwerte fließen nicht quadratisch oder mit anderen Potenzen ein. Wenn Sie etwa die Quelle bewegen, wird das Ziel brav folgen, mit einer Geschwindigkeit, die linear von der Quelle abhängt. Der Faktor erlaubt es, daß das Ziel dreimal schneller oder siebenmal langsamer ist, aber es ist nicht möglich, daß das Ziel sich an einer Stelle schneller und an einer anderen Stelle langsamer als die Quelle bewegt.
Das bedeutet aber auch, daß das Ziel an seinen Grenzwerten abrupt stoppt, was eigentlich ein unnatürliches Verhalten ist.
Wäre es nicht netter, wenn das Ziel sich nahe seinen Grenzwerten langsamer bewegen würde, und schneller, wenn es im "freien Bereich" zwischen den Grenzwerten ist? Die Quelle könnte sich dann mit konstanter Geschwindigkeit bewegen, während das Ziel an der unteren Grenze zunächst beschleunigt, dann die Quelle überholt, um schließlich am oberen Limit wieder abzubremsen. Das Ziel würde sich also nicht linear bewegen.
Das ist genau, was die Dämpfung tut. Alle Werte, die ins Ziel kopiert werden, werden "gedämpft" (haben einen geringeren Einfluß), wenn das Ziel sich nahe den Grenzen befindet, und werden "verstärkt", wenn das Ziel in der Nähe des Zentrums zwischen den Grenzwerten liegt.
Das folgende Diagramm zeigt, was die drei Dämpfungsfunktionen tun. Die x-Achse entspricht der (relativen) Position der Quelle, die y-Achse entspricht der (relativen) Position des Ziels. Die minimalen und maximalen Werte der y-Achse sind die Min und Max-Grenzen aus den Attributen. Die minimalen und maximalen Werte der x-Achse sind die Werte der Quelle, bei denen das Ziel seine Min und Max-Werte erreicht. Natürlich ist es hier nicht möglich, konkrete Werte oder Achseneinteilungen anzuzeigen, da ja die eigentlichen Werte erst im Attributmanager festgelegt werden.
Die lineare Kurve, hier in Grün, weist gar keine Dämpfung auf. Die lineare Abhängigkeit zwischen Quelle und Ziel wird beibehalten.
Die blaue Kurve ist eine Sinusdämpfung. Die Kurve ist über ihre gesamte Länge gekrümmt. Das Ziel hat keine Zone, in der es sich linear gleichmäßig bewegen würde.
Die rote/violette Kurve ist eine Kombination eines linearen Teilbereichs (der violette Teil, eine gerade Linie) und einer parabolischen, quadratischen Funktion (die roten Endstücke). Hier kommt das Eingabefeld "Linearer Bereich" ins Spiel. Sie setzen einen Wert zwischen 0,05 und 0,95 (5 bis 95 Prozent), der angibt, wie "lang" der lineare Bereich sein soll. (0 bedeutet: kein linearer Bereich; 100 bedeutet: die Kurve ist vollständig linear. Diese Werte sind allerdings aus rechnerischen Gründen nicht zulässig.)
Beachten Sie: Ich benutze hier die Worte "Geschwindigkeit" und "Beschleunigung", um zu beschreiben, was die Dämpfung tut. Das ist allerdings nur eine Beschreibung des sichtbaren Effektes, wenn Sie die Quelle gleichmäßig bewegen. In Wahrheit handelt es sich hier um einen rein statischen Effekt, nicht um eine dynamische Wirkung unter Einbeziehung der Zeitleiste. Sie benötigen keine Animation, um den Effekt zu beobachten. Die Dämpfung berechnet die Zielwerte zu jedem beliebigen Zeitpunkt rein aus den aktuellen Daten der Quelle. Sie könnten, um den Effekt zu beschreiben, stattdessen auch sagen: "Das Ziel erreicht seine Grenzen nur widerstrebend" oder "man benötigt mehr 'Kraft', um das Ziel an seine Grenzen zu schieben". Auch das wären wirksame bildliche Beschreibungen für den Effekt, den die mathematische Formel hat.
Und natürlich kann man die Dämpfung auch auf Rotation und Skalierung anwenden, nicht nur auf die Position eines Objekts.
Ein letzter Hinweis zur Skalierungstransformation. Skalierung arbeitet anders als Rotation oder Translation. Wenn Sie das Handbuch gelesen haben (Ich hoffe, Sie werfen wenigstens ab und zu mal einen Blick hinein!), werden Sie bemerkt haben, daß eine Skalierungsmatrix, falsch angewendet, die untergeordneten Koordinatensysteme verzerren kann. Es existieren sogar zwei verschiedene Tools, das Modell-Werkzeug und das Objekt-Werkzeug, die auf den ersten Blick gleich zu arbeiten scheinen... bis auf die Skalierung!
Beim Modellieren sollte man nur das Modell-Werkzeug verwenden, nicht das Objekt-Werkzeug. (Sie können das Objekt-Werkzeug bei der Animation verwenden... aber ehrlich gesagt verursacht Skalierung über das Koordinatensystem mehr Ärger, als es wert ist.) Skalieren mit dem Modell-Werkzeug bedeutet - kein echtes Skalieren! Während Translation und Rotation die Transformationsmatrix beeinflussen, sorgt das Skalieren mit dem Modell-Werkzeug in Wahrheit für ein Umgrößern und verschiebt die Punkte eines Polygonobjekts, oder ändert die Parameter eines parametrisierten Objekts. Es benutzt nicht die Transformationsmatrix. (Das Objektwerkzeug hingegen tut das, mit allen seltsamen Effekten.)
Das "Kopiere Transformation"-Tag bezieht all seine Information aus der Transformationsmatrix eines Objekts. Das heißt, wenn ein Objekt mit dem Modell-Werkzeug skaliert wurde, besitzt es gar keine Skalierungsinformation, die von dem Tag ausgewertet werden könnte. Die Transformationsmatrix eines solchen Objekts übergibt hier immer den Wert 1 an das Tag. Nur das Objekt-Werkzeug setzt die Transformationsmatrix auf eine Weise, die das "Kopiere Transformation"-Tag auch verarbeiten kann. Wenn Sie sich jemals mit Matrix-Mathematik und Transformationslogik beschäftigt haben, werden Sie verstehen, warum.
Das bedeutet eine unglückliche Inkonsistenz, die ihre Wurzeln im Transformationsmodell der Matrizen hat. Ehrlich gesagt hatte ich schon daran gedacht, die Skalierung als Quell- und Zielparameter prinzipiell auszuschließen. (Beim "Abstand"-Tag habe ich das auch gemacht; dieses Tag bietet nur Translation und Rotation an!) Ich habe mich schließlich - mit einem flauen Gefühl im Magen - dagegen entschieden. Niemand wird gezwungen, die Skalierung zu verwenden, und solange man sie nicht benutzt, sorgt sie auch nicht für merkwürdige Effekte. Vielleicht findet tatsächlich mal jemand eine nützliche Anwendung für diesen Modus.
Viel Spaß.