我试图改变与鼠标移动摄像机视图,并希望相机围绕原点移动在轨迹球的方式没有现场去下;这种类似圆顶的景观。轨迹球相机变焦
的用于获取眼坐标,使这个半轨迹球视图令人满意以下工作。我对条件进行了硬编码,以便在场景下无法查看。这种情况的后果是,相机不是在场景下进行拍摄,而是将相机放大。我无法围绕如何阻止相机进行这种“缩放”。当我到达圆顶视图的最低部分时,我只想向左或向右移动。距离是恒定的。任何指导?
void onMotion(int x, int y) {
camX = distance * -sinf(x*(M_PI/180)) * cosf((y)*(M_PI/180));
camY = distance * -sinf((y)*(M_PI/180));
camZ = -distance * cosf((x)*(M_PI/180)) * cosf((y)*(M_PI/180));
if (camY < 4)
camY = 4;
glutPostRedisplay();
}
距离是否改变了?或者,如果不是,你的视野是否在变化?这也可能导致缩放效果。 – user1118321
@ user1118321,没有距离是静态的。我如何检查FOV是否正在改变? – rafvasq
视野由投影矩阵控制。如果它正在改变,它可能会产生缩放效果。 – user1118321