Как установить камеру внутри куба?

У меня есть куб, который имеет разные цвета для каждого бокового замка -

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();
    }

В этом состоянии - цифра, которую я получаю -

введите здесь описание изображения

Имеется в виду камера, расположенная перед кубом.

Поскольку я пытаюсь установить камеру внутри куба, я изменяю значение оси Z в glu.gluLookAt на - glu.gluLookAt(0,0, 50, 0, 0, 0, 0, 1, 0); и знаю, что получаю -

введите здесь описание изображения

И если я изменю на - glu.gluLookAt(0,0, 0, 0, 0, 0, 0, 1, 0);, я стану черным на весь экран.

Итак, что мне нужно изменить, чтобы установить камеру внутри куба - значит, исключенная фигура будет разного цвета справа, слева вверху и внизу.


person URL87    schedule 21.05.2013    source источник
comment
-1, избыточный вертикальный пробел.   -  person genpfault    schedule 21.05.2013


Ответы (1)


glu.gluLookAt(0, 0, 0, 0, 0, 0, 0, 1, 0) кажется недействительным. Попробуйте установить его на glu.gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0)

РЕДАКТИРОВАТЬ:

  1. Удалить glTranslatef

  2. 
    glu.gluPerspective(100, widthHeightRatio, 0.5, 1000);
    glu.gluLookAt(0, 0, 0.0, 0.0, 0, -1.0, 0, 1, 0);
    
person Sergey Zyuzin    schedule 21.05.2013
comment
Он дает желтый цвет на весь экран, как на 2-м фото, которое я прикрепил. - person URL87; 21.05.2013
comment
да, все желтое, потому что теперь вы находитесь внутри куба, и все, что вы можете видеть, это грань, расположенная в точке z=-1. - person gemse; 21.05.2013