【发布时间】:2012-12-18 15:50:16
【问题描述】:
恐怕我在尝试在 OpenGL 中实现第一人称相机时遇到Gimbal lock。
rotateFPS_OY(float angle){
forward = forward * cos(angle) + right * sin(angle);
right = forward.CrossProduct(up);
}
rotateFPS_OX(float angle){
up = up * cos(angle) + forward * sin(angle);
forward = up.CrossProduct(right);
}
稍后,我调用 gluLookAt:
Vector3D center = position + forward;
gluLookAt(position.x, position.y, position.z,
center.x, center.y, center.z,
up.x, up.y, up.z);
在测试这一点时,似乎在几次移动后,相机滚动(改变了正确的矢量)。计算似乎是正确的,我就是不知道哪里出了问题。
【问题讨论】:
标签: opengl