摘 要:下雨下雪等自然現(xiàn)象的逼真模擬在Flash動畫制作中經(jīng)常出現(xiàn),此類場景特效的應(yīng)用很好的烘托了劇情以及人物的內(nèi)心世界。但是要制作出逼真的模擬效果可不是一件那么容易的事情。因?yàn)樵蚝芎唵危@類自然現(xiàn)象的位置、大小、運(yùn)動速度、稀疏程度甚至顏色都是隨機(jī)發(fā)生變化的,必須通過腳本代碼程序控制的方法來進(jìn)行。本文通過Flash模擬下雪下雨的自然現(xiàn)象之制作,來探究發(fā)現(xiàn)這其中具有共性的東西,也就是說在Flash中模擬這些自然現(xiàn)象是否有規(guī)律可言。若如此,可達(dá)到舉一反三,靈活應(yīng)用的效果。
關(guān)鍵詞:Flash;模擬;雨雪;自然現(xiàn)象;規(guī)律;探究
中圖分類號:TP311
本文的重點(diǎn)是通過制作下雪、下雨的特效,仔細(xì)挖掘其中的共同點(diǎn)即共性,從而找到解決此類問題的規(guī)律。
1 用Flash制作逼真的下雪場景
1.1 啟動Flash,建立文檔,設(shè)置文檔大小550×300,背景色為黑色。
1.2 導(dǎo)入一副雪景圖片到庫中。
1.3 把圖層1命名為“背景”,并把庫中的雪景圖片放置到“背景”圖層中并設(shè)置成文檔大小,跟文檔重合。
1.4 在“背景”圖層上新建2個圖層,分別命名為“下雪元件”和“action”,接下來要用到,這里先創(chuàng)建好。
1.5 下雪影片元件的制作,這一步也很重要,制作效果直接影響到下雪的逼真程度。
(1)創(chuàng)建“雪花”圖形元件:利用線條工具繪制好“雪花”的一部分,再使用“變形”功能生成一朵靜止的雪花,為了更形象逼真,再在雪花中央位置繪制一個具有漸變色彩過渡的圓形,如下圖1所示。
(2)生成“下雪”影片元件:利用Flash中的引導(dǎo)動畫使得“雪花”圖形元件從上向下緩慢曲線飄落,這里需要注意的是圖層時間線上播放幀數(shù)最好長一點(diǎn),我是讓雪花飄落從第1幀開始持續(xù)到第100幀。圖層及時間線如下圖2:
1.6 回到場景,把已經(jīng)制作好的“下雪”影片元件放置到“下雪元件”圖層的第一幀位置,調(diào)整其在場景中的位置在右上角,在屬性面板上把該影片元件命名為“snow”,影片元件正確命名這一步驟很重要。
1.7 在“action”圖層的第1幀插入空白關(guān)鍵幀,輸入如下腳本代碼:
i=0;
i是一個變量,用來統(tǒng)計產(chǎn)生雪花的數(shù)量,初始化為0。
1.8 在“action”圖層的第2幀插入空白關(guān)鍵幀,輸入如下腳本代碼:
duplicateMovieClip(\"snow\",i,i);
setProperty(i,_x,random(550));
setProperty(i,_y,random(300));
setProperty(i,_alpha,random(100));
以上腳本代碼的功能是利用影片復(fù)制函數(shù)duplicateMovieClip()隨機(jī)“克隆”出帶有標(biāo)記的雪花,設(shè)置新“克隆”出來的雪花在場景范圍內(nèi)隨機(jī)變化的橫坐標(biāo)位置、縱坐標(biāo)位置以及它的透明度。
其實(shí),在這里還盡可以設(shè)置雪花的其它屬性,使得模擬效果更加接近真實(shí)場景,更加逼真。比如可以隨機(jī)設(shè)置雪花的大小變化、快慢甚至顏色的變化等等,如果有需要的話。
1.9 在“action”圖層的第3幀插入空白關(guān)鍵幀,輸入如下腳本代碼:
i++;
if (i==200){i=1;}
gotoAndPlay(2);
以上腳本代碼的功能是利用條件判斷語句IF來產(chǎn)生一定數(shù)量的雪花,這里是200朵。如果沒有達(dá)到設(shè)定數(shù)量的雪花,那就回到第2關(guān)鍵幀繼續(xù)產(chǎn)生,計數(shù)器累加;否則計數(shù)器i重新賦值為1,再次產(chǎn)生設(shè)定數(shù)量的雪花。如此周而復(fù)始的執(zhí)行這個過程,在視覺上就看到了雪花紛紛飄落的逼真場景。
其實(shí),產(chǎn)生雪花的數(shù)量可以利用隨機(jī)函數(shù)隨機(jī)產(chǎn)生,沒必要設(shè)定死,這樣的話就可以產(chǎn)生雪花稀疏程度不一的下雪模擬場景。
1.10 把“背景”圖層和“下雪元件”圖層的播放時間延長到第3幀。
最終的圖層及時間線如下圖3:
1.11 測試影片效果。
2 用Flash制作逼真的下雨場景
仔細(xì)研究剛才下雪特效的制作過程,會自然而然的提出一個問題:既然可以這樣簡單快速的制作下雪場景,下雨也是同下雪一樣的自然現(xiàn)象,大同小異,能不能把程序控制的“下雪”影片元件換成“下雨”影片元件,其他方面做微小的改動,不就是得到了下雨的模擬場景?答案是完全肯定的。主要的制作過程如下:
2.1 制作好“波紋”圖形元件和“雨滴”圖形元件,效果如下圖4所示:
2.2 制作好“雨滴和波紋運(yùn)動”影片元件,要求雨滴從空中落下,打在地面上,隨之出現(xiàn)雨滴散開之后的向四周擴(kuò)散的波紋運(yùn)動,這個效果要制作的逼真些,否則會影響總體效果。圖層及時間線如下圖5所示:
2.3 回到場景,把“雨滴和波紋運(yùn)動”影片元件放置到“下雨元件”圖層的第一幀,命名為“drop”,影片元件放置在場景的上方即可。
2.4 在“action”圖層第1幀插入空白關(guān)鍵幀,輸入如下代碼:
duplicateMovieClip(\"/drop\", \"drop\" add i, i);
setProperty(\"drop\"add i, _x, random (300)+100);
setProperty(\"drop\"add i, _y, -(random (30)));
setProperty(\"drop\"add i, _alpha, random (100));
2.5 在“action”圖層第2幀插入空白關(guān)鍵幀,輸入如下代碼:
i=i+1;
if(i==100) {i = 1;}
gotoAndPlay(1);
以上代碼的功能同上面下雪效果控制代碼的功能相似,在此就不重復(fù)敘述了。
2.6 把“背景”圖層和“下雨元件”圖層的播放時間延長到第2幀
最終的圖層及時間線如下圖6:
2.7 測試影片效果
通過以上下雪下雨自然現(xiàn)象的模擬效果制作,從解決方法上來說,是相同的,甚至連具體的腳本控制代碼也是基本相同的。既然如此,是不是類似的自然現(xiàn)象(比如漫天飄舞的楓葉、暴風(fēng)雨、暴風(fēng)雪、水波蕩漾等等)的場景模擬也可以采用以上方法得到完美解決,答案也是完全肯定的,只要加以改進(jìn)并靈活應(yīng)用即可。
之所以會覺得以上方法簡單易用、容易理解、代碼的可移植性強(qiáng),是因?yàn)樗鼈冇泻芏喙残缘臇|西及規(guī)律,這也是本文所要闡述的重點(diǎn)所在。那么有哪些相同的地方呢?下面做一總結(jié):
(1)這些自然現(xiàn)象的逼真模擬特效的制作都是采用腳本代碼和程序控制來完成的。因此對Flash中腳本代碼的理解和使用要熟悉。
(2)都是通過程序控制影片元件來模擬不同效果的,比如上面的“下雪”影片元件和“雨滴和波紋運(yùn)動”影片元件,因此影片元件的效果制作就顯得特別重要,原因很簡單,影片元件制作效果的好壞直接影響到總體的模擬效果。
(3)影片元件放置到場景中時一定記得要正確命名,因?yàn)槟_本控制的對象就是影片,實(shí)際上就是它的新命名名字,而且在控制代碼中涉及到的影片名字必須跟在場景屬性面板上的命名保持完全一致,否則達(dá)不到預(yù)期的效果,或者效果干脆出不來。這一步很多人會搞錯,在實(shí)際操作時要引起足夠的小心和重視。
(4)在控制代碼的設(shè)置方面一般采用三步驟:制變量的定義和初始化、復(fù)制影片元件同時設(shè)置隨機(jī)變化的影片屬性以及采用循環(huán)控制語句IF來執(zhí)行重復(fù)某個動作或結(jié)束動作。每個步驟的腳本代碼單獨(dú)按順序放置在不同的空白關(guān)鍵幀上。
總之,只要規(guī)律在手并加以靈活應(yīng)用,何愁做不出生動逼真的場景模擬甚至激動人心的動漫作品呢?
參考文獻(xiàn):
[1]孫穎.Flash ActionScript3殿堂之路[M].北京:電子工業(yè)出版社,2007.
[2]陳宗斌.Adobe Flash CS4中文版經(jīng)典教程[M].北京:人民郵電出版社,2009.
[3]劉歡.Flash ActionScript 3.0全站互動設(shè)計[M].北京:人民郵電出版社,2012.
作者簡介:唐小?。?972-),男,江西安遠(yuǎn)人,1999年畢業(yè)于天津職業(yè)技術(shù)師范學(xué)院信息工程本科專業(yè),獲工學(xué)學(xué)士學(xué)位,信息技術(shù)中學(xué)高級教師,畢業(yè)至今一直從事計算機(jī)專業(yè)多門學(xué)科的教學(xué)研究工作,研究方向:計算機(jī)程序設(shè)計等,在多家中文核心期刊上發(fā)表過多篇論文。
作者單位:韶關(guān)市中等職業(yè)技術(shù)學(xué)校,廣東韶關(guān) 512023