Processing:让编程成为一种艺术

更新时间:2024-01-28 作者:用户投稿原创标记本站原创 点赞:30928 浏览:144222

●什么是Processing

在很多人的眼里,编程是理工男的专利,是深不可测又枯燥无味的代码输入过程.但是,算法和程序设计技术的先驱——唐纳德·克努特(1974年度的图灵奖获得者)却不这么认为.他说,程序设计既是一门科学,也是一门艺术,二者可以彼此很好地互相补充.

Processing是一款专为设计师和艺术家使用的编程语言,由美国麻省理工学院媒体实验室美学与运算小组(AestheticsComputationGroup)的CaseyReas与BenFry创立.Processing的出现,被视为艺术设计创作的一场革命.利用Processing,艺术家可以将抽象的数据呈现为生动的视觉形象.它不仅可以生成唯美的图形,还能编写出功能强大的互动艺术作品.

Processing软件的网站:http://.processing./(如图1).最新的Processing为2.0版,软件下载地址为:http://.processing./download/.

图1

●Processing的特色

1.用数字来设计

“用数字来设计”(DesignByNumbers),是Processing独创的程序设计方法.它的思想是简单地写一行代码,就会在屏幕上生成一个图形,再增加一些代码,图形就能根据鼠标的动作发生变化.这些代码称之为草稿(Sketch).Processing的设计者认为,草稿化(Sketching)是一种思维方式,有趣而便捷,可以让人在短时间内探索出很多想法.“草稿”一词的强调,让使用者体会在计算机屏幕上画图,就如同在图形纸上作画一样,下页图2为草稿,下页图3为草稿对应的图画.

利用Processing可以实现梦幻般的视觉展示效果.http://.openprocessing./和http://wiki.processing./均是Processing的资源网站,提供了大量美轮美奂的画面.当然,这些画面都是用Processing画出来的(如下页图4).

2.代码简洁但功能强大

Processing是Ja语言的延伸,支持许多现有的Ja语言架构,不过在语法上简易了许多,并具有许多贴心及人性化的设计.通过Processing,无需太高深的编程技术,便可创作出漂亮的图形以及媒体交互作品.如下页图3、下页图4所示,仅仅几行代码,就能制作出跟随鼠标画圆的互动作品来.

Processing支持3D图形,它有P3D和OpenGL两种渲染模式.Processing默认以2D模式运行,使用3D模式需要在size()函数中的第三个参数指定渲染模式,形如size(w,h,P3D)或size(w,h,OPENGL).其中,P3D是Processing内置的,而OpenGL则以库的形式存在.

Processing采用“库”的形式,实现功能方面的拓展.除了Processing自己的核心库外,还有上百个非的库在Processing网站上.这些库拓展了Processing在音频、视频、网络和串口等方面的功能,甚至进入了计算机视觉处理、虚拟现实和电子装配(Fabrication)等领域.利用这些库,Processing能够任意读写很多种类的信息.

3.与物理世界的互动

Arduino是一个风靡世界的开源电子原型平台.它和Processing是姐妹项目,拥有共同的编程环境和类似的语法.Processing的范例中提供了一些和Arduino通讯的互动作品.Processing可以读取Arduino的传感器数据,然后把这些数据呈现在屏幕上.这种通信是相互的,也可以用Processing程序作为操作界面,控制电机、扬声器、灯光和相机等设备.当然,其他支持串行通讯的设备也都可以和Processing互动.

Processing还有更多的优点.比如,其支持安卓系统,同样的代码可以输出不同格式的文件,在不同设备和环境中使用.并且,因为开源而拥有大量资源,也是Processing最重要的优势之一.

●Processing典型范例

将不可见的数据可视化,是Processing的优势之一.下面一段代码虽然很简洁,却可以把一首MP3的声音进行可视化.

importddf.minim.*;

AudioPlayerplayer;

Minimminim;

voidsetup(){

size(1024,500);

ooth();

minim等于newMinim(this);

player等于minim.loadFile("../2002s.mp3",1024);

player.play();

}

voiddraw(){

background(0);

stroke(255);

for(inti等于0;istrokeWeight(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);

}}

代码呈现出来的效果如图5,白色的线条随着音乐的节奏律动,如霓虹灯,如竖琴,充满变化.只要把其中一条语句:player等于minim.loadFile("../2002s.mp3",1024);修改为:player等于minim.getLineIn(Minim.STEREO,1024);就可以发现,白色线条随着说话、唱歌的声音而发生变化了,很神奇.

●Processing的适合对象

因为涉及代码编写,所以笔者不太建议在小学阶段开设Processing.其定位应该是中学以上的学生学习.但是,少数已经具备Scratch程序基础的小学高年级学生,完全可以一试.因为,仅仅二维绘画方面,Processing比LOGO语言,不仅简单,而且更加形象、有趣.

在Processing的教学中,曾经发生过这样的趣事:一位艺术类院校教“互动编程”的教师,总是埋怨自己的学生编程能力差,写不出稍微复杂点的程序,而羡慕另一位在理工类院校教学的教师.但在理工类院校教学的教师也很苦恼,因为他的学生没有艺术想象力,程序展现出来的画面一点也没有艺术感觉.可见Processing就是一门融技术和艺术为一体的编程语言,尤其适合在艺术和技术两个领域都有浓厚兴趣的爱好者使用.

●如何开发Processing课程

相对于Scratch和VB来说,Processing没有图形化的编程界面和所见即所得的程序设计功能.与传统的程序设计教学不同,Processing的教学要从图形和交互开始,而不是从数据结构和文本控制台的输出开始.所以,传统的编程类课程设计思路对Processing来说,并不是很适合.


开发Processing要尤其注意以下三点:①切忌使用信息学奥赛方面的趣味试题作为课程的编程范例.因为Processing的设计理念是用代码画图,而不是解答数学题或者实现某些经典算法.②切忌使用语法教学形式,试图逐一介绍Processing的功能.学习Processing应该从交互图形设计出发,根据设计的需求,引入必要的功能.学习者没有必要把所有的函数、库的功能都研究一遍.③从模仿到创新是一条可行的学习技巧.模仿的对象除了一些经典范例外,还可以是现实中的图形,尝试用多种方式去实现,建立用代码画画的思想.

合理使用Processing自身提供的范例,开发Processing课程并不是很困难的一件事.Processing课程的设计思路可以参照这样的线索(如图6).

由于文化和语言的差异,国内研究Processing的人并不多.且不说在中小学,就是目前已经开设Processing课程的高校也寥寥无几.但是,在创意产业和互动媒体艺术迅速发展的中国,开展与Processing相关的课程,让对艺术感兴趣的文科生也能动手用代码描绘自己的创意,无疑是非常有意义的一件事.正如《爱上Processing》一书的翻译者陈思明所说:Processing是一把激发艺术灵感的钥匙,你可以轻易地在计算机屏幕中展现心中的艺术场景,感受更多灵感的涌现,在颜色与线条的海洋中漫步.