blindcatlogo.gif
Alles zum Filmemachen


Letzte Aktualisierung: 30.03.2017

TR Mask Creator - Für Programmierer

27.12.2016 - 17:23

software/trmc-screenshot.jpgAchtung, bei TRMC handelt es sich um eine Entwicklerversion. Die Software ist nicht stabil, und sie ist auch nicht als Anwendungsprogramm zu verstehen. Wer sie benutzen will muss immer den Source Code passend abändern, neu kompilieren und dann das Ergebnis prüfen. Laufzeitfehler sind nicht ausgeschlossen!

Ansonsten ist TRMC in der vorliegenden Fassung die Software mit der ich die bewegten Masken für meine mutliplen Videolayer in meinem Film Time Reloaded erzeugt habe. Nähere Informationen finden sich auch in den Hintergrundinformationen zu Time Reloaded im Menü unter Filme. Wer überhaupt einen Eindruck bekommen will, was diese Masken machen, wie sie wirken und schließlich aussehen, sollte sich erst den kurzen Film ansehen.

Und wer jetzt nicht abgeschreckt ist, kann sich den SourceCode zu trmc hier herunterladen

Zum Download hier klicken!

Die auch im readme.txt enthaltene Kurzanleitung liest sich so:

Wie man trmc benutzt:
1. Ordner Struktur im Dateisystem
Erzeugen Sie für ein Motiv mit mehereren Videoclips einen Ordner, z.B. "empirestate". In diesem Ordner erzeugen Sie die Unterordner "mov", "stills" und "trmc". Dann erhält man so etwas:

-empirestate+
            |
            +mov
            |
            +stills
            |
            +trmc

2. Kopieren Sie alle Videoclips die wirklich benutzt werden sollen in den Ordner "mov".
3. Es sollte wenigstens ein Standbild (jpg mit der hellsten Tageslichtaufnahme) in den "stills" Ordner (es wird benutzt um eine Überlagerungsvorschau mit dem Button Original anzuzeigen).
4. Kopieren Sie eine Version der Java Source Dateien in den trmc Ordner.

5. Öffnen Sie TimeReloadedFrame.java in einem texteditor.

6. Die ersten wichtigen Zeilen finden sich bei Zeile 34-52. Hier sollen die Projektdaten entsprechend den Videoclips korrekt gesetzt werden.
7. Die zweitwichtigsten Zeilen befinden sich in Zeile 1063 bis 1202. An dieser Stelle wird die ganze Sequenz der Maskenfiguren gesteuert. Jede Figur hat einen eigenen Funktionsaufruf und eigene Parameter um sie zu steuern. Dazu gehört die Dauer (duration) in Viertelnoten, Koordinaten für die Platzierung und Animation der Muster und Parameter um Dinge zu tun wie Inverse Darstellung, beschleunigte oder lineare Bewegungen, Spiegelungen etc. Die meisten Parameter funktionieren in dieser Fassung, einige wenige nicht. Ordnen Sie die Reihenfolge der Funktionsaufrufe nach ihrem Geschmack an und verändern Sie die Parameter nach Ihren Bedürfnissen.

8. Speichern Sie die Änderungen.
9. Es ist empfohlen das Java SE JDK von Oracle in der neusten Version zu verwenden (hier mit Java 7 ux getestet). Wenn es korrekt installiert ist (inklusive pfad/path) öffnen Sie eine Eingabeaufforderung, navigieren Sie zu Ihrem trmc ordner und tippen Sie:

>javac *.java

10. Dann starten Sie das Programm mit

>java TimeReloaded

11. Was das Programm kann: Man kann in dem gestarteten Programm eine Echtzeitvorschau der Masken Animation als Graustufen abspielen, pausieren und auf Start zurücksetzen. Wenn pausiert ist, kann man das Standbild und die Graustufenmasken durch Klick auf den Original Button überblenden um die Position von Koordinaten und Mustern zu überprüfen. Mit CaSS öffnet sich ein Coordinaten Assistent, indem man durch verschieben von Punkten und Linien in und ausserhalb des Bildes verschiedene Koordinaten für die Animationen herausfinden kann (z.B. die Spitze eines Leuchtturm als Koordinatenzentrum für einen Kreiseffekt). Wird der Button "Create Masks" gedrückt, werden die echten Masken als Bildsequenzen erzeugt. Dazu legt das Programm selbst einen Unterordner masks neben den o.g. Unterordnern an, und erstellt für jeden vorliegenden Videoclip einen weiteren Unterordner mit der Bildsequenz für den Clip als Schwarz Weiß Maske im jpg Format. Das dauert eine ganze Weile. In der Eingabeaufforderung kann man den Fortschritt verfolgen.
Ist man nicht zufrieden mit der Vorschau, öffnet man die o.g. Java Datei wieder, ändert die Parameter und wiederholt den Prozess bis man zufrieden ist.

