繁体   English   中英

正确使用视锥

[英]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.

它指的是这样的矩阵的nearfar参数:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM