如何让相机跟随 opengl 中的 3d 对象?

mem*_*emo 5 c++ opengl camera glut

我第一次使用opengl进行汽车比赛,我面临的第一个问题是如何让相机以恒定距离跟随汽车..这是键盘功能的代码。V是汽车的速度。

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Cal*_*602 5

也许是这样的?

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();
Run Code Online (Sandbox Code Playgroud)

如果您没有使用旧的和已弃用的 openGL API(glBegin 和其他东西),则必须执行类似的操作

mat4 ViewMatrix = LookAt(cameraPosition, cameraTarget, cameraUp); // adapt depending on what math library you use
Run Code Online (Sandbox Code Playgroud)