我不确定我是否明白你在追求什么。
您提供的示例绘制 2d 路径,但仅使用 z。缩放将以类似的方式起作用。
那么如何通过添加路径动态地构造 3d 对象?
你的意思是挤压/车削一个物体,还是复制挤压草图?
绘制路径很容易处理,您只需将顶点对象放在beginShape()和endShape()调用
之间的for 循环中。
这是您发送的示例中执行此操作的代码位:
beginShape();
for (int p=0; p<pcount; p++){
vertex(Ring[p].position().x(),Ring[p].position().y());
}
endShape(CLOSE);
你也可以调用 vertex(x,y,z)
不久前我想挤出一条路径,这是我的问题,以防万一。
基本草图在这里上传。
编辑:如果你有一个包含 2 个多边形的数组,你可以遍历它们,并使用类似于 beginShape() 和 endShape() 的东西进行绘制,GL_POLYGON 可能会很方便。
例如
import processing.opengl.*;
import javax.media.opengl.*;
int zSpacing = 10;
PVector[][] slices;
void setup() {
size(600, 500, OPENGL);
slices = new PVector[3][3];
//dummy slice 1
slices[0][0] = new PVector(400, 200,-200);
slices[0][1] = new PVector(300, 400,-200);
slices[0][2] = new PVector(500, 400,-200);
//dummy slice 2
slices[1][0] = new PVector(410, 210,-200);
slices[1][1] = new PVector(310, 410,-200);
slices[1][2] = new PVector(510, 410,-200);
//dummy slice 3
slices[2][0] = new PVector(420, 220,-200);
slices[2][1] = new PVector(320, 420,-200);
slices[2][2] = new PVector(520, 420,-200);
}
void draw() {
background(255);
PGraphicsOpenGL pgl = (PGraphicsOpenGL) g; // g may change
GL gl = pgl.beginGL(); // always use the GL object returned by beginGL
for(int i = 0 ; i < slices.length; i ++){
gl.glColor3f(0, .15 * i, 0);
gl.glBegin(GL.GL_POLYGON);
for(int j = 0; j < slices[i].length; j++){
gl.glVertex3f(slices[i][j].x, slices[i][j].y,slices[i][j].z + (zSpacing * i));
}
gl.glEnd();
}
pgl.endGL();
}
这个想法是您循环遍历每个切片,并且对于每个切片,您循环遍历其所有点。显然切片和每个切片内的 3d 矢量数量取决于您的数据。说到这里,你的数据是从哪里来的?
如果切片不是您在volTron之后可以派上用场的东西:
volTron http://dm.ncl.ac.uk/joescully/voltronlib/images/s2.jpg
HTH,乔治