3

假设我正在使用下面的代码来设置投影视图:

float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f),     aspect, 4.0f, 10.0f);    
self.effect.transform.projectionMatrix = projectionMatrix;

如果我现在想让相机查看场景中的特定点,我将如何最好地实现这一点?目前我正在更改 modelViewMatrix 以移动对象,使其在视图中居中,但我想知道是否可以通过以某种方式操纵 projectionMatrix 来实现相同的效果。

4

1 回答 1

2

任何好的 3D 编程基础教程(可能像这个)都会告诉你......

  • 模型矩阵将顶点坐标从模型空间(指定网格的坐标空间,通常不知道要将模型放置在场景中的位置)转换为世界空间(场景的概念空间)。
  • 视图矩阵从世界空间转换为眼睛空间(即,相对于您的场景的“相机”的坐标系)。
  • 投影矩阵从眼睛空间转换为剪辑空间(一个 -1.0 到 1.0 的立方体代表您的屏幕加上一些深度,然后 GPU 将其转换为像素空间)。

投影矩阵已经相对于视点起作用——您已经确定了眼睛在哪里以及它在看什么点,所以投影矩阵只会改变您的视野角度、纵横比以及近处和远处的剪裁平面. 如果您想更改您正在查看的点,请LookAt为您的视图矩阵指定不同的变换。

于 2013-10-28T23:23:29.577 回答