Download: Animation Replicator with Offset (ARewO) Addon-Version mit GUI

ARewO ist jetzt als kostenloses Addon erhältlich, man braucht sich also nicht mehr mit Python herumzuschlagen und die Funktionalität wurde stark erweitert.

Arewo MenuUPDATE: ARewO hat jetzt einen Knopf, mit dem man den Kopien zufällige Materialien zuweisen kann.

ARewO funktioniert wie eine sehr erweiterte Funktion des Arrays. Man hat aber zusätzlich die Möglichkeit, die Verteilung der Objekte im Raum sehr genau zu beeinflussen, z.B. entlang eines Pfades. Zusätzlich gibt es die Möglichkeit, eventuelle Animationen zu versetzen, was sogar für Armatures funktioniert.
Um ARewO zu installieren, müsst ihr zunächst die arewo.py herunterladen (Rechtsklick -> Speichern Unter).

Danach startet ihr Blender und klickt auf File -> User Preferences (CRTL + ALT + U). Im Addon Tab gibt es ganz unten einen Knopf Install from File. Navigiert zur heruntergeladenen Datei und wählt sie aus. Dann muss das Addon noch aktiviert werden. Man findet es im Animation Bereich der Addons, da dann den Haken bei arewo setzen, um es zu aktivieren. Alternativ kann man auch im Suchfeld arewo eintippen.

Nachdem man das Addon registriert hat, erscheinen die Optionen im Toolshelf (T-Menu). Die ersten drei Knöpfe produzieren Replikate des angewählten Objekts, auf die möchte ich als Erstes eingehen. Sobald man ein aktives Objekt ausgewählt hat, ist der Linear Offset Knopf klickbar. Dieses Objekt ist das Master Objekt, das repliziert wird. Um Object Offset benutzen zu können, muss man zusätzlich ein Placer Objekt in der Liste auswählen und damit man Armature Offset benutzen kann, muss zusätzlich eine Armature und mindestens ein Objekt angewählt sein. Allerdings müssen für einen fehlerfreien Ablauf alle Objekte direkt oder indirekt die Armature als Parent haben.

Hier sind ein paar Dinge, die man tun sollte (aber nicht muss), bevor man ARewO benutzt, um unerwartetes Verhalten zu verhindern:

  1. Das Master Objekt sollte keinen Parent haben (in Armature Offset ist die Armature das Master Objekt) Sonst kann es Probleme mit der "Create Parent"-Option geben.
  2. Man sollte für das Master Objekt Apply rotation und scale klicken - es sei denn, es gibt einen Grund dies nicht zu tun.
  3. Wenn es zu unerwartetem Verhalten kommt, checkt bitte die System Console, da sollte die Erklärung stehen, ansonsten: Dies ist eine Alpha Version, schreibt mir den Fehler, aber seid bitte präzise, damit ich es schnell überprüfen kann.
  4. Wenn man Armature Offset für mehrere Objekt benutzen möchte, müssen alle in einer Parenting Hierarchie sein, deren letztes Parent die Armature ist.

Linear Offset:

Wenn man ein Objekt anwählt, erscheint der Linear Offset-Button. Wenn ihr mehrere Objekte angewählt habt, wird nur das aktive Objekt gelesen. Nachdem man diesen klickt, erscheinen ein paar Optionen:

  • Iterations: Hiermit gibt man die Anzahl der Kopien an, die erstellt werden sollen.
  • Offset Frames: Um wieviele Frames die eventuelle Animation verschoben werden wird.
  • Random Offset: Addiert oder subtrahiert vom Offset Frames einen zufälligen Wert zwischen 0 und der Hälfte des angegebenen Wertes. Gibt man z.B. 10 an, wird die Animation jeder Kopie um den Wert in Offset Frames +/- bis zu 5 Frames zufällig verschoben.
  • Location / Rotation sind recht selbsterklärend, der Wert um den die jeweils nächste Kopie in x, y und z Richtung verschoben bzw. rotiert wird.
  • Create Parent: Erstellt ein Empty bei (0,0,0), dieses Empty fungiert als Parent für alle replizierten Objekte, sodass man sie leicht an einen anderen Ort schieben, rotieren oder skalieren kann, nachdem die Operation abgeschlossen ist.

