如何转换MatrixCamera';s设置为ProjectionCamera
本文关键字:设置 ProjectionCamera MatrixCamera 何转换 转换 | 更新日期: 2023-09-27 18:28:48
如何将MatrixCamera的设置转换为ProjectionCamera
我的代码看起来像:
var vm = new Matrix3D(matrixarray[0], matrixarray[1], matrixarray[2], matrixarray[3], matrixarray[4],
matrixarray[5], matrixarray[6], matrixarray[7], matrixarray[8], matrixarray[9],
matrixarray[10], matrixarray[11], matrixarray[12], matrixarray[13],
matrixarray[14], matrixarray[15]);
var pm = this.CreateFrustumMatrix(frustumArray[0], frustumArray[1], frustumArray[2], frustumArray[3],
frustumArray[4], frustumArray[5]);
var mc = new MatrixCamera(vm, pm);
但是我想使用ProjectionCamera,所以,我想将其转换为ProjectionCamera
ProjectionCamera
是PerspectiveCamera
和OrthographicCamera
共享的抽象类。
如果需要透视(远处的对象看起来更小),则构造PerspectiveCamera
,否则构造OrthographicCamera
。
您需要look vector
、up vector
、eye point
和field of view
来构造这两个相机中的任何一个。您可以直接从视图矩阵(look、up和eye)和投影矩阵(fov)中的行中获取这些向量。
使用您的视图矩阵:
Look: <m13, m23, m33>
Up: <m12, m22, m32>
Eye: <m41, m42, m43>
注意:m13
表示matrix [0][2]
。。。由于矩阵是以线性内存块的形式排列的,所以您可以这样访问它:matrix [x*4+y]
。
使用投影矩阵:
FOV: 2.0 * tan^-1 (1.0 / m11)
注意:tan^-1在C#中被称为Math.Atan (...)