[英]Using frustums properly
我正在读一本书,说: For perspective projection, avoid setting your near or far plane to zero or a negative number. Mathematically this just doesn't work out.
For perspective projection, avoid setting your near or far plane to zero or a negative number. Mathematically this just doesn't work out.
它指的是这样的矩阵的near
和far
参数:
static Matrix4<T> Frustum(T left, T right, T bottom, T top, T near, T far)
{
T a = 2 * near / (right - left);
T b = 2 * near / (top - bottom);
T c = (right + left) / (right - left);
T d = (top + bottom) / (top - bottom);
T e = - (far + near) / (far - near);
T f = -2 * far * near / (far - near);
Matrix4 m;
m.x.x = a; m.x.y = 0; m.x.z = 0; m.x.w = 0;
m.y.x = 0; m.y.y = b; m.y.z = 0; m.y.w = 0;
m.z.x = c; m.z.y = d; m.z.z = e; m.z.w = -1;
m.w.x = 0; m.w.y = 0; m.w.z = f; m.w.w = 1;
return m;
}
好吧,我明白了。 但是我没有得到的是作者随后将-7的az转换为所有演示模型,这在屏幕上很好显示。 但是,如果将“视锥”的“近”和“远”分别设置为5和10,为什么在屏幕上显示-7? 是否不仅会出现转换为5到10之间的z的对象?
因为摄像机的znear和zfar值是距摄像机的距离 ,而不是绝对数。 他们总是很积极的。 这就是数学的原理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.