开发者

Get camera inside my skybox

So I am working on a homework assignment and I have managed to create my skybox and it looks correct, the only problem is that my camera is outside the skybox.

I tried the command gluLookAt thinking maybe that would focus me into the box, but it didn't work. Here's the code that I have now. If anyone could let me know what I'm doing wrong it would be greatly appreciated:

 gluLookAt(
       0,0,0,
       0,0,0
       0,1,0);
 glPushMatrix();
 //load identity matrix
 glLoadIdentity();

 //update x, y and z rotation directions
 glRotatef(currentRotation[1], 1.0, 0.0, 0.0); //x rotation
 glRotatef(currentRotation[2], 0.0, 1.0, 0.0); //y rotation
 glRotatef(currentRotation[3], 0.0, 0.0, 1.0); //z rotation
 /*
 //update scale of display
 glScalef(currentScaling[1],
    currentScaling[2],
    currentScaling[3]);*/

 //translate the image
 glTranslatef(currentTranslation[1],
     currentTranslation[2],
     currentTranslation[3]);

  /* Clear buffers */
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glEnable(GL_TEXTURE_2D); // Enable texturing from now on


  //front quadrant
  glBindTexture(GL_TEXTURE_2D,frontTextureId); // select which texture to use 
  glBegin(GL_QUADS);  
  glColor3f(1.0, 1.0, 1.0); 
  glTexCoord2f(1.0 ,0.0); glVertex3f(-0.5, 0.5, 0.5);
  glTexCoord2f(0.0 ,0.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0 ,1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0 ,1.0); glVertex3f(-0.5, 0.5, -0.5);
  glEnd();

//left quadrant
  glBindTexture(GL_TEXTURE_2D, leftTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(-0.5, -0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, 0.5, 0.5);
  glEnd();

  //back quadrant
  glBindTexture(GL_TEXTURE_2D, backTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, -0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, -0.5, -开发者_开发百科0.5);
  glEnd();

  //right quadrant
  glBindTexture(GL_TEXTURE_2D, rightTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0, 0.0); glVertex3f(0.5, -0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(0.5, -0.5, -0.5);
  glEnd();

  //up quadrant
  glBindTexture(GL_TEXTURE_2D, upTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, 0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(-0.5, 0.5, 0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, 0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(0.5, -0.5, 0.5);
  glEnd();

  //down quadrant
  glBindTexture(GL_TEXTURE_2D, downTextureId);
  glBegin(GL_QUADS);
  glColor3f(1.0, 1.0, 1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, -0.5, -0.5);
  glTexCoord2f(0.0, 1.0); glVertex3f(-0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 1.0); glVertex3f(0.5, 0.5, -0.5);
  glTexCoord2f(1.0, 0.0); glVertex3f(0.5, -0.5, -0.5);
  glEnd();

Thank you for any help you can provide!


I think your problem is in the glulookat

try with this values

 gluLookAt(0.0, 0.0 , 2.0 , 
            0.0, 0.0, 0.0, 
            0.0, 1.0, 0.0);


Few problems at a glance: gluLookAt arguments: first three are camera position, next three are camera target - should not be the same, camera must have valid direction vector. Next, your skybox is only 1.0 unit size - make it bigger. Use a constant instead of 0.5 everywhere, that way you can control it in one place.


Well you do have a glTranslate() call in there, so unless you're passing it zeros, that's probably why you're not in the box.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