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)。
- 你为什么要在世界空间修理照相机?它总是在视图坐标系的原点,面向z,但在世界空间中并非如此。
- @根据我在互联网上看到的内容,大多数应用程序将相机的默认位置设置为世界空间的原点。其次,你不能移动相机。如果是这样的话,世界坐标系和相机坐标系有什么区别?
- 例如,本教程在OpenGL(learnopengl.com/中实现了一个可移动摄像头!入门/摄像头)。我不知道你是从哪里得到信息的,但是正如我上面写的,你不应该移动相机是完全没有理由的。
- @现在我很困惑。查看这些链接gamedev.stackexchange.com/questions/40741/…opengl-tutorial.org/初学者-tutorials/tutorial-3-matrics也许你在谈论与此人相关的3D相机?有不同类型的照相机吗?
- 在这两个链接中,您都提供了视图矩阵的概念,它将世界空间转换为相机(或视图)空间。更改此矩阵与移动相机完全相同(尽管视图矩阵与相机的模型矩阵相反)。世界空间是在应用视图矩阵之前的空间。您可以将其视为在视图空间中围绕摄影机变换整个世界,或者将其视为在世界空间中移动摄影机。但本文没有说明摄像机的位置是固定在世界空间的。
型
照相机就是眼睛。如果你不移动你的相机,这意味着你的视图矩阵是一个单位矩阵,所以任何你乘以它的坐标都将保持不变。
以你的例子为例,我们有一个观点是1(0)。这是世界空间点的位置。这意味着无论摄像机在哪里,该点都位于(2.0, 2.0, -5.0)处。
如果相机像你说的那样在原点,那么眼睛(相机)的空间位置与世界空间位置相同。
对于一个简单的例子,假设您想在正z轴上移动相机2个单位。现在,您的相机位于(0, 0, 2)处,当您从相机(或眼睛)观看时,该点距离原点Z轴的距离将为2个单位,因为您将相机向后移动,所以眼睛空间位置为(2.0, 2.0, -7.0)。
这就是你相机上更复杂的变换所发生的情况。你将得到一个视图矩阵,它将与你的相机的变换成反比,这个矩阵将应用于世界空间中的每一个点,把它转换成眼睛(或相机)空间。