Get Projection and View Matrix from Camera Matrix
我有3 * 4摄像机矩阵,它是
在OpenGL中,所有矩阵都是4x4齐次变换,如下所述:
1 2 3 4 | [Xx][Yx][Zx][Tx] [Xy][Yy][Zy][Ty] [Xz][Yz][Zz][Tz] [Xw][Yw][Zw][Tw] |
您的相机矩阵和视图矩阵是同一件事,并且是由"向上"向量,"位置"向量和"方向"向量构成的。
从这些向量,您可以计算视图矩阵:
1 2 3 4 | vec3 Z = Eye - Location; //this is your"forward" vector Z.Normalize(); vec3 Y = Up; vec3 X = Y.Cross( Z ); //crossing Y with Z gives you a perpendicular vector, which is needed to construct a coordinate basis matrix |
然后,您可以像这样构造矩阵:
1 2 3 4 | [Xx][Yx][Zx][-X.Dot( Eye )] [Xy][Yy][Zy][-Y.Dot( Eye )] [Xz][Yz][Zz][-Z.Dot( Eye )] [Xw][Yw][Zw][1.0] |
然后,您有了视图矩阵
您的投影矩阵与此数据无关,它代表了视图/世界到屏幕空间的转换,并且取决于您的屏幕尺寸,视角范围以及远近裁剪范围。
我不知道该如何计算这些数据的投影矩阵,因此我只建议您,如果您使用C ++进行GL工作,则应下载并使用GLM数学库,该库具有 这些常用功能已经编写。