多頁動畫技術(shù)研究論文
時間:2022-10-26 08:13:00
導(dǎo)語:多頁動畫技術(shù)研究論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
動畫設(shè)計中消除圖像閃爍的一種方法是使用多頁動畫。多頁動畫是通過使用頁切換技術(shù)實現(xiàn)的。頁切換改變顯示頁以繪制出給定動畫序列的相鄰幀。由于圖像通常繪制在不同的頁上(不是當(dāng)前可見頁),用戶不會看到圖像被繪制或擦除。所以,這種技術(shù)能產(chǎn)生高質(zhì)量的動畫而沒有圖像閃爍。進行頁切換的詳細(xì)步驟如下。
1.選擇一種至少有兩個可用顯示頁的視頻模式(示例中為EGA640×200,16色4頁)。
2.使用-setvideomode()函數(shù)獲取選擇的視頻模式。在當(dāng)前顯示頁(0頁)上繪制出序列中的第一幀。
3.在需要繪制出序列中下一幀時,使用-setactivepage()函數(shù)設(shè)置激活頁為備用顯示項,僅僅改變激活頁(不是可見頁)。
4.繪制出下一幀。此幀將被繪制在備用顯示頁(頁1)上,而當(dāng)前頁(頁0)繼續(xù)被顯示。在以后重復(fù)這一步時在繪制新的一幀前擦除掉已有的幀。
5.繪制出新的一幀以后,使用-setvisualpage()函數(shù)將可見頁設(shè)置為備用頁。此時,備用頁成為當(dāng)前頁。
6.重復(fù)步驟3到5直到完成了動畫序列為止。
以下程序(采用VisualC++)演示了實際的多頁動畫,例子中的動畫序列讀者自行設(shè)計。
#include<conio.h>
#include<graph.h}
#include<time.h}
#defineLAST-FRAME4/*Totalframesinthesequence.*/
#defineDRAW1/*Codeforthedrawoperation.*/
#defineDELTA-X10/*Pixelsmovedperframechange.*/
#defineHALF-SECOND500/*500msecdelaybetweenframes
.*/
#defineMAX-X600/*MaxXpositionbeforetermination.
*/
#defineSETUP-DISPLAY\par
\par-setvideomode(-HRES16COLOR);\par
#defineEXIT-TO-DOS\par
\par-setvideomode(-DEFAULTMODE);\par
/****頁切換和繪制動畫序列****/
#definePAGE-FLIP(v)\par
\parif(v==0)v=1;\par
elsev=0;\par
-setactivepage(v);\par
-clearscreen(-GCLEARSCREEN);\par
-settextposition(1,16);\par轉(zhuǎn)outtext(\par"Example:
MultiplePageAnimation");\par
draw-frame(current-frame,px,py);\par
-setvisualpage(page);\par
create-delay(HALF-SECOND);\par
intpx,py;/*Currentcharacterposition.*/
intpage;/*Currentpagedisplayed.*/
intcurrent-frame;/*Currentframedisplayed.*/
main()
SETUP-DISPLAY
cycle-frames();
EXIT-TO-DOS
cycle-frames()
current-frame=0;
px=0;
py=85;
page=0;
while(px<=MAX-X)
current-frame++;
if(current-frame>LAST-FRAME)
current-frame=2;
PAGE-FLIP(page)
px=px+DELTA-X;
current-frame=1;
PAGE-FLIP(page)
draw-frame(frame,x,y)
intframe,x,y;
switch(frame)
case1:
frame-1(DRAW,x,y);
break;
case2:
frame-2(DRAW,x,y);
break;
case3:
frame-3(DRAW,x,y);
break;
case4:
frame-4(DRAW,x,y);
break;
create-delay(td)
/**同BorlandC++中的delay(td)函數(shù)**/
inttd;
time-tts1,ts2;
ts2=ts1=clock();
while(ts1+td>ts2)
ts2=clock();
熱門標(biāo)簽
動畫劇本 動畫制作論文 動畫專業(yè)論文 動畫設(shè)計論文 動畫標(biāo)題設(shè)計 動畫 動畫發(fā)展 動畫平面設(shè)計 動畫實訓(xùn)報告 動畫廣告創(chuàng)意 心理培訓(xùn) 人文科學(xué)概論