2013-03-11 33 views
0

我读了一本书,上面写着: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,这在屏幕上显示的很好。但是,如果近处和远处的平截头体分别设置为5和10,为什么屏幕上显示-7?不仅应该将翻译为5到10之间的z的对象出现吗?

+0

我认为透视指向负z方向,所以-5和-10之间的东西出现。 – Xymostech 2013-03-11 04:56:02

回答

0

因为摄像机的znear和zfar值是距离摄像机的距离,而不是绝对数字。他们总是积极的。这就是数学的工作原理。