2010-02-21 3 views
3

그래서 나는 지금이경로를 추가하여 3D 오브젝트를 동적으로 생성하는 방법은 무엇입니까? (자바, OpenGL을)

http://www.openprocessing.org/visuals/?visualID=2615처럼 작동 어떤 경로 생성기가 (이 소스, WQRNING - 자바 애플릿)

나는 그래서 생성 된 경로를 사용하여 일부 3D 객체를 생성 할 내가 지금 2D에서 얻는 것과 유사한 관점으로 잠겨 있습니다.

그래서 어떻게 경로를 추가하여 3D 오브젝트를 동적으로 구성합니까?

은 BTW : 실제로 나는 그런 PATH에서 만들 그래서이 http://www.derschmale.com/2009/07/20/slice-based-volume-rendering-using-pixel-bender/

같은 알고리즘 (I 이미지를 사용하지 않고 내가 자바 + 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

당신이 뭘하고 있는지 잘 모르겠습니다.

제공된 예제는 2 차원 경로를 그으나 z 만 사용합니다. 스케일링은 비슷한 방식으로 을 처리했을 것입니다.

그럼 어떻게 덧붙여서 3d경로를 추가하여 dinamicly 개체를 만드시겠습니까?

개체를 돌출/래스팅하거나 스케치 스케치를 복제하는 것을 의미합니까? 경로를 그리기 처리가 용이 ​​

, 당신은 단지 또 그러기()endShape() 통화 사이의 루프 에 대한 정점에게 에서 개체를 배치합니다.

(X, Y, Z)는 I 경로를 돌출하고 싶었

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

당신은 또한 호출 할 수 있습니다 정점 : 여기

는 예를 들어 당신이 보낸 것을 수행하는 코드의 비트입니다 잠시 후, 내 question이 도움이 될 수 있습니다.

기본 스케치는 here으로 업로드됩니다.

편집 : 당신이 다각형의 배열이있는 경우, 당신은 그들을 통해 단지 루프 수 있고, 또 그러기()와 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, 조지

+0

실제로이 같은 알고리즘을, 표준 http://www.derschmale.com/2009/07/ 20/슬라이스 기반 볼륨 렌더링 - 픽셀 - 벤더 / – Rella

관련 문제