# Blender-Handbuch: Driver

* ↑ Inhaltsverzeichnis ↑
* Handbuch durchsuchen
* Diese Seite bezieht sich auf Blender v2.77
Ein Driver erlaubt es, einen bestimmten Wert eines Objektes / Materials / einer Textur ... durch andere Eigenschaften, Zahlen, Bewegungen von Objekten und Scripte zu steuern. Sie können im Prinzip jedes Eingabefeld, das einen numerischen Wert erfordert, mit einem Driver steuern. Einige (von unendlich vielen) Einsatzgebiete(n) sind:
* Die Synchronisation der Vorwärtsbewegung eines Rades mit seiner Drehung.
* Die Synchronisation einer Schrittlänge mit der Bewegung eines Körpers.
* Die gezielte Verformung eines Meshes die durch eine Armature nicht exakt genug zu steuern wäre, bspw. die Anspannung des Bizeps beim Beugen des Arms.
* Alle Bewegungen die ich gut durch einen mathematischen Ausdruck oder durch eine Beziehung zu einem anderen Objekt darstellen kann.
Das Setup des Drivers erfolgt an zwei Stellen:
* Am Eingabefeld selbst fügen Sie den Driver mit einem Rechtsklick -> Add Driver(s) ein.
* Den Graph Editor stellen Sie zunächst auf den Drivers Mode um, um im Properties Panel dann alle anderen Einstellungen vorzunehmen.

## Driver einfügen

Der übliche Weg einen Driver einzufügen ist es, mit der Maus über das Eingabefeld zu fahren, und dann mit einem Rechtsklick das Kontextmemü zu öffnen.
* Add Drivers: diese Option (sofern verfügbar) erlaubt es, Driver für mehrere Eigenschaften gleichzeitig hinzuzufügen, z.B. für die X/Y/Z-Komponente des Ortes.
* Add Single Driver: fügt einen Driver nur für die ausgewählte Eigenschaft ein.
Wenn Sie einen Driver eingefügt haben, erscheint das Eingabefeld in Violett (hier für die Y-Komponente des Ortes).
Reload trusted
Die Datei muss nun als vertrauenswürdig neu geladen werden, sonst werden Expressions nicht ausgewertet. Sie können Driver auch ohne Expressions verwenden, dann benötigen Sie diesen Schritt nicht.
* Speichern Sie die Datei.
* Wechseln Sie den Frame.
* Im Header des Info-Window erscheint der Button: Reload trusted. Klicken Sie diesen Button an und laden die Datei neu.

### Weitere Möglichkeiten zum Einfügen eines Drivers

* Das Tastaturküzel D fügt einen Driver ein, wenn sich die Maus über dem Eingabefeld befindet.
* Sie können einen einzeiligen Phython-Ausdruck (eine Expression) direkt in das Eingabefeld schreiben, wenn Sie diesen mit einer # einleiten. Beispiele:
   * #frame -1
   * #frame/20
   * #sin(frame)
   * #cos(frame)
       Weitere Beispiele dazu kommen später.
* Mit Copy/Paste über das Kontextmenü können Sie Driver zwischen verschiedenen Eingabefeldern kopieren.

## Driver einstellen

* Wechseln Sie im Graph Editor-Fenster in den Drivers Mode (Abb. 3).
* Klicken Sie links auf dem Panel im Graph Editor den Driver an, den Sie verändern möchten.
* Öffnen Sie mit N das Properties-Panel im Graph Editor.
In Abb. 4: sehen Sie ein Beispiel für eine Scripted Expression, den Driver frame-1. Dieser setzt (in diesem Fall die Y-Location) auf die Koordinate "aktueller Frame -1", so dass der Körper im Frame 1 eine Y-Position von 0 hat.

### Verfügbare Driver-Typen

* Maximum Value: der größte Wert der erstellten Variablen, wenn also mehrere Variablen definiert wurden, wird immer der jeweils größte Wert verwendet. Haben Sie nur eine definierte Variable, wird diese immer verwendet, dann gibt es keinen Unterschied zwischen Maximum, Minimum, Summe und Durchschnitt.
* Minimum Value: der kleinste Wert der erstellen Variablen
* Scripted Expression: ein Phython-Ausdruck (siehe unten)
* Sum Values: die Summe der Werte
* Averaged Value: der Durchschnitt der Werte
Scripted Expression ist natürlich viel flexibler als die anderen Methoden, hat aber einen Nachteil. Wenn Sie die Datei weitergeben wollen, muss diese als vertrauenswürdig geöffnet werden.

## F-Curve

Bisher wird der Driver Value 1:1 als Eingabewert verwendet. Dies können wir mit der F-Curve ändern, ohne dass wir dafür einen unter Umständen komplizierten mathematischen Ausdruck benutzen müssten.
Die Curve definiert, wie jeder Driver Value auf den Zielwert abgebildet wird. Die X-Achse zeigt den Driver Value, die Y-Achse den Zielwert. Eine Gerade im 45°-Winkel lässt die Abbildung bei 1:1. Eine Gerade im -45°-Winkel entspricht einer Multiplikation mit -1.
* Mit Strg-LMB fügen Sie neue Punkte zur Curve hinzu.
Erläuterung der Kurve in Abb. 6:
* Driver Value <5: der Wert wird 1:1 als Zielwert verwendet
* Driver Value 5-50: der Zielwert ändert sich praktisch nicht, unabhängig vom Driver Value
* Driver Value >50: der Zielwert wird wieder 1:1 erhöht, also bei einer Erhöhung des Driver Value um 1 wird der Zielwert ebenfalls um 1 erhöht