Object Offset / Armature Offset

Der Object und Armature Offset erlaubt wesentlich mehr Kontrolle, aber er verlangt ein Placer Object. Dieses Objekt wird in der Liste unterhalb der ersten drei Knöpfe ausgewählt und muss in irgendeiner Form animiert sein, da seine Position an jedem Frame die Position der nächsten Kopie bestimmt. Ein kleines Beispiel: Angenommen der Placer ist an Frame 1 bei (0,0,0) und es gibt einen weiteren Keyframe bei Frame 11, bei (10, 0, 0). Dann wandert der Placer über 10 Frames 10 BU. Falls die Interpolation auf Linear steht, werden die Objekte also im Abstand von einer BU parallel zur X-Achse angeordnet. Aber da hört der Spaß selbstverständlich noch nicht auf, man kann das Placerobjekt in jeder Form animieren, wie man möchte, egal ob mit Keyframes, einem Pfad, Physik oder was euch sonst noch einfällt. Tipp: Wenn das Empty ohne parenting relations animiert wurde, kann man in den Object Options bei Dupli "Frames" aktivieren, dabei bekommt man eine ungefähre Vorstellung, wo die Replikate erscheinen werden.

Wenn man also den Placer animiert und ausgewählt hat, bekommt man nach einem Klick auf Object oder Armature Offset folgende Optionen:

  • Iterations: Hiermit gibt man die Anzahl der Kopien an, die erstellt werden sollen.
  • Offset Frames: Um wieviele Frames die eventuelle Animation verschoben werden wird.
  • Random Offset: Addiert oder subtrahiert vom Offset Frames-Wert die Hälfte des angegebenen Wertes. Gibt man z.B. 10 an, wird die Animation um den Wert in Offset Frames +/- bis zu 5 Frames zufällig verschoben.
  • Start frame: Dieser Wert bezieht sich auf den Start der Placer Animation. Nur die Frames zwischen Start Frame und Start Frame + Iterations werden betrachtet.
  • Spacing: Falls die Animation des Placer Objektes zu langsam war und die Objekte sich überschneiden, kann man mit Spacing Frames in der Placer Animation überspringen und die Objekte so weiter auseinander platzieren.
  • Inherit Scale: Wenn der Placer eine animierte Größe hat, können die Objekte dessen Skalierung übernehmen, wenn also der Placer Frame 1 einen Scale Keyframe von (1,1,1) hat und an Frame 2 Z = 2, wird die 2. Kopie eine z-Deltascale von 2 haben, die erste aber unberührt bleiben.
  • Inherit Rotation: Man kann ausserdem die Rotation des Placers über Keyframes, Pfadfolgen oder Physik animieren und die Rotation an einem bestimmten Frame auf die korrespondierende Kopie übertragen.
  • Create Parent: Erstellt ein Empty bei (0,0,0), dieses Empty fungiert als Parent für alle replizierten Objekte, sodass man sie leicht an einen anderen Ort schieben, rotieren oder skalieren kann, nachdem die Operation abgeschlossen ist.
  • Hide Render: Im Normalfall möchte man das Originalobjekt nicht mitrendern, sondern nur seine Kopien, falls doch, kann man diesen Haken ausschalten. Keine Sorge, wenn das Objekt von einem vorhergehenden Testlauf noch versteckt sein sollte, wird hide render für die Kopien automatisch ausgeschaltet.

Anmerkung: Der Object Offset ist wesentlich schneller als der Armature Offset, allerdings ignoriert er Modifiers und Driver. Wenn man diese Optionen verwenden möchte, muss man Armature Offset benutzen und dazu eine Armature erstellen, egal ob sie verformt oder nicht.

Advanced Offset:

Der Armature Offset benötigt eine Armature als Parent, diese muss aber nicht verformen. Er ist langsamer als der Object Offset und sollte deshalb nur verwendet werden, wenn man Modifier oder Driver benutzt.
Hier sind die Unterschiede:

1. Er unterstützt Modifiers und Driver.
2. Er unterstützt multiple Objekte, diese müssen allerdings direkt oder indirekt ein child der Armature sein. Falls man z.B. ein Lattice verwenden möchte, sollte das Mesh child des Lattice sein, das Lattice wiederum child der Armature. Dies ist notwendig, da nur die Armature verschoben wird und unparented objects ihr nicht folgen würden.

