在我的过剩应用程序中,我正在用相机模拟飞机。当飞机速度较低时,我打算让机头在相机下降时开始指向地面。我的第一个直觉是改变音高,直到它向下指向 -90 度。但是我不能只改变俯仰角,因为如果飞机侧面倾斜或倒置,那么它会注意到改变朝向地面的方向。
现在我试图通过向下移动'lookAt.y'来粗略模拟这个。为此,我试图获取用于设置相机的所有当前相机坐标(eye.x、eye.y、eye.z、look.x、look.y、look.z、up.x、up .y,向上.z)。然后用新的修改值调用集合。
我一直在使用 Camera.cpp 和 Camera.h 来控制我的相机功能。他们可以在这里找到
在添加了获取所有值的方法之后,当进行各种相机运动时,实际上只更新了眼睛的值。我想我的问题是如何检索这些值。
glLoadMaxtrix 调用在这个函数中
void Camera :: setModelViewMatrix(void)
{ // load model view matrix with existing camera values
float m[16];
Vector3 eVec(eye.x, eye.y, eye.z);
m[0] = u.x; m[4] = u.y; m[8] = u.z; m[12] = -eVec.dot(u);
m[1] = v.x; m[5] = v.y; m[9] = v.z; m[13] = -eVec.dot(v);
m[2] = n.x; m[6] = n.y; m[10] = n.z; m[14] = -eVec.dot(n);
m[3] = 0; m[7] = 0; m[11] = 0; m[15] = 1.0;
look.x = u.y; look.y = v.y; look.z = n.y;
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(m);
}
有没有办法从这里的矩阵中获取 'eye'、'lookAt' 和 'up' 值?还是我应该做其他事情来获得这些值?
-在此先感谢您的帮助