假设我正在使用以下代码设置投影 View :
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 以移动对象,使其在 View 中居中,但我想知道我是否可以通过以某种方式操纵 projectionMatrix 来实现相同的目的。
最佳答案
任何优秀的 3D 编程基础教程(例如 this one)都会告诉您...
- Model 矩阵将顶点坐标从模型空间(指定网格的坐标空间,通常不知道您要在场景中放置模型的位置)转换为世界空间 (场景的概念空间)。
- View 矩阵从世界空间转换为眼睛空间(即,相对于查看场景的“相机”的坐标系)。
- Projection 矩阵将眼睛空间转换为裁剪空间(一个 -1.0 到 1.0 的立方体代表您的屏幕加上一些深度,然后 GPU 将其转换为像素空间)。
投影矩阵已经在相对于视点的方面起作用了——你已经确定了眼睛的位置和它正在看的点,所以投影矩阵只会改变你的视野角度、纵横比以及近和远剪裁平面。如果您想更改您正在查看的点,请为您的 View 矩阵指定一个不同的 LookAt
转换。
关于ios - 将投影矩阵移动到特定的 X、Y、Z 点? OpenGLES 2.0 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642263/