Hier sind ein paar Anmerkungen über die interne Struktur von ARewO:

Nachdem man AreWO ausgeführt hat, kann man durch die Timeline gehen und sich den Offset der Animationen live ansehen, ohne die Möglichkeit zu verlieren, weitere Änderungen vorzunehmen.

The Location / Rotation Offset im Linear Modus werden die Deltatransformation der Kopien verändern. Das hat den großen Vorteil, dass sie zu vorhandenen Animationen von Location / Rotation / Scale dazugezählt werden und nicht mit ihnen interferieren. Dasselbe gilt für die Inherit Scale / Rotation Optionen der beiden anderen Knöpfe.

Das Addon erstellt "linked copies" der angewählten Objekte. Das hat mehrere Vorteile. Zum einen erhöht es die Rendergeschwindigkeit und zum anderen kann man seine Objekte im Edit Modus alle gleichzeitig bearbeiten. Wenn Ihr einzelne Objekte braucht, die nicht gelinkt sind, drückt U -> "Object & Data". Da Shapekeys dem Datablock angehören und nicht der Action, ist es nicht möglich Shape Keyframes zu versetzen, damit würde man die Shapekey Animation aller Objekte gleichzeitig beeinflussen.

Wenn man die Offset Frames auf 0 stellt, wird die Animation jedesmal durch einen zufälligen Wert zwischen 0 und dem im Random Offset eingestellten Höchstwert versetzt. Wenn man Offset Frames auf 1 und Random Offset auf 50 stellt, kann der Startframe der nächsten Animation bis zu 24 im negativen Bereich liegen, also bei Frame -24 sein (1 - 50 / 2). Falls dies unerwünscht geschehen sein sollte, kann man im Nachhinein alle Objekte auswählen und im F-Curve Editor mit A alles anwählen und alle Keyframes mit G -> X in der Zeit verschieben.

Für die Optionen Object und Armature Offset kann man für die Objekte keine Location Keyframes benutzen, weil diese die Position, die durch den Placer zugeteilt wurde, ersetzen würden. Dafür kann ich 2 Workarounds vorschlagen:

  1. Wenn man Armature Offset verwendet, kann man den Parent Bone im Pose Mode animieren.
  2. Man kann das Prinzip des Linear Offset umkehren und in diesen beiden Modi die Delta Location animieren, anstatt die absolute Position zu keyframen.

Ein paar Beispiele:

Man muss sich mit ARewO nicht auf animierte Objekte beschränken, es kann auch sein, dass man einfach Objekte im Raum anordnen möchte, deren Eigenschaften auf andere Weise anzusteuern sind. Hier sind ein paar Beispiele:

  1. Add -> Curve -> Beziér.
  2. Add -> Empty (mit einem Namen, den man sich merken kann, z.B. "Placer")
  3. Das Empty anwählen, dann mit SHIFT den Pfad anwählen, CRTL + P -> "follow Path"
  4. Das Placer Empty wird jetzt über 100 Frames den Pfad ablaufen.
  5. Das Objekt anwählen, das repliziert werden soll.
  6. Object Offset Klicken.
  7. Man kann den Abstand der Kopien noch mit Spacing anpassen.



Abb. 2) Mit dem "Inherit Scale"-Häkchen übernehmen die Kopien die Skalierung des Placers über die Zeit.

Man kann mit der "Inherit Scale"-Funktion die Skalierung der Objekte sehr genau bestimmen (Abb. 2). Hier ist ein Beispiel, um Objekte mit zufälliger Größe zu erstellen.

  1. Wähle das Placer Objekt an. (Das Objekt, das in der Placer Object-Liste im ARewO-Panel ausgewählt ist)
  2. Drücke I -> Scale um einen Scale Keyframe zu erstellen.
  3. Geh in den Graph Editor.
  4. Wähle den X Channel der Scale an, drücke N und in dem Menü, das rechts entsteht, kann man ganz unten auf Add Modifier klicken.
  5. Wähle den Noise Modifier (Scale ist die Frequenz, also wie oft, strength ist die Amplitude, also wie stark)
  6. Klick auf den schrägen Pfeil nach oben, der auf das Clipboard zeigt, um den Modifier in den Zwischenspeicher zu laden
  7. Paste ihn auf Y und Z Channel
  8. Wenn du jetzt Object oder Armature Offset auswählst, kannst du die Größe der Objekte randomisieren, indem du "Inherit Scale" anschaltest.

