Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 4 of 4

Thread: object staying in front of camera, please help

  1. #1
    Junior Member Newbie
    Join Date
    Mar 2002
    Posts
    4

    object staying in front of camera, please help

    Hello there everybody! Has anybody here managed to get a solid object constantly floating in front of the camera view? For example, a gun like in Fps's?

    Based on some tutorials I followed, I have managed to create a small 3D world, where I can run around using keys and the mouse for direction. I have made a thin, long gun barrel out of a quadratic cylindar, and given it a nice texture. I am just struggling to get it behave now! It can rotate when I rotate, it moves on the X, Y and Z plane when I do, but I just cant get it to sit there pointing and moving in the right direction simultaneoulsy! This is a snippet of code which I am having the problem with:


    glTranslatef(xtrans, ytrans, ztrans); // Translate The Scene Based On my Position

    glPushMatrix();

    glTranslatef(-xtrans, -(ytrans + 0.12f), -ztrans); //Here I am moving the gun to the same location as me. (adding 0.12f to the Y axis to let the gun float at a certain height.)

    glRotatef(-sceneroty,0,1.0f,0); //To rotate gun based on 'sceneroty' which is calculated from mouse coords

    glBindTexture(GL_TEXTURE_2D, texture[4]); //add the gun texture

    gluCylinder(quadratic,0.02f,0.02f,1.0f,40,40); //The Cylinder for my gun.

    glPopMatrix();


    Now when I run this, the barrel does follow me around, and it also rotates correctly along with my rotation. The problem is that when I start, it is pointed behind me!! So if I try translate it in front of my (by adding some amount to the Z axis) the barrel no longer rotates around me. AAAARGH!

    Are there any algorithms out there I havent found yet which cover this sort of thing? Surely loads of people must have made a FPS shooter here who can help me.
    Any ideas would be greatly appreciated, Thanks!

  2. #2
    Member Regular Contributor
    Join Date
    May 2000
    Location
    Oxford, England
    Posts
    471

    Re: object staying in front of camera, please help

    Draw the gun first infront of the camera then transform the camera to the player position and draw the level. (or the other way round and use a glLoadIdentity call)

  3. #3
    Junior Member Newbie
    Join Date
    Mar 2002
    Posts
    4

    Re: object staying in front of camera, please help

    Hi, thanks for reply but I have just tried that, and all sorts goes wrong. It is so annoying, because I am so close, and yet so far. My gun is moving perfectly, except it is pointing behind me i.e. I can only see it if I move the mouse so that I am looking behind me, upside down. There it is, following me, and even rotating to point where I am am looking. But it's behind me.

    If any one is willing to help, I will gladly send them all my code. It is only very small at the moment (one cpp file). I have been trying to solve this for days now, Please help!

  4. #4
    Member Regular Contributor
    Join Date
    Jan 2002
    Location
    Kingston, Jamaica, W.I.
    Posts
    282

    Re: object staying in front of camera, please help

    Each frame...
    1) Save your matrix (glPushMatrix)
    2) Draw your gun. You might have to translate it -z to be able to see it in front of the camera.
    3) Restore your matrix (glPopMatrix).
    4) Perform your camera transforms (gluLookAt)
    5) Draw the rest of the world.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •