Farbborg-Animationsformat: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
 
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Aufbau ==
== Aufbau ==


Das Format ist äußerst einfach gehalten und zur Ausführung auf Microcontrollern optimiert. Es gibt keine Sprünge oder Schleifen, somit kann die Anmationsdatei zeilenweise ausgelesen werden.  
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 ==
== Sprachelemente ==


Zeilen die mit Raute anfangen sind Kommentare
Zeilen die mit einer Raute '#' anfangen sind Kommentare.
 
=== Farbwerte und Zahlenformate ===
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.


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


Nach jedem Befehl kommt ein CariageReturn  \b
<uint16_t> steht für vorzeichenlose Ganzzahl mit 16 Bit, d.h. eine Zahl von 0 bis 65535.


=== Befehle ===


Nach jedem Befehl kommt eine leere Zeile.


'''Befehl 'i'''':


'''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.
Voxelweise mit Farbwerten das Bild in den ersten Bildbuffer bringen
      
      
  ^ 00aaff 00aaff 00aaff 00aaff 00aaff
  ^ 00aaff 00aaff 00aaff 00aaff 00aaff
  | 00aaff 00aaff 00aaff 00aaff 00aaff
  | 00aaff 00aaff 00aaff 00aaff 00aaff
  y 00aaff 00aaff 00aaff 00aaff 00aaff     Unten
  y 00aaff 00aaff 00aaff 00aaff 00aaff Unterste Ebene
  | 00aaff 00aaff 00aaff 00aaff 00aaff       
  | 00aaff 00aaff 00aaff 00aaff 00aaff       
  | 00aaff 00aaff 00aaff 00aaff 00aaff      |
  | 00aaff 00aaff 00aaff 00aaff 00aaff      |
Zeile 43: Zeile 68:
   00aaff 00aaff 00aaff 00aaff 00aaff      v
   00aaff 00aaff 00aaff 00aaff 00aaff      v
   00aaff 00aaff 00aaff 00aaff 00aaff       
   00aaff 00aaff 00aaff 00aaff 00aaff       
   00aaff 00aaff 00aaff 00aaff 00aaff     Oben
   00aaff 00aaff 00aaff 00aaff 00aaff Oberste Ebene
   00aaff 00aaff 00aaff 00aaff 00aaff       
   00aaff 00aaff 00aaff 00aaff 00aaff       
   00aaff 00aaff 00aaff 00aaff 00aaff       
   00aaff 00aaff 00aaff 00aaff 00aaff       


p : Farbpalette erweitern
farbKürzel <uint8_t> farbWert <hexByte><hexByte><hexByte>


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


Es empfielt sich druckbare Zeichen für die Farb-Kürzel zu verwenden.
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
     
      Das Zeichen > markiert das Ende der Farbpalletten Erweiterung


    I : Voxelweise mit Farbpallette das Bild in den ersten Bildbuffer.
farbKürzel <uint8_t> farbWert <hexByte><hexByte><hexByte>


  Unten        ----------- z ---------->        Oben
Zum Beispiel
           
y ffff00
    ^ 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
weist dem Zeichen 'y' die Farbe Gelb zu.
    | 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 --->


Es können mehrere Farbdefinitionen untereinander aufgeführt werden. Das Zeichen '>' am Anfang einer Zeile markiert das Ende der Farbpalletten Erweiterung.
  C : Das gesamte Bild mit einem Palettenwert sezten
<uint_8>


  c : Das gesamte Bild mit einer RGB-Farbe setzen
Zusätzlich sind die folgenden Farbwerte automatisch definiert
      <hexByte> <hexByte> <hexByte>
-'R' Rot 
-'G' Grün
-'B' Blau
-'S' Schwarz
-'W' Weiß 


  S : Die Bildspeicher swapen zwecks double buffering und angegeben Zeit warten
'''Befehl 'I'''': Voxelweise mit Farbpalette das Bild in den ersten Bildbuffer.
<uint16_t> Milisekunden
    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 --->


  F : Zwischen alten und neuen Bildspeichern in n Schritten a ms Millisekunden
'''Befehl 'C''': Das gesamte Bild mit einem Palettenwert setzen
        morphen/faden
<uint16_t> Milisekunden      ms
<uint16_t> Anzahl Schritte  n


Zusätzlich gibt es auch noch Playlist Dateien. Diese haben die Endung .apl, fpr animation Plaliste. 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.
<zeichen>


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


C
<hexByte><hexByte><hexByte>
S


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


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


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


S
'''Befehl 'V''''
250
Setzen von einzelnen Voxeln mit Palettenwerten.


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


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


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


S
<uint16_t> Millisekunden
250


p
'''Befehl 'F'''': Zwischen alten und neuen Bildspeichern in n Schritten a ms Millisekunden
y ffff00
morphen/faden
t 00ffff
m ff00ff
>


I
<uint16_t> Millisekunden ms
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
<uint16_t> Anzahl Schritte n
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
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.
40
20


S
== Beispiel Video ==
255


S
C
255
S
 
i
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
 
V
00ffff 00ffff 00ffff 00ffff 00ffff
0 0 0 W
00ffff 00ffff 00ffff 00ffff 00ffff
2 2 2 R
00ffff 00ffff 00ffff 00ffff 00ffff
4 4 4 W
00ffff 00ffff 00ffff 00ffff 00ffff
>
00ffff 00ffff 00ffff 00ffff 00ffff
 
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
 
v
00ffff 00ffff 00ffff 00ffff 00ffff
1 1 1 0055ff
00ffff 00ffff 00ffff 00ffff 00ffff
3 3 3 0055ff
00ffff 00ffff 00ffff 00ffff 00ffff
2 1 2 0055ff
00ffff 00ffff 00ffff 00ffff 00ffff
>
00ffff 00ffff 00ffff 00ffff 00ffff
 
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
00ffff 00ffff 00ffff 00ffff 00ffff
S
00ffff 00ffff 00ffff 00ffff 00ffff
250
00ffff 00ffff 00ffff 00ffff 00ffff
 
p
F
y ffff00
40
t 00ffff
20
m ff00ff
 
>
S
5000
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
C
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
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
F
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
40
20
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

Aktuelle Version vom 17. Februar 2008, 22:06 Uhr

Aufbau[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]

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

Farbwerte und Zahlenformate[Bearbeiten | Quelltext 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 | Quelltext 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 | Quelltext 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