将投影矩阵移动到特定的 X,Y,Z 点?OpenGLES 2.0 - iOS.



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

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;

如果我现在想让摄像机看到场景中的特定点,我将如何最好地实现这一点?目前,我正在更改模型视图矩阵以移动对象,使其在视图中居中,但我想知道我是否可以通过以某种方式操作投影矩阵来实现相同的目标。

正如任何好的 3D 编程基础知识教程(比如这个)都会告诉你......

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

投影矩阵已经相对于视点起作用了 - 您已经确定了眼睛的位置以及它正在看的点,因此投影矩阵只会更改您的视场角度、纵横比以及近剪裁平面和远剪裁平面。如果要更改正在查看的点,请为 View 矩阵指定不同的LookAt转换。

最新更新