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

标签 ios objective-c opengl-es opengl-es-2.0 projection-matrix

假设我正在使用以下代码设置投影 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/

相关文章:

opengl-es - OpenGL ES 2.0坐标系的含义

ios - NSDecimal 等于 NSDecimalNumber 值?

ios - UIPageControl 和 scrollViewDidScroll 有问题

iphone - Objective-C Xcode : Tableview detailitem empty

android - 如何理解 setDisplay/setSurface/setPrewviewDisplay/setPreviewTexture for Android 的底层

swift - 通过 Swift 设置 ARKit 方向

ios - Xcode 11.0 构建获取错误 - 方法中未知参数类型 '__attribute__' -[RCTAppState getCurrentAppState :error:]

ios - 自定义 UIView 来检测用户触摸

objective-c - 在 Cocoa 中创建小部件的自定义组合

objective-c - 找不到接受提供的参数的 'println' 的重载