广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Processing 绘制 3D 图形

    来源:网络收集  点击:  时间:2024-09-07
    【导读】:
    Processing 可以绘制 2D 图形,当然也可以绘制各种 3D 图形,这里就给大家介绍一下如何使用 Processing 编程来绘制简单的 3D 图形。工具/原料moreProcessing3电脑方法/步骤1/7分步阅读

    Processing 中的 3D 图形库文件

    要使用 Processing 编程来绘制 3D 图形,但是在绘制之前,必须先加载 3D 库文件

    使用语句:import processing.opengl.*;

    加载库文件之后,就可以通过命令来创建 3D 图形,就是在原有的 x y 轴上多加一个 Z 轴,如下图所示效果

    代码例如:

    size(800, 600, P3D);

    size(800, 600, OPENGL);

    2/7

    绘制第一个 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/7

    移动你的 3D 模型

    要移动 3D 模型,只需加两个改变位置的语句:

    rotateX(mouseX / 200.0);

    rotateY(mouseY / 100.0);

    4/7

    改变 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/7

    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/7

    将 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/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 的教程可查看其他经验

    PROCESSINGPROCESSING编程JAVA编程
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_1198799.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 14:31:22  耗时:0.028
    0.0276s