Autodesk公司的三維動畫設計軟件3DS在我國已廣泛使用,其良好的性能為計算機專家和藝術家所肯定。其動畫存儲文件FLIC也給系統提供了存儲和顯示的方便。下面具體分析FLIC文件的格式及播放程序的設計。
一、FLIC文件格式的概述
FLIC文件事實上是對一個靜止畫面序列的描述,連續顯示這一序列便可在上產生動畫效果。FLIC文件結構簡潔,彈出速度快,雖然每種基色最多只有256級灰度,圖像深度只有8位,使用起來很方便。
FLIC文件有兩種類型:FLI文件和FLC文件。FLC文是FLI文件的進一步發展,它采用更高效的壓縮技術,且其分辨率也不僅限於320×200。我們在PC上經常使用的FLI文件,因為它和VGA的320×200×256顯示相匹配。
FLIC文件采取的壓縮技術原理就是僅保存前一幀中改變的部分。這樣占的空間小,彈出速度快。FLIC文件的結果可分為3個層次:文件層、幀層和塊層。文件層給出了FLIC文件的基本特征。幀層定義了幀的緩沖和塊中塊的數目。塊層包括塊的大小、類型和實際數據。這樣層次結構很容易實現,特別是可以增加塊的類型以滿足新的需要,同時無需涉及原定義。
二、各層頭的結構
1.FLI文件格式的結構定義
①文件頭的結構定義
文件頭長度為80H字節,其C語言結構定義如下
/*flifilehedaerstruct*/
typedefstruct{
unsignedlongfli-size;/*00H:文件總長度*/
unsignedintmagic;/*04H:文件格式,FLC=AF12;
FLI=AF11;*/
unsignedintframes-number;/*06H:FLIC的幀數*/
unsignedintscreen-width;/*08H:屏幕寬度*/
unsignedintscreen-height;/*0AH:屏幕高度*/
unsignedintunuserd;/*0CH:保留未用*/
unsignedintflags;/*0EH:標志=0003*/
unsignedintspeed;/*10H:幀間播放速度單位*/
unsignedlongnext;/*12H:置為0*/
unsignedlongfrit;/*16H:置為0*/
unsignedcharfli-expand[102];/*1AH:保留作擴展用=0*/
}FLIHEAD;
②幀頭的結構定義
幀頭長度為10H字節,其C語言結構定義如下:
/*framesheaderstruct*/
typedefstruct{
unsignedlongsize-frame;/*00H:幀大小,包括本幀頭*/
unsignedintmagic;/*04H:幀標識字=0F1FAH*/
unsignedintchunks;/*06H:本幀塊數*/
unsignedcharexpand[8];/*08H:保留未用=0*/
}FRAMESHEAD;
③塊頭的結構定義
塊頭長度為6H字節,其C語言結構定義如下:
/*chunkheaderstruct*/
typedefstruct{
unsignedlongsize-chunk;/*00H:塊大小*/
unsignedtype-chunk;/*04H:塊類型*/
}CHUNKHEAD;
2.FLC文件格式的結構定義
文件頭長度為80H字節,其C語言結構定義如下:
/*flifileheaderstruct*/
typedefstruct{
unsignedlongfli-size;/*00H:文件總長度*/
unsignedintmagic;/*04H:文件格式,FLC=AF12;
FLI=AF11;*/
unsignedintframes-number;/*06H:FLIC的幀數*/
unsignedintscreen-width;/*08H:屏幕寬度*/
unsignedintscreen-height;/*0AH:屏幕高度*/
unsignedintdepth;/*0CH:圖像深度*/
unsignedintflags;/*0EH:標志=0003*/
unsignedintspeed;/*10H:幀間播放速度單位
FLC=1ms,FLI=1/70s*/
unsignedintreserved-1;/*14H:保留未用*/
unsignedlongcreatetime;
unsignedlongcreator;
unsignedlongupdatetime;
unsignedlongupdater;
unsignedintaspectx;/*創建文件時的顯示屏幕像素
大小的縱橫比,VGA320×200
unsignedintaspecty;為6∶5*/
unsignedcharreserved-2[0x26];/*保留未用,=0*/
unsignedlongoffsetframel;/*50H:第一幀畫面相對於文件
開始的偏移*/
unsignedlongoffsetframe2;/*54H:第二幀畫面相對於文件
開始的偏移*/
unsignedcharreserved-3[0x28];/*保留未用=0*/
}FLIHEAD;
FLC的幀頭和塊頭的結構定義和FLI文件格式的定義相同。
每塊的數據緊接在FLIC文件頭的後面。對於不同的塊類型有不同的數據含義,下面就不同的塊類型分別介紹,這是設計播放FLIC動畫文件程序的關鍵之所在。
三、塊類型的含義
FLIC格式文件中的塊類型有許多種,每一種類型都有不同的定義,因此我們必須對每一種類型作出准確的分析。由於動畫格式FLIC圖像文件的塊類型具有極強的可擴展性,在此我們只介紹幾種常見的塊類型。
1.類型04H
為每基色256級灰度->