how to make camera follow a 3d object in opengl?

13,170

Something like that maybe ?

vec3 cameraPosition = carPosition + vec3(20*cos(carAngle), 10,20*sin(carAngle));
vec3 cameraTarget = carPosition;
vec3 cameraUp = vec3(0,1,0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity()
gluLookAt(cameraPosition, cameraTarget, cameraUp);
glTranslate(carPosition);
drawCar();

It you're not using the old and deprecated openGL API (glBegin & stuff) you'll have to do something like

mat4 ViewMatrix = LookAt(cameraPosition, cameraTarget, cameraUp); // adapt depending on what math library you use
Share:
13,170
Admin
Author by

Admin

Updated on June 25, 2022

Comments

  • Admin
    Admin almost 2 years

    i'm making a car race for the first time using opengl,the first problem i face is how to make the camera follow the car with constant distance..here is the code for keyboard function.V is the velocity of the car.

    void OnSpecial(int key, int x, int y) 
    {
        float step = 5;
    
        switch(key) {
    
        case GLUT_KEY_LEFTa:
            carAngle = step;
            V.z = carAngle ;
            camera.Strafe(-step/2);
            break;
    
        case GLUT_KEY_RIGHT:
            carAngle = -step;
            V.z = carAngle ;
            camera.Strafe(step/2);
            break;
    
        case GLUT_KEY_UP:
            V.x += (-step);
            camera.Walk(step/2);
    
            break;
        case GLUT_KEY_DOWN:
            if(V.x<0)
            {
                V.x += step;
                camera.Walk(-step/2);
            }
            break;
        }
    }