Loony Letters – Erste Eindrücke

Januar 23rd, 2007

Seit vier Tagen ist L.L. hochgeladen und die ersten Erkenntnisse sind ernüchternd: Massenhaft Abstürze, läuft nicht unterhalb Version 9.5., mehrere Tags funktionieren auch nicht.
Im plugincafe Forum kam auch noch der Hinweis, dass ein non-modal Dialog dafür wesentlich besser geeignet wäre – D.h. während der Eingabe läuft C4D weiter, man kann die neuen Werte sofort überprüfen, der Workflow wird dadurch natürlich erheblich gesteigert.
Leider ist ein non-modal Dialog wesentlich schwieriger umzusetzen, als ein modal Dialog, bei dem während der Eingabe alles gestoppt wird.
Außerdem muss getestet werden, welches Objekt aktiv ist, da nur dann die Parameter angezeigt werden sollen, wenn ein Loony Letter Text angewählt ist.
Der Denkansatz ist: Es werden 2 Plugins verwendet. Eins ist das eigentlich expressionplugintag, welches die Buchstabenpositionen, rotation, Skalierung etc berechnet. Da non-modal Dialoge nur bei Menu Plugins funktionieren, kommt eben noch ein solches zum Einsatz: der Loony Letters Editor. Der übergibt die Werte an das Tag… und zwar per basecontainer. Der Editor holt sich die Werte aus dem Tag, wenn er keine findet, verwendet er Standardwerte. Bei jeder Änderung der Parameter wird der gesamte Basecontainer wieder an das Tag übergeben.
Soweit die Theorie, bisher scheint das ganz gut zu laufen und auch die Abstürze haben sich auf ein erträgliches Minimum reduziert.
Die Abwärtskompatibilität werde und kann ich nicht herstellen, erstaunlicherweise läuft Loony Letters wohl auch unter R10.

Mehr zu Loony Letters in den folgenden Tagem.

Loony Letters – typo animation plugin

Januar 17th, 2007

Aller Anfang ist schwer, vor allem, wenn man mit der C4D eigenen Scriptsprache C.O.F.F.E.E. noch nie etwas zu tun gehabt hat.
Andere Programmiersprachen wie Basic (in den frühen 80er Jahren) oder Pascal (anno 1990) sind schon ewig vergessen und bringen eigentlich auch nicht viel.
Die einzig “neue” Sprache war dann ein bisschen php als ich für meine Seite ein Forum meinen Wünschen angepasst hatte. Ach, ja, und Flash Actionscript gab’s auch noch.
Soweit zu meiner Vorbildung.
Deshalb war mein erster Plugin-Versuch namens “Meshmerize” auch zum Scheitern verurteilt und nach einigen Wochen sinnlosem Programmierens gab ich es auf.
Loony Letters ist mein erstes fertiges Plugin – komplett in C.O.F.F.E.E. geschrieben und dann kompiliert. Nicht, weil ich der Meinung bin, dass es so schützenswert sei, sondern weil da wahrscheinlich so viele umständliche Methoden drin sind, über die ein erfahrener Coder nur den Kopf schütteln würde.

Was macht Loony Letters?

http://www.c4d-goodies.de/Images/loony_letters_mini.mov 

Mit der wachsenden Popularität von (damals noch) Macromedia Flash keimte ein weiteres Phänomen auf: animierte Schriften. Kaum eine Flash-Seite wollte mehr darauf verzichten, irgendwo ein Wort Buchstabe für Buchstabe reinfliegend zu animieren. Irgendwann konnte das keiner mehr sehen und die Flash-Programmierer besannen sich auf andere Arten der Textanimation.
Interessanterweise ist dieser Trend jetzt verstärkt im Fernsehen zu beobachten, vor allem bei Hintergrundloops und in Signations.
Wer so etwas bisher in C4D umsetzen wollte, musste das per mühsamer Handarbeit machen:

  1. Textspline erstellen
  2. in Objekt konvertieren
  3. Jeden Buchstaben einzeln per Hand keyframen
  4. Timing angleichen
  5. Punkte 3-4 so lange wiederholen, bis man entweder ein vernünftiges Ergebnis hatte oder genervt zu einer anderen Applikation wechselte oder
  6. MoGraph kaufen.

Aber das muss nicht sein, da Loony Letters genau das macht: Animation der Bewegung, Rotation, Skalierung inklusive Offset der einzelnen Buchstaben sowie zufällige Variationen der gewählten Werte. Rein und Rausanimieren in Sekunden und dabei völlig unkompliziert in der Handhabung: Textspline erstellen, Loony Letters Tag zuweisen, Werte eingeben – Fertig! Und wenn es nicht gefällt einfach neue Werte ausprobieren.
Natürlich gehen auch mehrere Loony Letters Animationen in einer Szene.

Interne Funktionsweise

