我在使用 gluLookAt 的 eyeZ 值时遇到了一些问题。
我想象它的工作方式就像将相机移得更远,从而缩小视野中的物体。
我有一个简单的设置,在 3d 空间中绘制一个简单的形状,通过glDrawElements
100x100x100 正交,其中 0、0、0 是宇宙的中心。对象位于 0, 0, 0。
我正在努力做到这一点,因此当您滚动鼠标滚轮时,您会离对象更远/更近。以下是 glulookat 的名称。
float eyeX = 0;
float eyeY = 0;
float eyeZ = differenceInMouseWheel();
float centerX = 0;
float centerY = 0;
float centerZ = 0;
float upX = 0;
float upY = 1;
float upZ = 0;
gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
这里唯一改变的是eyeZ。
效果很奇怪,我滚动了大约 10 秒,然后突然一半的对象消失了。从那里越来越多的它消失了。这可能是因为相机超出了 50 z 的距离限制,但我不明白为什么物体不像在 3D 空间中那样缩放。
也许我误解了中心值是如何工作的?
我也尝试过申请differenceInMouseWheel()
,centerZ
但没有任何改变,我假设中心值只是这样 glu 可以得到一个方向,仅此而已。
也许向上向量应该改变?我现在不知道。