5.6.3.1 Defining a Frustum

来源:互联网 发布:Ubuntu编辑一个c文件 编辑:程序博客网 时间:2024/06/10 20:20

我们可以在在视觉空间定义视锥体,其投影的中心在原点和俯视正z轴,由以下4个量:近平面n,远平面f,视角a,和纵横比r。注意,在视觉空间中,近平面和远平面平行于xy平面;因此,我们简单地沿着z轴从原点指定它们的距离。纵横比定义为:r= w / h,其中w是投射窗口的宽度,h为投射窗口的高度。该投射窗口实质上是视觉空间中2D图像中的场景。图像将最终被映射到后台缓冲区;因此,我们倾向于投射窗口尺寸的比值与后台缓冲器尺寸的比值相同。这么后台缓冲区尺寸的比值通常被指定为纵横比。例如,如果后台缓冲尺寸为800×600,然后我们指定r = 800 / 600 = 1.333,如果投射窗口和后台缓冲的纵横比不一致,则投影窗口映射到后台缓冲区将出现非均匀缩放,其会引起的失真(例如,投射窗上的圆可能会被拉伸成椭圆映射到后台缓冲区)。

视角β的水平场是由视角α的垂直场和纵横比r确定。 为了查看r如何帮助我们找到β,考虑图5.23。注意,投影窗口的实际尺寸并不重要,只是纵横比需要维护。因此,我们将选择2的方便的高度,因此,宽度必须是:

alphaBeta

rwh

为了具有指定的垂直场,该投射窗必须放置在从原点距离d的位置:

ad

现在,我们可以解决β。纵观图5.23的xz平面,我们现在看到的是:

brd

所以,给定的视角a的垂直场和纵横比,我们总能得到视角β的水平场

arb

本文固定链接:http://www.oxox.work/web/directx11/defining-a-frustum/ | 虚幻大学

0 0