Opengl 看看为什么上方向向量而不是角度
我知道在OpenGL中,我们使用gluLookAt将相机相对于世界放置,从而定义将要绘制的图像 “眼睛”指定相机的位置,“中心”指定相机指向的点。一旦我们知道了这两个,我们就可以从眼睛到中心画一条直线。摄像机平面将垂直于这条线 因为我们知道这个平面,上方向向量指定了相机的顶部-基本上这个平面的哪个方向是向上的。因此,上方向向量始终与连接中心和眼睛的向量正交Opengl 看看为什么上方向向量而不是角度,opengl,graphics,camera,glulookat,Opengl,Graphics,Camera,Glulookat,我知道在OpenGL中,我们使用gluLookAt将相机相对于世界放置,从而定义将要绘制的图像 “眼睛”指定相机的位置,“中心”指定相机指向的点。一旦我们知道了这两个,我们就可以从眼睛到中心画一条直线。摄像机平面将垂直于这条线 因为我们知道这个平面,上方向向量指定了相机的顶部-基本上这个平面的哪个方向是向上的。因此,上方向向量始终与连接中心和眼睛的向量正交 我的问题是,当我们只想知道关于连接“中心”和“眼睛”的线的旋转角度时,为什么我们需要全向量。这背后的原因是我不知道的计算优势吗?如果有人指定
我的问题是,当我们只想知道关于连接“中心”和“眼睛”的线的旋转角度时,为什么我们需要全向量。这背后的原因是我不知道的计算优势吗?如果有人指定了一个错误的上方向向量,它与视线方向不正交,该怎么办?您传入的上方向向量用于指示上方向,但它与叉积一起使用。我认为gluLookAt的目的是简化用户所需的计算,因此,例如,您只需通过(0,1,0)即可指示所需的向上方向是沿着正Y轴
如果你想要更高的效率,你可以完全避免GluLook,我同意它是用来简化计算的,但是它可以只是1个角度,而不需要整个向量。这个问题显示了叉积(),它将法线与上向量交叉,然后再次与法线交叉。这似乎是多余的。我不明白为什么?原始的上方向向量并不意味着与视图方向正交-它只是确定了向上的一般方向,例如y轴。如果将正交上方向向量与视图交叉,或将近似上方向向量与视图交叉,则将得到相同的边向量。由于gluLookAt不期望正交上方向向量,因此它将边向量与视图交叉以获得正交上方向向量。如果你使用一个角度,你会旋转哪个轴?视线方向?这需要您根据视图方向调整角度。我建议您根据什么来阅读此角度?如果没有
眼睛
向量,在调用gluLookAt(…)
(Z轴)时,实际上只有3D向量空间的一个轴,即使这个轴也不会直接传递给函数,而是从原点和中心位置计算出来的。我再说一遍,这个角度到底是相对于什么的?如果它是相对于Z轴的,那么有无限多可能的向上
向量可以满足你的角度,这根本没有用。