从上方显示摄像头



>我正在创建一堆房间,需要从第一人称(我已经介绍过)和上方显示它们以显示房间内的内容。问题是我不知道如何切断上面的视图的屋顶,所以它只会显示里面的东西,而不是屋顶/天花板。

这是我到目前为止所拥有的:

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: " );
}

您可以尝试添加剪切平面(glClipPlane)来切断屋顶等。

某些引擎使第三人称摄像机与玩家之间的距离可变(如果途中有一些障碍物,摄像机会靠近玩家)。 您可以通过反向光线选择(从玩家到最大摄像机位置)找到距离。

最新更新