Noch mehr Kontrolle hat man, wenn man die Scale manuell animiert. In Abb. 2 habe ich die Z-Scale animiert und die Reihe der Planes spiegelt die Kurve der Z-Scale wieder.


Last but not least: Die Speed Up Tools
Mit dem "Mute Modifier" Knopf kann man die Modifier aller angewählten Objekte im Viewport ausschalten. Das erhöht die Arbeitsgeschwindigkeit, der Render wird davon nicht beeinflusst. Armature Modifier werden nicht ausgeschaltet. Wenn man "Enable Modifier" drückt, werden alle Modifier auf allen angewählten Objekten angeschaltet. Der "Apply Modifier"-Knopf ist eine Erweiterung des korrespondierenden Knopfes im Modifier Stack. Er wendet den ersten Modifier im Stack an (apply) und überträgt die Änderungen auf alle Objekte, die den selben Datablock verwenden. Wenn man also z.B. den Object Offset benutzt hat und das Master-Objekt mit einem Modifier verändert, kann man diese Änderung auf alle Kopien übertragen. Das ist günstiger, als den Modifier auf alle Instanzen zu kopieren, weil auf diese Weise die Replikate auch im Render Instanzen bleiben (was nicht der Fall ist, wenn sie einen Modifier haben) und auf diese Weise die Rendergeschwindigkeit stark erhöhen.
Wenn man den Apply Modifier Operator benutzt, erhält man zwei weitere Optionen:

  • Remove Existing: Diese Option entfernt alle Modifier der Objekte mit demselben Datablock. Falls alle linked copies schon diesen Modifier tragen, würde apply dieses Modifiers dazu führen, dass die Kopien diesen Modifier sozusagen zweimal bekommen, einmal über apply und einmal über den schon exisitierenden, deshalb kann man mit dieser Option alle existierenden Modifier von den Objekten löschen (ausgenommen das aktive Objekt).
  • Remove Same: Manchmal möchte man einige Modifier behalten, z.B. Armatures, deshalb kann man mit dieser Option nur die Modifier entfernen, die vom gleichen Typ sind wie derjenige, der gerade applied wurde.

Kein Speed Up Tool, aber trotzdem nützlich:
Der Random Datablocks Knopf: Er untersucht das aktive Objekt und zählt dessen Materialien. Dann verteilt er diese Materialien zufällig über alle angewählten Objekte.
WICHTIG: Dieser Knopf sollte nur benutzt werden, wenn alle angewählten Objekte den selben Datablock haben (Kamera, Lampen und Empties werden ignoriert), da diese Funktion Kopien des aktiven Objekts erstellt und ihnen zufällig ein Material zuteilt und dann den gesamten Datablock an die entsprechenden Objekte weitergibt. Das bedeutet auf deutsch: Alle angewählten Objekte werden nach dieser Funktion das gleiche Mesh / Text / Curve enthalten, aber mit verschiedenen Materialien. Wenn ihr also einen Cube angewählt hattet und das aktive Objekt eine Sphere ist, weden alle Objekte ab da Spheres sein.

Randomize Materials: Dieser Knopf ist eigentlich nicht dazu gedacht, mit Objekten aus einem Durchlauf von ARewO verwendet zu werden. Er erlaubt es, verschiedenen Objekten zufällige Materialien zuzuweisen, ohne ihren Datablock auszutauschen. Dadurch kann die Funktion auch auf Objekte verschiedenen Typs angewendet werden, aber die Objekte werden keine Instanzen mehr sein, was die Renderzeit erhöht.

Diese Knöpfe können auch sehr praktisch sein, wenn man ARewO nicht benutzt.

Viel Spaß.

TODO:

  1. Random Scale Button, damit man nicht mehr 3 Noise Modifier auf den Placer geben muss.