多语言展示
当前在线:266今日阅读:117今日分享:28

Processing 绘制 3D 图形

Processing 可以绘制 2D 图形,当然也可以绘制各种 3D 图形,这里就给大家介绍一下如何使用 Processing 编程来绘制简单的 3D 图形。
工具/原料
1

Processing3

2

电脑

方法/步骤
1

Processing 中的 3D 图形库文件要使用 Processing 编程来绘制 3D 图形,但是在绘制之前,必须先加载 3D 库文件使用语句:import processing.opengl.*;加载库文件之后,就可以通过命令来创建 3D 图形,就是在原有的 x y 轴上多加一个 Z 轴,如下图所示效果代码例如:size(800, 600, P3D);size(800, 600, OPENGL);

2

绘制第一个 3D 图形输入代码:import processing.opengl.*;void setup() {size(440, 220, OPENGL);noStroke();fill(255, 190);}void draw() {background(0);translate(width/2, height/2, 0);int dim = 18;for (int i = -height/2; i < height/2; i += dim*1.2) {for (int j = -height/2; j < height/2; j += dim*1.2) {beginShape();vertex(i, j, 0);vertex(i+dim, j, 0);vertex(i+dim, j+dim, -dim);vertex(i, j+dim, -dim);endShape();}}}

3

移动你的 3D 模型要移动 3D 模型,只需加两个改变位置的语句:rotateX(mouseX / 200.0);rotateY(mouseY / 100.0);

4

改变 3D 图形的颜色输入代码:import processing.opengl.*;void setup() {size(420, 220, OPENGL);noStroke();fill(255);}void draw() {//lights();//ambientLight(102, 102, 102);//directionalLight(255, 255, 255, -1, 0, 0);pointLight(255, 255, 255, mouseX, 110, 50);//spotLight(255, 255, 255, mouseX, 0, 200, 0, 0, -1,  PI, 2);rotateY(PI/24);background(0);translate(width/2, height/2, -20);int dim = 18;for (int i = -height/2; i < height/2; i += dim*1.4) {for (int j = -height/2; j < height/2; j += dim*1.4) {pushMatrix();translate(i, j, -j);box(dim, dim, dim);popMatrix();}}}

5

Processing 中 camera() 的用法输入代码:import processing.opengl.*;void setup() {size(420, 220, OPENGL);noStroke();}void draw() {lights();background(0);float camZ = (height/2.0) / tan(PI*60.0 / 360.0);camera(mouseX, mouseY, camZ,width/2.0, height/2.0, 0,0, 1, 0);translate(width/2, height/2, -20);int dim = 18;for (int i = -height/2; i < height/2; i += dim*1.4) {for (int j = -height/2; j < height/2; j += dim*1.4) {pushMatrix();translate(i, j, -j);box(dim, dim, dim);popMatrix();}}}程序中让 camera()  跟随鼠标的位置而改变

6

将 Processing 创建的图形保存为图片输入代码:float x = 0;void setup() {size(720, 480);smooth();noFill();strokeCap(SQUARE);frameRate(30);}void draw() {background(204);translate(x, 0);for (int y = 40; y < 280; y += 20) {line(-260, y, 0, y + 200);line(0, y + 200, 260, y);}if (frameCount < 2) {saveFrame('frames/SaveExample.png');} else {exit();}x += 2.5;}这里保存图片的格式可以是 .png / .jpg / .tif

7

将 Processing 项目保存为 PDF 格式输入代码:import processing.pdf.*;void setup() {size(600, 800, PDF, 'Ex-11-5.pdf');noFill();strokeCap(SQUARE);}void draw() {background(255);for (int y = 100; y < height - 300; y+=20) {float r = random(0, 102);strokeWeight(r / 10);beginShape();vertex(100, y);vertex(width/2, y + 200);vertex(width-100, y);endShape();}exit();}

注意事项

更多关于 Processing 的教程可查看其他经验

推荐信息