我有一个透视 FOV,但是在旋转时,它“看起来”不正确 - 更远的对象比更近的对象移动得更快,它们在屏幕中间通过。
所以:这是正确的吗?使用右手坐标,如果这很重要?
public static Matrix4x4 PerspectiveFOV(float fov, float aspect, float near, float far)
{
float yScale = 1.0F / (float)Math.Tan(fov / 2);
float xScale = yScale / aspect;
float farmnear = far - near;
return new Matrix4x4(
xScale, 0, 0, 0,
0, yScale, 0, 0,
0, 0, far / (farmnear), 1,
0, 0, -near * (far / (farmnear)), 1
);
}
谢谢。