图形编程指南chapter5

图形编程指南chapter5

ID:13722637

大小:816.00 KB

页数:25页

时间:2018-07-24

图形编程指南chapter5_第1页
图形编程指南chapter5_第2页
图形编程指南chapter5_第3页
图形编程指南chapter5_第4页
图形编程指南chapter5_第5页
资源描述:

《图形编程指南chapter5》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、25第五章视处理目录5.1从世界到屏幕的方法5.1.1视系统参数5.1.2多边形管道5.1.3纹理多边形5.2从屏幕到世界的方法5.2.1直线方程5.2.2平面方程5.2.3直线和平面的交叉点5.2.4直线和多边形的交叉点5.2.5直线和球的交叉点5.2.6寻找合适的交叉点5.2.7优化光线追踪引言有助于构建3D屏幕图象的技术的总和通常指的是“视处理”。以前我们只是假定了某种视图技术,而没有实际地定义。我们假定渲染通过几何图元以及多边形的投影(比如说投影到屏幕上)完成。然而这种方法并不是唯一的。我们通常用“世界到屏幕方法”和“屏幕到世

2、界方法”来区分两种主流视处理方法。图元的投影是世界到屏幕。第二种方法通常叫做光线投射(ray-casting)或光线追踪(ray-tracing)。光线追踪的思想极为不同:对屏幕上的每个像素,我们都计算它在虚拟世界中的表达,直到它同某些表面交叉。在交叉点的表面的颜色就是我们在屏幕上所推测看到的。这两种方法都试图模仿自然方式中的视处理现象。在自然中,光源发射粒子束。只要它们被某些对象反射了,则它们的波长组成(颜色)发生了变化。观察者捕捉到一些粒子,并分析它们的颜色,就能够从最后被反射的光子中重新构建对象的图象。尽管,这个处理过程能够表达

3、为一种算法,但这样一来,计算机资源的利用非常低。所有发射的光线中只有一小部分进入观察者的眼睛,剩下的消散在空间中,对产生图象没有任何贡献,因此,对这些的模拟将浪费处理器的时间。在计算机图形领域中通常使用的虚拟视处理方法的不同之处在于限制了自然观察方式的复杂性。世界到屏幕方法尝试把视图限制为在场景中可见的一系列对象,并将其作为整体来处理图元的可见性,而不是处理对此有贡献的每一条单个的光线。屏幕到世界的方法则限制了光线的数量。通过从屏幕追溯回去,确保了只考虑从某些光源发出并实际到达了观察者眼睛的那些光线。在本章中我们将考虑这两种方式,以及

4、它们相对的优点和缺点。同时,我们也将分析世界到屏幕的方法对交互式图形应用来说更吸引人的原因,虽然在实现上世界到屏幕的方法比屏幕到世界的方法更复杂。255.1从世界到屏幕的方法正如在前面已经注意到的,世界到屏幕方法通过从世界到观察者屏幕空间投影图元来创建虚拟世界的图象(参见图5.1)。当考虑组成这个观察世界的变换和处理时,我们已经分析了在3D世界和观察者摄像机背后的一般思想。图5.1:世界到屏幕投影3D场景以几何图元、多边形等的形式描述。在场景中的独立对象可能由一定数量的图元组成。既然对象具有在虚拟世界移动的能力这一点可行,就可以方便地

5、使用某些本地坐标系而不是世界坐标系来描述它们的图元。通常说来,本地坐标系在“对象空间”中给出。对象假定了在世界空间中某种方位和位置。如果我们知道位置和方位,就可以通过应用某些仿射坐标变换来获得对象在世界空间中的坐标。我们已经在第二章讨论了平移和旋转变换。进一步,一旦有了在世界空间的坐标,我们必须执行投影变换,把这些坐标投影到观察者的屏幕空间中,从而能够开始光栅处理和显示图象。正如我们已经在第二章中看到的,投影变换可以被看作两步走的处理过程。在第一个阶段,以这种方式变换世界空间,这样观察者将假定从坐标原点向Z轴方向看。从这种被变换的世界

6、空间(它被称为“视空间”),很容易应用实际的投影变换并得到在屏幕上的坐标。(参见图5.2)25图5.2:对象的变换因此,为了显示一些对象的图元,根据对象在世界中的位置和方位,必须执行仿射变换。进一步,取决于观察者的位置和方位,必须应用另一种仿射变换产生在视空间中的坐标。最后,应用投影变换(平行投影或透视投影),就可以得到屏幕空间坐标了。在第一步的情况中,假定对象在世界中的位置以点O(对象空间中的原点映射)描述,对象的方位以三个旋转角——倾斜((roll)、俯仰(pitch)和偏转(yaw),给定,为了获得世界坐标必须首先以给定的角度应

7、用旋转变换,然后,进一步用在空间中定位对象的点O的坐标应用平移变换:四个变换矩阵的串联产生了定位(seek)仿射变换。进一步,取决于观察者以及如何把坐标放入视空间,必须执行另一个仿射变换。应该注意到,使用三个角度(也称为欧拉角)的方位表达式有些问题。既然这些角以移动轴给定,在一些旋转中,我们可能观察到丢失了自由度的效果,这被称为“gimballock(万向节锁定)”。当这种情况发生的时候,角度中的两个突然开始描述同样的旋转。这个问题对用户能交互指定某些对象方位的应用程序来说通常有些复杂。欧拉角对两个指定方位的交叉来说也不是非常好。举例

8、来说,一个动画应用程序的某些对象可能有指定了方位的两个位置,可能需要在给定的两个方位中找出介于中间的那个。如果对欧拉角进行插值,来得到这个中间方位,其结果使运动在视觉效果上不让人满意。当上述问题出现时,四元结构(mech

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。