Sketch专案
所有在processing开启的一个项目都称为一个sketch专案,每个sketch项目都有一个和sketch项目名称相同的目录,并在此目录中产生一个sketch主程序。例如: 若项目名称为"Sketch_123",则sketch目录名称就是"Sketch_123",而sketch主程序名称就是"Sketch_123.pde"。
sketch项目中若有使用影像、图片、声音、字型档案时,要将档案放在sketch目录下的"data"目录中。若有使用到其它的链接库时,则需要将链接库档案放在sketch目录下的"code"目录中。
当执行汇出功能时,系统会将data及code目录下的所有档案,汇出到一个压缩档。 例如: "Sketch_123.jar"。
原则上,sketch项目的档案都会放在Processing的安装目录下,若要将sketch项目的档案放在其它的目录的话,请利用"File"功能选单中的"Preferences"功能来设定。
另外,可以同时有多个程序档案放在同一个sketch目录下。可以放置Processing原始档(附檔名是.pde),以及Java原始档(附檔名是.java)。
汇出Applet
若要让sketch程序可以在网页中执行的话,利用Export功能,系统会将Processing原始文件转换到Java原始档格式,然后编译成Applet。同时,系统也会产生一些相关档案,连同Applet档案,储存在sketch目录下的applet目录。
产生的相关档案有
index.html:HTML档案,包含applet及一个link。
Sketch_123.jar:Java Archive
Sketch_123.java:Java原始档
Sketch_123.pde:Processing原始档
在汇出时,系统会将data及code目录下的档案全部打包起来。因此,产生的JAR档案可能会很大,若在data及code目录下,有applet不会用到的档案,可以在汇出前先移除,或者在汇出后再利用压缩软件将JAR档案中不需要的档案移除, 如此就可以将JAR档案减小。
影像坐标系统
Processing采用Cartesian 坐标系统,原点在左上方,如图所示,x轴正值向右, y轴正值向下, z轴正值向前,负值向后。而视角预设在屏幕中间,也就是中心点在[width/2, height/2]。若有一个程序设定图像大小是 320 pixels X 240 pixels, 则[0,0]代表在左上角,[320,240]在右下角。
Programming Modes主程序架构
Processing的程序编辑模式有3种,基本模式(Basic Mode)、连续模式(Continuous Mode) 以及 Java进阶模式(Java Mode)。初学者最好先从基本模式学起,藉以熟悉坐标、变量、循环等的操作,然后再转到连续模式及Java进阶模式编写程序。
基本模式
这个模式用来绘制静态影像及练习程序的基本功能,简单的画线的程序代码可以直接在屏幕上呈现出来,以下这个范例会画一个黄色的长方形在屏幕上。
size(200, 200); // 设定影像大小 200x200
background(255); // 设定背景颜色
noStroke(); //设定无框线
fill(255, 204, 0); //设定填入的颜色
rect(30, 20, 50, 50); //从坐标[30,20]处, 画一个50x50的长方形.
连续模式
这个模式提供一个setup()及draw()程序代码区块,程序一开始会先执行setup()区块的程序代码,而且只会执行一次,一般用来设定初始值及环境参数。接着会反复执行draw()区块,的程序代码,另外在setup()及draw()程序代码区块之外,可以自行再加入其它的程序区块,像是函式、类别、键盘事件和鼠标事件。
以下范例会画4个圆圈,而画圆圈的方式是利用呼叫circles()函式的方式来完成。 circles()函式并不是Processing本身提供的功能,而是在此程序中另外编写的。此外,在draw()区块中的程序代码只会执行一次,因为在setup()区块中,设定了noLoop(),就是不要反复执行。
转换Applet 到 Application
虽然在在Processing的编辑环境中,可以直接以完整的Java程序语言来编写程序,但是只能以汇出Applet的方式在浏览器中执行,如果想要使用一些与存取本机计算机资源有关的程序功能的话,会因Applet在浏览器中执行而有所限制。基于安全性的考虑,在浏览器中执行Applet程序,是禁止存取本机计算机资源的, 否则就会变成黑客程序了。
因此,需要将Applet转换成Application,如此就可以跳脱浏览器,单独地直接在本机计算机上执行程序了,也就可以完全地使用所有的功能了,同时,也可以以全屏幕的方式来呈现影像了。
影像产生模式 (Rendering Modes)
Processing提供的影像产生模式有以下3种,第一是利用Java 2D绘图链接库,第二是利用一个叫做P3D的3D缯图引擎,第三是透过JOGL来与OpenGL接口沟通。至于要决定使用哪一种模式来输出影像,可以利用size()函数来设定。
值得一提的是,Processing花了很多努力,在让不同的影像产生模式结果相近,但是目前还是有一些差异。
JAVA2D
利用Java 2D绘图链接库来产生2D影像。这是预设的影像产生模式,如果没有特叮设定, 就会以这个模式产生影像。
size(200, 200);
background(255);
noStroke();
fill(255, 204, 0);
rect(30, 20, 140, 160);
以下范例是明确地设定要使用Java 2D影像产生模式
size(200, 200, JAVA2D);
background(255);
noStroke();fill(255, 204, 0);
rect(30, 20, 140, 160);
P3D
最适合用来快速绘制3D影像, 也支持2D影像
size(200, 200, P3D);
background(0);
noStroke();fill(204, 204);
translate(width/2, height/2);
rotateX(PI/6);
rotateY(PI/3);
rect(-60, -60, 120, 120);
OPENGL
这个模式适用于有使用支持OpenGL图形加速卡的情况,可以加速图形的产生, 特别适用于要绘制更多图形以及更大显示范围的场合。
Processing透过JOGL来与OpenGL接口沟通,其中JOGL是由SUN的游戏科技小组所发起的。因此,需要在计算机上安装支持OpenGL的图形加速卡,才可以充分发挥JOGL所提供的链接库的功能。
采用此模式产生影像,其效果会因所使用的绘图卡不同及OpenGL支持的程度而有所不同。 |