Abstand

Was tut es?

Diese Expression setzt die Position und Rotation eines Objekts in Abhängigkeit von zwei bis vier anderen Objekten, oder einfach gesagt: es positioniert das Ziel "zwischen" den Controllern. Bewegen Sie einen der Controller, und das Ziel bewegt sich mit. Jeder Controller trägt seine Werte mit einer gewissen Gewichtung bei und erlaubt einen Faktor und einen Offset für spezielle Anwendungsfälle. Jede Achse kann separat behandelt werden.

Welche Parameter müssen gesetzt werden?

Attributes of distance tag

Zunächst muß die Anzahl der Controller gesetzt werden. Zwei Controller sind das Minimum, vier das Maximum. Die Controller müssen entweder über ein Link identifiziert werden oder über eine lokale Namenssuche (Details finden sich auf der Seite über Kinematische Tools). Das Flag "Aktiv" entscheidet, ob die Expression überhaupt angewendet wird, und schließlich der "Quell/Ziel-Modus" befindet darüber, ob die Werte aus dem lokalen oder globalen Koordinatensystem genommen (und dahin zurückgeschrieben) werden. Wenn Ihre Quellobjekte nicht allesamt Kinder desselben Elternobjektes sind, sollten Sie das globale Koordinatensystem verwenden.

In den Abschnitten zur Translation und Rotation müssen Parameter für jede Achse definiert werden (es sei denn, Sie setzen das Flag "Gleiche Werte für alle Achsen"; dann werden die eingegebenen Werte für die X-Achse (bzw. im Falle der Rotation die H-Rotation) auch auf alle anderen Achsen angewendet).

Sie werden bemerken, daß die Eingabefelder bis auf die erste Achse automatisch deaktiviert werden, wenn "Gleiche Werte für alle Achsen" gesetzt ist; ebenso werden die Controller-Felder inklusive Gewichtung abgeschaltet, wenn die zugehörigen Controller nicht benötigt werden.

Jede Achse hat sechs Parameter: vier Gewichtungen für die vier Controller, einen Faktor und einen Offset. Faktor und Offset werden angewendet, nachdem die Position aus den Controllern berechnet wurde. Sie müssen sorgfältig eingesetzt werden und dienen in diesem Kontext nur speziellen Zwecken; im Normalfall werden Sie den Faktor auf 1 und den Offset auf 0 belassen. Dies sind die voreingestellten Neutralwerte.

Wie arbeiten die Gewichtungen?

Wenn Sie ein Element zwischen zwei anderen positionieren wollen, könnten Sie das theoretisch mit nur einem Wert tun (wie von konkurrierenden Plugins demonstriert ;-). Dieser Wert wäre eine prozentuale Angabe zwischen 0 und 100, wobei 0 das Ziel an die Position von Controller 1 setzt und 100 an die Position von Controller 2. Mit steigendem Wert bewegt sich das Ziel von Controller 1 nach Controller 2. Bei 50 (%) sitzt das Ziel genau zwischen den beiden Controllern. Ganz einfach.

Leider funktioniert dieses Ein-Wert-Konzept nicht mit mehr als zwei Controllern. Daher arbeiten wir mit Gewichtungen. Jedes Gewicht bestimmt, wie stark der jeweilige Controller das Zielobjekt beeinflußt. Offensichtlich wird ein Gewicht von 1 an jedem Controller das Ziel genau zwischen den Controllern halten. Ebenso einfach einzusehen ist, daß bei einem Gewicht von 4 der Controller 1 das Ziel viermal stärker beeinflußt als ein Controller 2 mit einem Gewicht von 1.

