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

绘制第一个 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();
}
}
}

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


改变 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();
}
}
}

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() 跟随鼠标的位置而改变

将 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

将 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 的教程可查看其他经验
PROCESSINGPROCESSING编程JAVA编程版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1198799.html