Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在立方体中设置摄影机?_Java_Opengl_Jogl_Glulookat - Fatal编程技术网

Java 如何在立方体中设置摄影机?

Java 如何在立方体中设置摄影机?,java,opengl,jogl,glulookat,Java,Opengl,Jogl,Glulookat,我有一个立方体,每个边锁有不同的颜色- public void display(GLAutoDrawable drawable) { final GL gl = drawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); ///// SET CAMERA ///// setCamera(gl, glu, 100);

我有一个立方体,每个边锁有不同的颜色-

public void display(GLAutoDrawable drawable) {

        final GL gl = drawable.getGL();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);




        ///// SET CAMERA  /////  
        setCamera(gl, glu, 100);




        // /////// Cube - start ///////////

        // cube

        // ----- Render the Color Cube -----
        gl.glLoadIdentity(); // reset the current model-view matrix
        gl.glTranslatef(0f, 0.0f, -7.0f); // translate right and into the
                                                // screen
        gl.glRotatef(angleCube, 1.0f, 1.0f, 1.0f); // rotate about the x, y and
                                                    // z-axes

        gl.glBegin(GL.GL_QUADS); // of the color cube

        // Top-face
        gl.glColor3f(0.0f, 1.0f, 0.0f); // green
        gl.glVertex3f(1.0f, 1.0f, -1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f);

        // Bottom-face
        gl.glColor3f(1.0f, 0.5f, 0.0f); // orange
        gl.glVertex3f(1.0f, -1.0f, 1.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f(1.0f, -1.0f, -1.0f);

        // Front-face
        gl.glColor3f(1.0f, 0.0f, 0.0f); // red
        gl.glVertex3f(1.0f, 1.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f);

        // Back-face
        gl.glColor3f(1.0f, 1.0f, 0.0f); // yellow
        gl.glVertex3f(1.0f, -1.0f, -1.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glVertex3f(1.0f, 1.0f, -1.0f);

        // Left-face
        gl.glColor3f(0.0f, 0.0f, 1.0f); // blue
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);

        // Right-face
        gl.glColor3f(1.0f, 0.0f, 1.0f); // violet
        gl.glVertex3f(1.0f, 1.0f, -1.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f);
        gl.glVertex3f(1.0f, -1.0f, -1.0f);

        gl.glEnd(); // of the color cube

        // /////// Cube - end //////////



    }

private void setCamera(GL gl, GLU glu, float distance) {
        // Change to projection matrix.
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();

        // Perspective.
        float widthHeightRatio = (float) getWidth() / (float) getHeight();
        glu.gluPerspective(1, widthHeightRatio, 1, 1000);
        glu.gluLookAt(0,0, 150, 0, 0, 0, 0, 1, 0);

        // Change back to model view matrix.
        gl.glMatrixMode(GL.GL_MODELVIEW);
        gl.glLoadIdentity();
    }
在这种状态下,我得到的数据是

指位于立方体前面的摄像机

由于我试图在立方体内设置相机,我将
glu.gluLookAt
中的z轴值更改为-
glu.gluLookAt(0,0,50,0,0,0,0,0,1,0)

如果我改为-
glu.gluLookAt(0,0,0,0,0,0,0,1,0)我得到全屏幕黑色

所以,为了在立方体中设置相机,我必须改变的是——这意味着被排除的图形在右、左、上、下都是不同的颜色

glu.gluLookAt(0,0,0,0,0,0,0,1,0)
似乎无效。尝试将其设置为
glu.gluLookAt(0,0,0,0,0,-1,0,1,0)

编辑:

  • 删除
    glTranslatef

  • glu.gluLookAt(0,0,0,0,0,0,0,1,0)
    似乎无效。尝试将其设置为
    glu.gluLookAt(0,0,0,0,0,-1,0,1,0)

    编辑:

  • 删除
    glTranslatef


  • 它在所有屏幕上都是黄色的,就像我附加的第二张图片。是的,它都是黄色的,因为你现在在立方体中,你能看到的是位于z=-1的面。它在所有屏幕上都是黄色的,就像我附加的第二张图片。是的,它都是黄色的,因为你现在在立方体中,你能看到的是位于z=-1-1的面,垂直空格过多。-1,垂直空格过多。
    
    glu.gluPerspective(100, widthHeightRatio, 0.5, 1000);
    glu.gluLookAt(0, 0, 0.0, 0.0, 0, -1.0, 0, 1, 0);