Nach der Eingabe der Parameter, werden diese im Container des Plugins gespeichert, damit ein Kopieren oder aber die Verwendung mehrerer Loony Letters Tags gewährleistet sind.
f_init() Initialisierung des Loony Letters Objekts
Im nächsten Schritt wird eine Kopie des verwendeten Textsplines erstellt und im Klon die Option “Buchstaben einzeln editierbar” aktiviert.
Per SendModelingCommand wird dieser zu einem Objekt konvertiert. Als Resultat erhält man ein Null-Objekt (dem der Name Loony Letters Object zugewiesen wird) und als Kinder davon die einzelnen Buchstaben.
Deren Achsenmittelpunkt liegt links unten, was besonder für die Rotation ungünstig ist. Aus diesem Grund werden die Achsen zentriert und die Position und Rotation in Arrays im Tag-Container gespeichert.
Im folgenden wird je ein Extrude-Nurbs Objekt generiert, das als Parent den jeweiligen Buchstaben übergeordnet wird.
Im Groben und Ganzen ist das der wichtigste Teil der Initialisierung, weil wir nun bereits aus einem Textspline einzelne – renderbare – Buchstaben gemacht haben.
Als nächstes werden noch die Zufalls-Variationen generiert und ebenfalls in Arrays abgespeichert.

f_calc_anim_in/out() Universelle Berechnungsfunktion
Kernstück der Berechnung ist eben diese Funktion. Universell deshalb, weil alle Werte damit ermittelt werden können – unter Berücksichtigung von Start/Dauer/Buchstabenreihenfolge/Versatz etc liefert sie die Ergebnisse für die Position, Rotation und Skalierung anhand der Parameter aus dem Eingabedialog.

Loony Letters Dialogfenster

PARAMETER
Animation IN
enable Animation (Buchstaben-Animation aktivieren/deaktiveren)
Start
(Eingabe in Frames)
Duration (Dauer, Eingabe in Frames)
Fade-in (Anzahl Frames bis Buchstaben eingeblendet sind)

Direction (Textrichtung, gibt an, ob das Wort von links nach rechts, als Ganzes (none) oder von rechts nach links animiert werden soll)
Offset (Versatz zwischen den Buchstaben, Eingabe in Frames. Bei einem Offset von 0 werden alle Buchstaben gleichzeitig animiert. TIP: Wenn ein Frame z.B. bei langen Wörtern zu viel ist, können auch Werte kleiner als 1 eingeben werden)

Position (X-,Y-,Z-Werte um die die Buchstaben über die Dauer der Animation bewegt werden)
Smooth (Anzahl Frames, um die die Bewegung abgebremst wird)
Variation (zufällige Abweichung von den Werten, Angabe in Prozent)
Rotation (P-,H-,B-Werte um die die Buchstaben über die Dauer der Animation gedreht werden)
Smooth/Variation analog zu Position
Scale (X-,Y-,Z-Werte um die die Buchstaben über die Dauer der Animation skaliert werden – !!Achtung hierbei handelt es sich nicht um absolute Größenangaben, sondern um Skalierungsfaktoren!!)
Random-Seed (Initialisierungswert für Zufallsberechnung)

ANIMATION OUT
Hier finden sich die selben Parameter analog zur Animation In – nur eben umgekehrt.
Sprich Smooth sorgt für einen weichen Start der Animation, Fade-Out blendet die Buchstaben gegen Ende der Animation aus.

EXTRUDE
An dieser Stelle bekommen die Buchstaben Dicke, so, wie man das vom Extrudieren Objekt kennt. Die Parameter sollten dementsprechend bekannt sein.
Bei einem Extrusions-Wert von 0 besitzen die Buchstaben zwar keine Tiefe, sind aber dennoch sichtbar – gut geeignet für 2D Textanimationen bei denen z.B nur die Breite skaliert wird.

In Planung / Ideen:
MEHRZEILIGER TEXT
Tja, geht leider noch nicht…. sollte aber in einer späteren Version behoben werden.
RESET/SAVE/LOAD
Wenn alles klappt, können hier eigene Loony Letters Presets abgespeichert und geladen werden. Reset setzt alle Einstellungen auf die Standardwerte zurück.
OFFSET / DURATION VARIATION
Ein weiteres denkbares Feature wäre, auch Dauer und Versatz Zufallsabweichungen zuzuweisen – im Moment noch nicht die höchste Priorität.
BOUNCE
Die Buchstaben federn ab – sollte aber irgendwie abhängig vom Smooth-Faktor sein.
SOUND OBJECT
Jedem Buchstaben wird ein SoundObject untergeordnet, wobei das abnehmende Micro dann an die Kameraposition gekoppelt wäre. Der User kann einen Sound auswählen und dieses sollte dann pro Buchstabe richtig im Stereofeld (5.1?) gerendert werden. So ein Sound könnte z.B. ein Rauschen sein, dass durch den – hoffentlich entsehenden – Dopplereffekt zu einem knackigem “Whooosh” wird… Ist aber nur ein Gedankenspiel.

FLYING OBJECTS
Anstatt eines Textsplines können Objektgruppen animiert werden. Einfach die zu animierenden Objekte einem Nullobjekt unterordnen… fertig. Sollte machbar sein.