Aber wenn Sie mit dem einfachen Zwei-Controller-Szenario zu spielen beginnen, werden Sie schnell ein scheinbar seltsames Verhalten feststellen. Setzen Sie die Controller-Gewichtungen nacheinander (oder besser noch gleichzeitig bei mehreren Zielobjekten) auf 5/1 (Gewichtung 5 auf Controller 1, Gewichtung 1 auf Controller 2), 4/1, 3/1, 2/1 und 1/1 für die Zielobjekte, und untersuchen Sie, wie die Ziele positioniert werden. Obgleich die Gewichtung auf Controller 1 sich immer um 1 ändert, wächst die Entfernung zwischen den Zielpositionen! Sollte die Entfernung der Zielpositionen sich nicht gleichmäßig ändern?

Die Antwort ist bei einigem Nachdenken nicht schwer: das Gesamtgewicht ändert sich bei diesen Einstellungen! Eine Gewichtung von 5/1 bedeutet ein Gesamtgewicht von 6. Eine Gewichtung von 1/1 hingegen resultiert in einem Gesamtgewicht von 2. Wenn sich die Gesamtgewichtung ändert, sind die resultierenden Positionen nicht länger vergleichbar!

Das hört sich jetzt wie höhere Mathematik an. Kann man damit überhaupt eine regelmäßige Positionierung von Zielobjekten zwischen zwei Controllern erreichen? Wie die Demoszene zeigt, geht das durchaus:

Distance example

Der Trick dabei ist, daß man das Gesamtgewicht konstant hält. Stellen Sie sich vor, das Gesamtgewicht sei stets 100%. Verteilen Sie diese Prozentpunkte dann auf die Controller. Versuchen Sie Gewichtungen 10/90, 20/80, 30/70, 40/60, und so weiter... und Sie werden sehen, daß die Zielobjekte gleichmäßig positioniert werden! (Sie können die relativen Gewichtungen auch reduzieren zu 1/9, 2/8, 3/7, und so weiter.)

Wenn Sie sich jetzt das Ein-Wert-Beispiel von oben ins Gedächtnis rufen, das nur einen Prozentwert benutzte: dies ist unmittelbar übertragbar auf zwei Controller und Gewichtungen. Setzen Sie einfach die Gewichtung des einen Controllers auf den Prozentwert, und die Gewichtung des anderen auf 100 minus dem Prozentwert. Der Effekt ist derselbe.

Mit diesem Wissen können Sie jetzt auch mit drei oder vier Controllern und Gewichtungen von 30/40/30 oder 20/40/30/10 arbeiten. Belassen Sie die Gesamtgewichtung auf 100 und verteilen Sie diesen Wert auf alle Controller. Experimentieren Sie ein wenig, und Sie werden die Mächtigkeit des Gewichtungskonzepts schnell verstehen.

Wie kann ich eine Position "außerhalb" der Controller setzen?

Bis jetzt wurde das Zielobjekt immer "zwischen" den Controllern positioniert. Manchmal möchte man ein Ziel aber auch jenseits eines Controllers positionieren, sozusagen auf der "anderen Seite" des zweiten Controllers. Wie kann man das erreichen?

Auch das ist einfach: Setzen Sie ein Gewicht auf einen Wert kleiner als Null. Ein Controller mit einer solchen Gewichtung wird die Zielposition "negativ" beeinflussen. Wenn Controller 1 ein Gewicht von 200 hat und Controller 2 ein Gewicht von -100 (auch hier habe ich wieder ein Gesamtgewicht von 100!), dann erscheint das Zielobjekt auf der abgewandten Seite von Controller 1, "abgestoßen" von Controller 2. Auch hier kann man beide Controller bewegen und die Effekte begutachten.

Das ist ebenso möglich mit drei oder vier Controllern, obwohl die Effekte nicht ganz so intuitiv erscheinen mögen.

Das einzige, was man nicht tun darf, ist, die Gewichte so zu setzen, daß eine Gesamtgewichtung nahe 0 herauskommt, also etwa 100/-100. In diesem Fall schreibt das Tag eine Fehlermeldung auf die Konsole.


Zurück zur Kinematische Tools-Seite

Zurück zur Handbuch-Hauptseite