关于opengl:相机/眼睛坐标和世界坐标之间的差异

Difference between Camera/Eye coordinates and world coordinates

为了简单起见,我们以OpenGL渲染系统为例。据我所知,

OpenGL中的相机与世界空间的原点对齐,即(0,0,0)。我还读到,我们不移动相机,所以它将保持在世界坐标中(0,0,0)的原始位置。相机朝向负Z方向。

因此,问题是,如果你不移动相机,它将永远停留在世界空间的原点(0,0,0)。如果是这样的话,那么世界坐标和眼睛坐标之间就没有区别了。因为例如,对象在世界坐标中的位置是(2,2,-5)。在眼睛坐标中,它将是相同的(2-0, 2-0, -5-0) = (2,2,-5)


照相机就是眼睛。如果你不移动你的相机,这意味着你的视图矩阵是一个单位矩阵,所以任何你乘以它的坐标都将保持不变。

以你的例子为例,我们有一个观点是1(0)。这是世界空间点的位置。这意味着无论摄像机在哪里,该点都位于(2.0, 2.0, -5.0)处。

如果相机像你说的那样在原点,那么眼睛(相机)的空间位置与世界空间位置相同。

对于一个简单的例子,假设您想在正z轴上移动相机2个单位。现在,您的相机位于(0, 0, 2)处,当您从相机(或眼睛)观看时,该点距离原点Z轴的距离将为2个单位,因为您将相机向后移动,所以眼睛空间位置为(2.0, 2.0, -7.0)

这就是你相机上更复杂的变换所发生的情况。你将得到一个视图矩阵,它将与你的相机的变换成反比,这个矩阵将应用于世界空间中的每一个点,把它转换成眼睛(或相机)空间。