邢江濤
(晉城職業(yè)技術(shù)學(xué)院,山西 晉城 048026)
利用Flash AS3.0開發(fā)三維動畫應(yīng)用探討
邢江濤
(晉城職業(yè)技術(shù)學(xué)院,山西 晉城 048026)
FLASH因為其具備交互性矢量動畫等優(yōu)點得到了極為廣泛的應(yīng)用。但是一般FLASH動畫卻幾乎都是二維的。文章介紹了Flash中實現(xiàn)三維的基本原理,并通過一個具體實例介紹了在Flash二維的世界里如何表現(xiàn)三維對象的方法。
Flash;ActionScript;三維動畫
我們所生活的世界是一個由X、Y、Z軸(也就是長寬高)組成的三維世界。在動畫的3D空間中我們要在X、Y之外再建立另一個維度Z,即深度。FLASH本身并沒有內(nèi)置的Z維度,但是我們可以使用ActionScript來創(chuàng)建它。
透視就是我們怎么表示某個物體靠近我們或遠離我們。例如:當物體離我們越來越遠時它們會變得越來越小,當移動到最后離我們足夠遠時會它們會聚集在一個滅點上。要在一個二維平面上表現(xiàn)出三維的信息,我們首先必須要去掉三個坐標軸中的一個——z軸(表示物體深度的軸),如圖1所示。
圖1
確定z值包括三個要素:有一個距離你有一段距離的物體;一個視點——你的眼睛;一個圖像平面——電腦屏幕。
知道大致原理后,我們來看個具體的例子。
在三維坐標系中的每個點都對應(yīng)著唯一的一組X、Y、Z坐標量。因此,我們可以建立一個數(shù)組,命名為points,通過數(shù)組來依次存放各點的坐標值。對于長方體來說(如圖2),它是由8個點組成的。代碼如下:
圖2
在這里的Point3D類存儲著坐標屬性,用于傳遞X、Y、Z的位置。主要代碼為:
圖3 前面
觀察傳統(tǒng)的3D模型我們會發(fā)現(xiàn),在許多3D建模和渲染程序中,所有的模型在最終渲染之前都被簡化成一系列的三角形。使用三角形在繪制復(fù)雜的形體時會比較容易。這樣我們可以建立一個函數(shù)來用三個點渲染一個三角形:一個循環(huán)遍歷點的列表,定位它們并應(yīng)用透視;另一個循環(huán)用來遍歷三角形列表并渲染每一個三角形。
在定義三角形之前,我們?nèi)院投x點一樣創(chuàng)建一個Triangle類來跟蹤每一個三角形的點,并定義一個數(shù)組來存放三角形列表。
定義三角形:立方體的每一個面可以由兩個三角形構(gòu)成(如圖3、圖4),總共有12個三角形。另外,我們一定要按照順時針方向列出每個三角形的點,這樣旋轉(zhuǎn)起來就不會出現(xiàn)意想不到的錯誤。主要代碼如下:
圖4 后面
傳統(tǒng)的2D動畫中,進行旋轉(zhuǎn)時都是圍繞Z軸進行的,也就是說只有X和Y坐標在發(fā)生變化。在3D動畫中,我們可以圍繞任意的一個軸進行旋轉(zhuǎn),比如制作一個向你飛來的一個外星飛碟,那么它的旋轉(zhuǎn)軸就是Y軸,所有點都圍繞它旋轉(zhuǎn)并改變它們的Y和Z的位置。因此,對于3D動畫來說,當你在一個軸上旋轉(zhuǎn)物體時,它的位置將在其他兩個軸上發(fā)生改變。這樣我們可以推演出幾個結(jié)論:
以Z軸為旋轉(zhuǎn)軸
現(xiàn)在我們需要在Point3D類中加入上述坐標移動的方法,代碼如下:
最后,我們在ActionScript腳本代碼中加入EnterFrame事件,ENTERFRAME事件屬于所有畫面和影片剪輯。將事件處理函數(shù)添加到這些對象的時間軸時,會根據(jù)幀速率反復(fù)調(diào)用相關(guān)的事件處理函數(shù)。代碼如下:
隨著新的腳本語言ActionScrip3.0和針對Flash Player9的全新的虛擬機的引入,F(xiàn)lash平臺發(fā)生了革命性的變化。文章主要通過一個三維動畫的實例闡述了FLASH ActionScrip3.0腳本語言的強大功能,本實例在Adobe Flash CS3 Professional環(huán)境下測試通過,但是在功能上其實是相當簡陋的。
TP391.414
A
1673-2014(2011)05-0074-03
2011—05—13
邢江濤(1977—),男,山西陽城人,碩士,主要從事多媒體應(yīng)用研究。
(責(zé)任編輯 王建華)