Farbborg-Animationsformat

Aus LaborWiki
Wechseln zu: Navigation, Suche

Aufbau[Bearbeiten]

Das Format ist äußerst einfach gehalten und für die Ausführung auf Mikrokontrollern optimiert. Es gibt weder Sprünge noch Schleifen, somit kann die Anmations-Datei zeilenweise vom Anfang bis zum Ende ausgelesen werden.

Alle Zeichnungsoperationen werden zunächst in einem nicht sichtbaren Bildspeicher ausgeführt und werden erst auch dem sichtbaren übertragen wenn der Befehl SwapAndWait oder Fade aufgerufen wird.

Zusätzlich zu dem Animationsdateien gibt es auch noch Playlisten. Eine Playlistdatei, ist ein Textdatei in der nur die Dateipfade der abzuspielenden Animationsdateien untereinander aufgelistet werden. Da das Implementierung des Fat-Dateisystems keine langen Dateinamen unterstützt müssen die Dateinamen in dem 8.3 Format von MSDOS angesprochen werden. Außerdem ist der Pfad immer absolut anzugeben. Z.B "anims/neueanim.prn". Der Eintrag in der Playlist ist ebenfalls absolut. Als Verzeichnistrennzeichen wird ein einfaches Slash '/' verwendet.

Achtung es ist auf die richtige Anzahl an Leerzeichen zu achten, da der Parser sehr einfach gehalten ist.

Sprachelemente[Bearbeiten]

Zeilen die mit einer Raute '#' anfangen sind Kommentare.

Farbwerte und Zahlenformate[Bearbeiten]

Farbwerte können mit Hilfe der erweiterbaren Farbpalette oder als RGB Wert angegeben werden.

Ein Farbpalettenwert besteht aus einem druckbaren Zeichen Zeichen (also keine Whitespaces und Zeilenumbrüche).

RGB Farbwerte werden hexadezimal in folgender Form angegeben:

#     Blau
#  Grün| 
# Rot| |
#  | | |
#  v v v  
  ff8800

Dieses Beispiel ergibt eine Farbe mit 100 % Rot, 50 % Grün und 0% Blau.

<uint8_t> steht für vorzeichenlose Ganzzahl mit 8 Bit, d.h. eine Zahl von 0 bis 255.

<uint16_t> steht für vorzeichenlose Ganzzahl mit 16 Bit, d.h. eine Zahl von 0 bis 65535.

Befehle[Bearbeiten]

Nach jedem Befehl kommt eine leere Zeile.

Befehl 'i':

Voxelweise mit RGB Farbwerten den nicht sichtbaren Bildspeicher setzen. Dabei werden wie unten aufgeführt die Ebenen des Würfels von unten nach oben befüllt. Jede Ebene besteht aus 5x5 RGB Farbwerten die durch Leerzeichen und Zeilenumbrüche getrennt sind. Es sind keine führenden Leerzeichen zulässig.

^ 00aaff 00aaff 00aaff 00aaff 00aaff
| 00aaff 00aaff 00aaff 00aaff 00aaff
y 00aaff 00aaff 00aaff 00aaff 00aaff  Unterste Ebene
| 00aaff 00aaff 00aaff 00aaff 00aaff       
| 00aaff 00aaff 00aaff 00aaff 00aaff       |
+----------------x------------------>      | 
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       | 
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
                                           |
  00aaff 00aaff 00aaff 00aaff 00aaff       | 
  00aaff 00aaff 00aaff 00aaff 00aaff       
  00aaff 00aaff 00aaff 00aaff 00aaff       z
  00aaff 00aaff 00aaff 00aaff 00aaff       
  00aaff 00aaff 00aaff 00aaff 00aaff       |
                                           |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
  00aaff 00aaff 00aaff 00aaff 00aaff       |
                                           |
  00aaff 00aaff 00aaff 00aaff 00aaff       v
  00aaff 00aaff 00aaff 00aaff 00aaff       
  00aaff 00aaff 00aaff 00aaff 00aaff  Oberste Ebene
  00aaff 00aaff 00aaff 00aaff 00aaff      
  00aaff 00aaff 00aaff 00aaff 00aaff      


Befehl 'p': Farbpalette erweitern

