相關(guān)商品
【編程軟件】Processing:讓編程成為一種藝術(shù)(謝作如)
編輯:sophie2014-02-01 瀏覽次數(shù):1664
1.什么是Processing
在很多人的眼里,編程是理工男的專利,是深不可測又枯燥無味的代碼輸入過程。但是,算法和程序設(shè)計技術(shù)的先驅(qū)——唐納德?克努特(1974年度的圖靈獎?wù)撸﹨s不這么認(rèn)為。他說,程序設(shè)計既是一門科學(xué),也是一門藝術(shù),二者可以彼此很好地互相補(bǔ)充。
Processing是一款專為設(shè)計師和藝術(shù)家使用的編程語言,由美國麻省理工學(xué)院媒體實驗室美學(xué)與運算小組( Aesthetics Computation Group )的Casey Reas與Ben Fry創(chuàng)立的。Processing的出現(xiàn),被視為藝術(shù)設(shè)計創(chuàng)作的一場革命。利用Processing,藝術(shù)家可以將抽象的數(shù)據(jù)呈現(xiàn)為生動的視覺形象。它不僅可以生成唯美的圖形,還能編寫出功能強(qiáng)大的互動藝術(shù)作品。
Processing軟件的官方網(wǎng)站:http://www.processing.org/。最新的Processing為2.0版,軟件下載地址為:http://www.processing.org/download/。
圖1 Processing網(wǎng)站
2.Processing的特色
1)用數(shù)字來設(shè)計。
“用數(shù)字來設(shè)計”(Design By Numbers),是Processing獨創(chuàng)的程序設(shè)計方法。它的思想是簡單地寫一行代碼,就會在屏幕上生成一個圖形,再增加一些代碼,圖形就能根據(jù)鼠標(biāo)的動作發(fā)生變化。這些代碼稱之為草稿(Sketch)。Processing的設(shè)計者認(rèn)為,草稿化(Sketching)是一種思維方式,有趣而便捷,可以讓人在短時間內(nèi)探索出很多想法。“草稿”一詞的強(qiáng)調(diào),讓使用者體會在計算機(jī)屏幕上畫圖,就如同在圖形紙上作畫一樣,如圖2所示。
圖2 從草稿到圖形
Processing可以畫出實現(xiàn)夢幻般的視覺展示效果。Processing資源網(wǎng)站如http://www.openprocessing.org/和http://wiki.processing.org/,提供了大量美輪美奐的畫面。當(dāng)然,這些畫面都是用Processing畫出來的,如圖3所示。
圖3 Processing藝術(shù)品
2)代碼簡潔但功能強(qiáng)大
Processing是Java語言的延伸,支持許多現(xiàn)有的Java語言架構(gòu),不過在語法上簡易許多,并具有許多貼心及人性化的設(shè)計。通過Processing,無需太高深的編程技術(shù),便可創(chuàng)作出漂亮的圖形以及媒體交互作品。如圖2所示,僅僅幾行代碼,就能制作出跟隨鼠標(biāo)畫圓的互動作品來。
Processing支持3D圖形,它有P3D和OpenGL兩種渲染模式。Processing默認(rèn)運行在2D模式,使用3D模式需要在size()函數(shù)中的第3個參數(shù)指定渲染模式,形如size(w, h, P3D)或size(w, h, OPENGL)。其中,P3D是Processing內(nèi)置的,而OpenGL則以庫的形式存在。
Processing采用“庫”的形式,實現(xiàn)功能方面的拓展。除了在Processing自己的核心庫外,還有上百個非官方的庫在Processing網(wǎng)站上。這些庫拓展了Processing在音頻、視頻、網(wǎng)絡(luò)和串口等方面的功能,甚至進(jìn)入了計算機(jī)視覺處理、虛擬現(xiàn)實和電子裝配(Fabrication)等領(lǐng)域。利用這些庫,Processing能夠任意讀寫很多種類的信息。
3)與物理世界的互動
Arduino是一個風(fēng)靡世界的開源電子原型平臺。它和Processing是姐妹項目,擁有共同的編程環(huán)境和類似的語法。Processing的范例中提供了一些和Arduino通訊的互動作品。Processing可以讀取Arduino的傳感器數(shù)據(jù),然后把這些數(shù)據(jù)呈現(xiàn)在屏幕上。這種通信是相互的,你也可以用Processing程序作為操作界面,控制電機(jī)、揚(yáng)聲器、燈光和相機(jī)等設(shè)備。當(dāng)然,其他支持串行通訊的設(shè)備也都可以和Processing互動。
Processing還有更多的優(yōu)點。比如,其支持安卓系統(tǒng),同樣的代碼可以輸出不同格式的文件,在不同設(shè)備和環(huán)境中使用。并且,因為開源而擁有大量資源,也是Processing最重要的優(yōu)勢之一。
3.Processing典型范例
將不可見的數(shù)據(jù)可視化,是Processing的優(yōu)勢之一。下面一段代碼雖然很簡潔,卻可以把一首MP3的聲音進(jìn)行了可視化。
import ddf.minim.*;
AudioPlayer player;
Minim minim;
void setup() {
size(1024, 500);
smooth();
minim=new Minim(this);
player=minim.loadFile("../2002s.mp3", 1024);
player.play();
}
void draw() {
background(0);
stroke(255);
for (int i=0;i
strokeWeight(abs(player.left.get(i)*10));
rect(i*20, 75+player.left.get(i)*10, 1, 75+player.left.get(i)*250);
rect(i*20+10, 250+player.right.get(i)*10, 1, 75+player.right.get(i)*250);
}
}
代碼呈現(xiàn)出來的效果如下圖,白色的線條隨著音樂的節(jié)奏律動,如霓虹燈,如豎琴般,充滿變化。只要把其中一條語句:
player=minim.loadFile("../2002s.mp3", 1024);
修改為:player=minim.getLineIn(Minim.STEREO, 1024);
你就可以發(fā)現(xiàn),白色線條隨著你說話、唱歌的聲音而發(fā)生變化了,神奇吧?
圖4 聲音的視覺化
4.Processing的適合對象
因為涉及到代碼編寫,所以Processing不太建議在小學(xué)階段開設(shè)。其定位應(yīng)該是中學(xué)以上的學(xué)生學(xué)習(xí)。但是,少數(shù)已經(jīng)具備Scratch程序基礎(chǔ)的小學(xué)高年級學(xué)生,完全可以一試。因為,僅僅二維繪畫方面,Processing比LOGO語言來說,不僅更加簡單,而且更加形象、有趣。
在Processing的教學(xué)中,曾經(jīng)發(fā)生過這樣的趣事:一位藝術(shù)類院校教“互動編程”的老師,總是埋怨自己的學(xué)生編程能力差,寫不出稍微復(fù)雜點的程序,而羨慕另一位在理工類院校教學(xué)的老師。但在理工類院校教學(xué)的老師卻也很苦惱,因為他的學(xué)生沒有藝術(shù)想象力,程序展現(xiàn)出來的畫面一點也沒有藝術(shù)感覺??梢奝rocessing就是一門融技術(shù)和藝術(shù)為一體的編程語言,尤其適合在藝術(shù)和技術(shù)兩個領(lǐng)域都有濃厚興趣的愛好者使用。
5.如何開發(fā)Processing課程
相對于Scratch和VB來說,Processing沒有圖形化的編程界面和所見即所得的程序設(shè)計功能。與傳統(tǒng)的程序設(shè)計教學(xué)不同,Processing的教學(xué)要從圖形和交互開始,而不是從數(shù)據(jù)結(jié)構(gòu)和文本控制臺的輸出開始。所以,傳統(tǒng)的編程類課程設(shè)計思路對Processing來說,并不是很適合。開發(fā)Processing要尤其注意以下三點:
1)切忌使用信息學(xué)奧賽方面的趣味試題,作為課程的編程范例。因為Processing的設(shè)計理念是用代碼畫圖,而不是解答數(shù)學(xué)題或者實現(xiàn)某些經(jīng)典算法。
2)切忌使用語法教學(xué)形式,試圖把Processing的功能逐一介紹。學(xué)習(xí)Processing應(yīng)該從交互圖形設(shè)計出發(fā),根據(jù)設(shè)計的需求,引入必要的功能。學(xué)習(xí)者沒有必要把所有的函數(shù)、庫的功能都研究一遍。
3)從模仿到創(chuàng)新是一條可行的學(xué)習(xí)技巧。模仿的對象除了一些經(jīng)典范例外,還可以是現(xiàn)實中的圖形,嘗試用多種方式去實現(xiàn),建立用代碼畫畫的思想。
合理使用Processing自身提供的范例,開發(fā)Processing課程并不是很困難的一件事。Processing課程的設(shè)計思路可以參照這樣的線索:
圖5 Processing課程開發(fā)思路
由于文化和語言的差異,國內(nèi)研究Processing的人并不多。且不說在中小學(xué),目前已經(jīng)開設(shè)Processing課程的高校也寥寥無幾。但是,在創(chuàng)意產(chǎn)業(yè)和互動媒體藝術(shù)迅速發(fā)展的中國,開展與Processing相關(guān)的課程,讓對藝術(shù)感興趣的文科生也能動手用代碼描繪自己的創(chuàng)意,無疑是非常有意義的一件事。正如《愛上Processing》一書的翻譯者陳思明所說:Processing是一把激發(fā)藝術(shù)靈感的鑰匙,你可以輕易地在計算機(jī)屏幕中展現(xiàn)心中的藝術(shù)場景,感受更多靈感的涌現(xiàn),在顏色與線條的海洋中漫步。
參考文獻(xiàn)
[1]Casey Reas & Ben Fry(2012).愛上Processing(Getting Started with Processing).北京:人民郵電出版社.
[2]譚亮(2012). Processing互動編程藝術(shù).北京:電子工業(yè)出版社.
用戶評價
- 咨詢內(nèi)容:
- 寫得好。如果能將“Processing典型范例”與Arduino的通訊語句寫出來就好了。