5.6.3.5 标准化深度值

网友投稿 253 2022-08-28

5.6.3.5 标准化深度值

看起来好像在投影后,我们就可以丢弃原来的3D z坐标,因为所有的投影点,现在都在2D投影窗口,其形成由眼睛看到的2D图像。但是,我们仍然需要围绕深度缓冲算法的3D深度信息。就像Direct3D希望在标准化的范围内投影的x和y坐标,Direct3D希望的深度坐标标准化的范围为[0,1]。因此,我们必须构建一个保序函数g(z)用于映射区间[n,f]到[0,1]。因为该功能是保存顺序的,如果z1,z2∈[n,f]和z1

映射[n,f]到[0,1]可以使用缩放和平移完成。但是,这种方法不会整合到我们当前的投影策略。我们从公式5.3看到,z坐标经受的转化:

现在,我们需要选择A和B满足条件:

条件1:G(N)= A + B/ N= 0(近平面被映射到零)

条件2:G(F)= A + B/ F =1(远平面被映射到一个)

解决条件1:B = –An。代入条件2和求解出A:

g(z)函数(图5.25),说明它是严格递增的(顺序保留)和非线性的。它也表明,g(z)大部分的范围对应的深度值都是近平面的深度值。因此,大多数的深度值映射为g(z)范围的小子集。这可能会导致深度缓冲的精度问题(计算机不再区分由于有限的数字表示的细微不同转化深度值)。一般的建议是,让远近平面尽可能接近,以减少深度精确度的问题。

现在,我们已经解决了A和B,我们可以陈述完整的透视投影矩阵:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一场比赛两队输球,法国足协开出重磅罚单!(足球比赛罚球)
下一篇:5.3.1 颜色操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~