### Modifier

Neben der "händischen" Veränderung der Kurve können wir auch Modifier verwenden, um die Kurve zu setzen. Damit können wir auch an dieser Stelle wieder mathematische Funktionen verwenden, um den Zielwert zu verändern. Die Modifier können eine händisch erzeugte Kurve ersetzen (Voreinstellung) oder ergänzen (Additive).
* Generator:
** Expanded Polynomial: ein Polynom mit eingestelltem Grad (Order), also Ausdrücke der Form y=a + bx / y=a + bx + cx^2 .... Ein Polynom des Grades 1 mit a=0 und b=1 erzeugt die ursprüngliche, Koordinatensystem halbierende Gerade.
** Factorized Polynomial: ein faktorisiertes Polynom ist im zweiten Grad ein Ausdruck der Form y=(a + bx)(c + dx), mit a=b und c=d also y=a^2 + 2adx + (dx)^2 (Binomische Formeln).
* Built-in Function: Hier stehen die Funktionen Sinus/Cosinus/Tangens/Quadratwurzel/natürlicher Logarithmus/normalisierter Sinus Cardinalis bereit (in den verlinkten Wikipedia-Artikeln finden Sie Abbildungen, die diese Kurven zeigen).
* Envelope: Hier können Sie mit Kontrollpunkten eine Hüllkurve über die Kurve legen (so wie z.B. in Audacity).
* Cycles: zyklische Wiederholung der eingestellten Kurve
* Noise: Rauschen
* Python: hmmmm, bis jetzt weiß ich nicht, was das macht...
* Limits: begrenzt X- bzw. Y-Werte auf Minima/Maxima
* Stepped Interpolation: gibt der Kurve eine treppenstufenartiges Aussehen, indem die Werte innerhalb einer bestimmten Anzahl von Frames abgerundet werden.

## Scripted Expressions

Mit Scripted Expressions können Sie jede Form von Beziehung ausdrücken, die es zwischen Objekten und Eigenschaften geben kann. Damit es einfach ist auf die Eigenschaften von Objekten als Eingabewerte zurückzugreifen, verwenden Sie Variablen.
* Eine Variable fügen Sie mit Add Variable hinzu. Im Feld darunter können Sie die Variable benennen (voreingestellt ist var), wobei jeder Name nur einmal vorkommen darf.
* Wählen Sie den Variablen-Typ:
** Single Property: der Wert einer RNA-Eigenschaft, das bedeutet also jede beliebige Eigenschaft eines Objektes.
** Transform Channel: Einer der Transform channels eines Objektes oder eines Bones, also Location/Rotation/Scale
** Rotational Difference: Den Winkelunterschied zwischen zwei Objekten oder Bones.
** Distance: Die Entfernung zwischen zwei Objekten oder Bones.

### Properties

Im Prinzip sind alle Felder und Checkboxen, in die Sie etwas eintragen können, RNA-Eigenschaften. Solange die RNA-Eigenschaft nicht gültig ist, ist das Feld rot hinterlegt. Sie können ebenfalls Custom Properties verwenden, also Eigenschaften, die Sie selbst dem Objekt hinzugefügt haben.
* Wählen Sie zunächst den Typ der ID-Property (Abb. 7).
* Nun wählen Sie das Objekt.
* Nun tragen Sie den Path ein, das ist der Name der Property. Um diesen herauszufinden, gehen Sie mit der Maus über das Eigenschaft und machen einen Rechtsklick->Copy Data Path. Fügen Sie diesen Path nun mit Strg-V in das Feld ein.
Da es sich dabei um einen einzelnen Wert handeln muss, kann bspw. nicht einfach der Ort verwendet werden, wohl aber X/Y/Z-Komponente des Ortes einzeln (Abb. 8). Bei einer Farbe wäre es z.B. specular_color.r usw.

### Beispiele für Expressions

Als Ausdruck muss ein gültiger Phython-Ausdruck verwendet werden. In diesen können die erzeugten Variablen eingesetzt werden.
* var + 5: addiert die Zahl 5
* var1 + var2: addiert die Variablen var1 und var2
* + - * /: die Grundrechenarten
* 1.8931: reelle Zahlen bitte nicht mit Komma, sondern mit Punkt trennen
* pi * var: 3.1415... * Variablenwert. Die Funktionen der Module mathutils und math werden standardmäßig importiert.
Ansonsten können Sie sich in der Phython-Konsole mit dem Befehl bpy.app.driver_namespace die verfügbaren Funktionen anzeigen lassen.

## Links

* Manual (Englisch)
* ↑ Inhaltsverzeichnis ↑
* Glossar