Я не уверен, что понимаю, что вам нужно.
Приведенный вами пример рисует 2d-пути, но просто использует z. масштабирование работало бы аналогичным образом.
Итак, как динамически построить 3D-объект, добавив пути?
Вы имеете в виду выдавливание/обтачивание объекта или копирование сжатого эскиза?
Рисование пути легко обрабатывается, вы просто помещаете объекты вершины в цикл for между beginShape() и endShape() звонки.
Вот фрагмент кода, который делает это в примере, который вы отправили:
beginShape();
for (int p=0; p<pcount; p++){
vertex(Ring[p].position().x(),Ring[p].position().y());
}
endShape(CLOSE);
вы также можете вызвать вершину (x, y, z)
Некоторое время назад я хотел выдавить путь, вот мой вопрос в случае, если это поможет.
Базовый скетч загружен здесь.
РЕДАКТИРОВАТЬ: Если у вас есть массив из 2 полигонов, вы можете просто перебирать их и рисовать, используя что-то похожее на beginShape() и endShape(), GL_POLYGON может быть удобен.
e.g.
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();
}
Идея состоит в том, что вы проходите по каждому срезу, и для каждого среза ваш цикл проходит по всем его точкам. Очевидно, что срезы и количество трехмерных векторов внутри каждого среза зависят от ваших данных. Кстати говоря, откуда берутся ваши данные?
Если срезы — это не то, что вам может пригодиться после volTron: http://dm.ncl.ac.uk/joescully/voltronlib/images/s2.jpg
ХТХ, Джордж
person
George Profenza
schedule
21.02.2010