• 沒有找到結果。

三、以「序率」概念運用Action Script語法的基本架構實驗

以下,以植物生長模式為實驗基礎在語法中加入序率觀念,以自身元件在 迴圈運算過程中帶入隨機亂數,使得每次運算均能得到不同的結果。並且對於 不同參數的反應與變換元件後所呈現的反應做為實驗說明,由此討論在Flash中 運用程式語法的結構,並實驗經由數據改變後對於自然物生成的模擬反應。(程 式碼來源:Flash Math Creativity,2000,pp76-78)

(一)程式語法部分:

mybranches.dupulicateMovieClip("mybranch"+i, i); //每一迴圈複製一組mybranch影片, 名稱叫做 mybranch0, mybranch1,mybranch2...

this.["mybranch"+i]._x = xcenter+random(2*xoffset)-xoffset; //定義mybranch0的x軸=原中心 點+以亂數產生的變量

基本元件:(圖-40)

myleaf myline mybranch

2.元件自身的程式語法:(在 mybranch 元件中)

x[i] = x[i-1]+i*offset*(random(21)-10); //x[1]值 }

for (i=0; i<points; i++){ //迴圈由 0 到 points 數量, 每一迴圈i自動相加 myline.duplicateMovieClip("myline"+i, i); //每一迴圈複製一組myline影片, 名稱叫做

myline0, myline1,myline2...

this.["myline"+i]._x = x[i]; //設定 myline0...的x軸點 this.["myline"+i]._y = y[i]; //設定 myline0...的y軸點 this.["myline"+i]._xscale = x[i+1]-x[i]; //設定 myline0...的x大小 this.["myline"+i]._yscale = y[i+1]-y[i]; //設定 myline0...的y大小 }

for (i=0; i<leaves; i++){ //迴圈由 0 到 leaves 數量, 每一迴圈i自動相加 myleaf.duplicateMovieClip ("myleaf"+i, i+1000); //每一迴圈複製一組myleaf影片, 名稱叫做

myleaf0, myleaf1,myleaf2...

myColor = new color(this["myleaf"+i]); //定義顏色 myColorTrandform = new object(); //透明度陣列 myColorTransform.ga = 70+random(30); //定義透明度ga值 myColorTransform.ba = 0; //定義透明度ba值 myColorTransform.ra = 0; //定義透明度ra值 myColor.setTransform(myColorTransform); //定義透明度

this.["myleaf"+i]._x = x[points-2*i]; //設定 myleaf0...的x軸點 this.["myleaf"+i]._y = y[points-2*i]; //設定 myleaf0...的y軸點 this.["myleaf"+i]._xscale = 30+1*i; //設定 myleaf0...的x大小 this.["myleaf"+i]._yscale = 10+1*i; //設定 myleaf0...的y大小 this.["myleaf"+i]._rotation = random(180)-180; //設定 myleaf0...的旋轉角度 }

myline._visible = 0; //原myline影片隱藏 myleaf._visible = 0; //原myleaf影片隱藏

stop(); //本元件停止運作

上述程式第一次執行後的結果:

圖-41:上述程式第一次執行後的結果

實驗程式中可變參數的命名及功能說明:

branches = 植物分枝的數量

xcenter = 以螢幕的水平中心計算基準

xoffset =以中心計算的最大距離,為各分枝的安排位置參數 points =各個樹枝的每段數量參數

leaves =葉子在各個分支的總量量參數

dy =以點之間距離, 做為各段的長度的參數值 offset =計算總合寬度的參數值

以上述命名的各參數值經修改的實驗(圖-42):

branches =30 branches =60

branches =30 offset =50

offset =100

leaves=5 leaves=30

points = random(70);

this[("myleaf" + i)]._xscale = 15 + 1 * i;

leaves = 13;

this[("myleaf" + i)]._yscale = 45 + 1 * i;

this[("myleaf" + i)]._yscale = 40 + 1 * i;

由上述實驗結果可以看出在更改過座標起始值或參數值時都會引起結果完 全不同的變化,包含疏密度也可由參數中直接改變,對於自然物的分佈與生長 描述有著相當擬真的效果;接著將同樣的程式碼修改藉由原來分佈生長的概 念,更換視覺元件並將色彩轉換的指令取消,重新進形亂數分佈實驗。

更換的元件(以單純的基本形取代原有樹葉造型):

(圖-43)mybranch

參數值改為:

branches = 8;

xcenter = 275;

xoffset = 600;

points = 10 + random(40);

leaves = 5;

取消作用的部分:

myColor = new color(this["myleaf"+i]); //定義顏色 myColorTrandform = new object(); //透明度陣列 myColorTransform.ga = 70+random(30); //定義透明度ga值 myColorTransform.ba = 0; //定義透明度ba值 myColorTransform.ra = 0; //定義透明度ra值 myColor.setTransform(myColorTransform); //定義透明度

實驗結果:(圖-44)

上述修改後的結果 points = 10 + random(90) 位置的亂數值加大

將預設座標值修改為亂數取得

this[("myleaf" + i)]._xscale = (random(9) - 10) * i;

this[("myleaf" + i)]._yscale = (random(21) - 5) * i;

將生成物件的座標及生成物的尺寸全設為亂數 branches = 40;

this[("myleaf" + i)]._xscale = (random(-5) - 10) * i;

this[("myleaf" + i)]._yscale = (random(35) - 5) * i;

points = 10 + random(50);

leaves = 7;

上述實驗的主要目的在於利用相同的程式碼,但給予不同的元件與參數設 定狀況,交予電腦以隨機運算的方式產生新的畫面效果:由產生出的畫面中可 以看出以隨機所產生的自然分佈的效果,且可以快速的更新畫面重新運算,整 體的運算若控制得宜,可以從中得到相當多具有解構風格的平面影像。若能將 其結果或視覺影像的意想轉換到視覺傳達設計的作品應用,也可以讓學生能夠 在學習程式語法的同時也能對於種種不同的設計風格進行了解。

圖-45: 以起始元(initiator)疊代並產生 生成元(generator),自然生成模擬 物件(圖片來源:本研究製作 by open souce)

圖-46:任意連接的二進位制連結實驗;以自我組織(self-organization)的方式。

在進化的過程中,以增長或隨機的方式被連接互相。(圖片來源:

http://www.levitated.net/daily/levBinaryNetworkv.html)

圖-47:以 Plant Studio2 模擬植物生長的過程(圖片來源:本研究製作)

圖-48:Jared Tarbell 運用 Processing 所創作出的作品充滿互動與生機

(圖片來源:http://www.levitated.net/p5/chamber/gallery.html

圖 50:豐富的工作程式碼提供下載應用 圖-49、51:由作品轉化而成應用於平面設

計之上 圖片來源:

http://www.levitated.net/p5/chamber/gallery.html

(圖片來源:

http://www.levitated.net/p5/chamber/gallery.html

第四節 小結

運用程式語法創作數位作品,在國外已行之有年。所累積的經驗與開發的 程式,是國內學習數位藝術的寶庫;由 2003 年的林茲電子藝術節的宣言中,再 一次強調程式語法在數位藝術中的重要性。透過國際交流中,我們不斷的受到 衝擊,不論在視覺、聽覺或是觸覺,都在數位媒體特殊的展演方式中,重新得 到新的認知態度。

國內近幾年來,由於電腦的普及在數位藝術的推動與發展亦相當快速,互 動式的裝置藝術、多媒體電子藝術的作品也有國際級的水準。但對於程式碼的 運用、隨機亂數圖形的描述與應用,則較少人提及。大多朝向多媒體聲光科技 方向發展。而運用開放性的程式碼,改變其參數設定得到新的成果,就有如過 去運用水彩、油畫等傳統媒材,實驗不同的表現方式而得到新的詮釋,其概念 是相同的。目前的電腦教育,绝大多數的教育目標,都朝向實用為主,現成已 有的影像繪圖程式如 Photoshop、Illustrator、Painter、MAYA…等等,大家耳 熟能詳的軟體。許多人的工作就是熟練的操作軟體選項,當然其中不乏有優秀 的作品發表;但若是能再往數位知識前進的話,語法的認知將是重大的關鍵。

程式語法對於慣用套裝程式的我們來說,就如嚼蠟般難以了解接受。若能將此 種數位教育提早發展,不僅可以激發創意,更能發展出更多的可能。

相關文件