Für jede Animaionsdatei gibt es eine Farbpalette, in der man einem druckbaren Zeichen einen RGB Farbwert zuweist. Dies ermöglicht eine kürzere Schreibweise

farbKürzel <uint8_t> farbWert <hexByte><hexByte><hexByte>

Zum Beispiel

y ffff00

weist dem Zeichen 'y' die Farbe Gelb zu.

Es können mehrere Farbdefinitionen untereinander aufgeführt werden. Das Zeichen '>' am Anfang einer Zeile markiert das Ende der Farbpalletten Erweiterung.

Zusätzlich sind die folgenden Farbwerte automatisch definiert -'R' Rot -'G' Grün -'B' Blau -'S' Schwarz -'W' Weiß

Befehl 'I': Voxelweise mit Farbpalette das Bild in den ersten Bildbuffer.

    Unten        ----------- z ---------->         Oben
            
 ^ X X X X X   X X X X X   X X X X X   X X X X X   X X X X X	
 | X X X X X   X X X X X   X X X X X   X X X X X   X X X X X	
 y X X X X X   X X X X X   X X X X X   X X X X X   X X X X X	
 | X X X X X   X X X X X   X X X X X   X X X X X   X X X X X	
 | X X X X X   X X X X X   X X X X X   X X X X X   X X X X X	
 +--- x --->

Befehl 'C: Das gesamte Bild mit einem Palettenwert setzen

<zeichen>

Befehl 'c': Das gesamte Bild mit einer RGB-Farbe setzen

<hexByte><hexByte><hexByte>

Befehl 'v' Setzen von einzelnen Voxeln mit RGB Farbwerten.

<x-Koordinate 0 bis 5> <y-Koordinate 0 bis 5> <z-Koordinate 0 bis 5> <hexByte><hexByte><hexByte> 

Es können wie bei der Farbpalettenerweiterung mehrere Farbwerte untereinander definiert werden. Das Zeichen '>' am Anfang einer Zeile markiert das Ende.

Befehl 'V' Setzen von einzelnen Voxeln mit Palettenwerten.

<x-Koordinate 0 bis 5> <y-Koordinate 0 bis 5> <z-Koordinate 0 bis 5> <Farbpalettenzeichen>

Es können wie bei der Farbpalettenerweiterung mehrere Farbwerte untereinander definiert werden. Das Zeichen '>' am Anfang einer Zeile markiert das Ende.

Befehl 'S': Die Bildspeicher swapen zwecks double buffering und angegeben Zeit in Milisekunden warten

<uint16_t> Millisekunden

Befehl 'F': Zwischen alten und neuen Bildspeichern in n Schritten a ms Millisekunden morphen/faden

<uint16_t> Millisekunden ms <uint16_t> Anzahl Schritte n

Zusätzlich gibt es auch noch Playlist Dateien. Diese haben die Endung .apl, für Animation Playlist. in Ihnen sind Kommentar durch ein #-Zeichen am Anfang der Zeile möglich. In jeder Zeile kann dort der Pfad zu einer .anim Datei (inclusive .anim) stehen, die allesamt nacheinander abgespielt werden.

Beispiel Video[Bearbeiten]

C 
S

S
250

S
250

V
0 0 0 W
2 2 2 R
4 4 4 W
>

S
250

S
250

v
1 1 1 0055ff
3 3 3 0055ff
2 1 2 0055ff
>

S
250

S
250

p
y ffff00
t 00ffff
m ff00ff
>

I
y S R S m   y S S S m   y S S S m   y S S S m   y S R S m
S R S R S   S S R S S   S S S S S   S S R S S   S R S R S
R S t S R   S R S R S   S S R S S   S R S R S   R S t S S
S R S R S   S S R S S   S S S S S   S S R S S   S R S R S
m S R S y   m S S S y   m S S S y   m S S S y   m S R S y

F
40
20

S
255

S
255

i
ffffff ffffff ffffff ffffff ffffff
ffffff ffffff ffffff ffffff ffffff
ffffff ffffff ffffff ffffff ffffff
ffffff ffffff ffffff ffffff ffffff
ffffff ffffff ffffff ffffff ffffff

00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff

00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff

00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff

00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff

F
40
20

S
5000

C
S

F
40
20