2010-02-21 3 views
3

Поэтому у меня есть какой-то генератор путь, который в настоящее время работает как этотКак динамически строить 3D-объект, добавляя пути? (Java, OpenGL)

http://www.openprocessing.org/visuals/?visualID=2615 (Существует источник; WQRNING - Java)

Я хочу создать некоторые 3D-объект, используя пути я сгенерированные так заблокирован в одной из перспектив, похожих на то, что я получаю сейчас в 2D.

Как я могу динамически построить 3D-объект, добавив пути?

BTW: на самом деле я Мент алгоритм, как этот http://www.derschmale.com/2009/07/20/slice-based-volume-rendering-using-pixel-bender/

Так что я хочу, чтобы создать из таких окружения PATH (я не хочу использовать изображения, и я не хочу использовать вспышку, я хочу использовать Java + OpenGL)

alt text http://www.derschmale.com/blog/wp-content/cross-section.jpg

такое 3d изображение (Но обратите внимание, я хочу OPENGL Java и РАТН))

alt text http://www.derschmale.com/blog/wp-content/volumerendering.jpg

ответ

1

Я не уверен, что понимаю, что тебе нужно.

Пример, который вы предоставили, рисует 2d пути, но просто использует z. масштабирование работало бы аналогичным образом.

So Как динамически построить 3d объект, добавив путь?

Вы имеете в виду выдавливание/обвязывание объекта или репликацию эскиза скрина?

Рисование путь легок в обработке, вы просто поместите Vertex объектов, в виде для контура между beginShape() и endShape() вызовов.

Вот фрагмент кода, который делает это в примере, вы послали:

beginShape(); 
    for (int p=0; p<pcount; p++){ 
    vertex(Ring[p].position().x(),Ring[p].position().y()); 
    } 
    endShape(CLOSE); 

вы также можете вызвать вершину (х, у, г)

Я хотел выдавить путь некоторое время назад, вот мой question в случае, если это поможет.

Загружен основной эскиз here.

EDIT: Если у вас есть массив из 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(); 
} 

Идея заключается в том, чтобы вы проходили через каждый срез, и для каждого среза ваша петля через все ее точки. Очевидно, что срезы и число трехмерных векторов внутри каждого среза соответствуют вашим данным. Кстати, откуда взялись ваши данные?

Если ломтики не то, что ваш после volTron могут пригодиться: volTron http://dm.ncl.ac.uk/joescully/voltronlib/images/s2.jpg

HTH, Джорджа

+0

на самом деле я Мент алгоритм, как это http://www.derschmale.com/2009/07/ 20/срез на основе объем-рендеринг-использование пикселов гибочные / – Rella

Смежные вопросы