12. Für Entwickler:

Kurze Beschreibung der Klasse TimeReloadedFrame.java

line 0-123    Importe und Variablendeklaration und Initialisierung
line 34-52    Wichtige Projekt Parameter (Unbedingt immer anpassen)
line 124-283    Konstruktor und einige Methoden für das Grafik und Wiedergabesystem der Vorschau
line 284-334    renderControl. Keine Änderungen erforderlich (es sei denn man fügt eine selbstprogrammierte Figur hinzu)
line 335-1062    Echtzeit Vorschau Renderer für die verschiedenen Figuren.
line 1063-1202    calcControl. Hat variable Länge und kontrolliert die gesamte Animation. Wird nur einmal beim Programmstart aufgerufen. Darin werden alle Koordinaten und Breitenwerte berechnet und in einem Array (eine Zeile pro Frame) gespeichert. Die Echtzeit Renderer nutzen diese Werte um Einzelframes zu jedem beliebigen Zeitpunkt aus den zu rendern.
line 1204-3347    Die calc Methoden für jede einzelne Figur. Hier passiert die Arbeit um Figuren zu bewegen, beschleunigen, zu bremsen, leicht zu pulsen und so weiter. Meistens wird nur ein einzelner Punkt oder eine Linie sowie ein Weitenwert (wide) berechnet. Der Renderer ist dafür verantwortlich aus einem Punkt oder einer Linie, unter Berücksichtigung der Weite, X verschiedene Layer für die spezielle Figur zeichnen zu können.
line 3348-4211    maskMaker Methoden. Diese generieren nachher die echten Masken der Einzelbildsequenz. Sie sind so ähnlich wie die Echtzeitrenderer aber sie malen nur schwarz weiß statt graustufen und berücksichtigen nicht den Skalierungsfaktor (der Vorschau).
line 4212-4270    Hilfsmethoden für Dateioperationen am Programmstart und um Bilder zu speichern.
line 4271-4337    maskMaker Control. Ähnlich wie die renderControl.
line 4338-4590    Hilfsmethoden um die Vorschau im Fenster zu zeichnen
line 4591-4663    Weitere Hilfsmethoden zu Debug Zwecken u.a.
line 4664-5011    Code um das Java Swing GUI zu erzeugen
line 5012-6028    Der Echtzeit Renderer und Mask Creator für den Film Time Reloaded wurde wegen Überlänge an das Ende des Codes verlegt. Es handelt sich dabei nicht um eine flexible Methode, wie bei den anderen Figuren, sondern um eine speziell für diesen Film programmierte Methode. Sie kann im Zweifel eigentlich auch gelöscht werden 8darf dann aber nicht mehr aufgerufen werden) ;-)

Um trmc einfach nur zu benutzen kann man die Methoden in calcControl einfach nur selbst neu arrangieren.
Wer selbst richtig programmieren will und evtl. eine neue Figur hinzufügen will der sollte zuerst eine calcMethode für seine Figur programmieren, die die Arrays (zeile 102-119) für Animationswerte benutzt. Dann sollte ein preview Renderer für die renderControl programmiert werden. Diese sollte den scale Faktor berücksichtigen und Graustufen Layer malen wie es auch die anderen preview Renderer tun. In der renderControl selbst muss dann ein if statement hinzugefügt werden (der erste Parameter jeder calc Methode ist eine Figuren ID) um den renderer aufzurufen. Dann muss ein mask Maker für die Figur hinzugefügt werden. Man kann den Echtzeitrenderer kopieren und den scaleParameter entfernen. Andere Translationswerte sind meist erforderlich. Die Maske muss dann auch schwarz weiß gemalt werden und jeder einzelne Layer muss gespeichert werden (wie die anderen maskMaker das auch machen). Ist leichter als es klingt. Eine if Abfrage muss auch in die maskMaker control. Feddich.


© 2004 - 2017 by blindcat