首页 > 解决方案 > OpenGL glulookat 函数

问题描述

我希望能够通过单击我的键盘按钮来查看以 0,0,0 为中心、半径为 10 个单位、360 度和向上的行星球体。我在 glulookat() 函数中放入了哪些参数?我知道中心 XYZ 应该是 000 但眼睛和向上向量应该是什么?

void gluLookAt( GLdouble eyeX,
    GLdouble eyeY,
    GLdouble eyeZ,
    GLdouble centerX,
    GLdouble centerY,
    GLdouble centerZ,
    GLdouble upX,
    GLdouble upY,
    GLdouble upZ);

标签: openglopengl-compatglu

解决方案


不要lookAt用于这个!计算眼睛向量所涉及的三角函数量相当于从头开始构建视图矩阵。

相反,保持你的相机俯仰和偏航,并通过一系列的平移和旋转来应用它们:

glTranslatef(0, 0, -radius);
glRotatef(-pitch, 1, 0, 0);
glRotatef(-yaw, 0, 0, 1); // assumes Z is up

推荐阅读