Matrix4x4 calculateProjectionMatrix(float offsetX, float offsetY)
{
float near = LeftEyeCam.nearClipPlane;
float far = LeftEyeCam.farClipPlane;
float left = -ScreenSize.x / 2 * near / m_length;
float right = -left;
float top = ScreenSize.y / 2 * near / m_length;
float bottom = -top;
float offsetnearX = near * offsetX / m_length;
float offsetnearY = near * offsetY / m_length;
return PerspectiveOffCenter(left - offsetnearX, right - offsetnearX, bottom- offsetnearY, top- offsetnearY, near, far);
}
// 构造投影矩阵(OpenGL版)
public static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far)
{
float x = 2.0F * near / (right - left);
float y = 2.0F * near / (top - bottom);
float a = (right + left) / (right - left);
float b = (top + bottom) / (top - bottom);
float c = -(far + near) / (far - near);
float d = -(2.0F * far * near) / (far - near);
float e = -1.0F;
Matrix4x4 m = new Matrix4x4();
m[0, 0] = x;
m[0, 1] = 0;
m[0, 2] = a;
m[0, 3] = 0;
m[1, 0] = 0;
m[1, 1] = y;
m[1, 2] = b;
m[1, 3] = 0;
m[2, 0] = 0;
m[2, 1] = 0;
m[2, 2] = c;
m[2, 3] = d;
m[3, 0] = 0;
m[3, 1] = 0;
m[3, 2] = e;
m[3, 3] = 0;
return m;
}
Unity 离轴相机 投影矩阵算法 XY双方向的
最新推荐文章于 2025-02-24 02:17:04 发布