1

私はたくさんの部屋を作成しており、部屋の中にあるものを表示するために、一人称視点 (これについては説明しました) だけでなく上からも表示する必要があります。問題は、上のビューで屋根を切り取る方法がわからないため、屋根/天井ではなく、内部のもののみが表示されることです。

これは私がこれまでに持っているものです:

public void display(GLAutoDrawable drawable)
{
    GL2  gl  = drawable.getGL().getGL2();
    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
    // the "up" direction

    for ( int i=0; i<2; i++ ){
        //display first-person view here
        if(i == 0){
            gl.glViewport(0, 0, 600, 600);                  

            gl.glMatrixMode(GL2.GL_MODELVIEW);
            gl.glLoadIdentity();
            glu.gluPerspective(90., 1., .5, 100.);      

            gl.glLoadIdentity();
            glu.gluLookAt(eyex, eyey, eyez,                 
                    eyex+Math.cos(Math.toRadians(viewangle)),   
                    eyey, 
                    eyez-Math.sin(Math.toRadians(viewangle)),   
                    0f,1f,0f);  

        }

        gl.glClear(GL.GL_DEPTH_BUFFER_BIT);

        //display from above view here
        if(i == 1){
            gl.glViewport(600, 0, 600, 600);
            gl.glMatrixMode(GL2.GL_MODELVIEW);
            gl.glLoadIdentity();
            glu.gluPerspective(90., 1., .5, 100.);      

            gl.glLoadIdentity();

            glu.gluLookAt(59, 90, 59.999,               
                    60, 0, 60,  
                    0f,1f,0f);  
        }

        room1.draw(gl);
        room2.draw(gl);
        room3.draw(gl);
        room4.draw(gl);
        room5.draw(gl);
        room6.draw(gl);
        room7.draw(gl);

        creature.draw(gl);
    }

    int error = gl.glGetError();
    if (error != GL.GL_NO_ERROR)
        System.out.println("OpenGL Error: " );
}
4

2 に答える 2

0

一部のエンジンは、3人称カメラからプレーヤーまでの距離を可変にします(障害物が途中にある場合、カメラはプレーヤーに近づきます)。逆レイピッキング(プレーヤーから最大カメラ位置まで)によって距離を見つけることができます。

于 2012-12-01T23:27:22.560 に答える
0

クリッピング プレーン (glClipPlane) を追加して、屋根などを切り取ってみてください。

于 2012-11-30T15:59:47.197 に答える