图形编程指南Chapter5.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图形编程指南Chapter5.doc

第五章 视处理 目录 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屏幕图象的技术的总和通常指的是“视处理”。以前我们只是假定了某种视图技术,而没有实际地定义。我们假定渲染通过几何图元以及多边形的投影(比如说投影到屏幕上)完成。然而这种方法并不是唯一的。我们通常用“世界到屏幕方法”和“屏幕到世界方法”来区分两种主流视处理方法。图元的投影是世界到屏幕。第二种方法通常叫做光线投射(ray-casting)或光线追踪(ray-tracing)。光线追踪的思想极为不同:对屏幕上的每个像素,我们都计算它在虚拟世界中的表达,直到它同某些表面交叉。在交叉点的表面的颜色就是我们在屏幕上所推测看到的。 这两种方法都试图模仿自然方式中的视处理现象。在自然中,光源发射粒子束。只要它们被某些对象反射了,则它们的波长组成(颜色)发生了变化。观察者捕捉到一些粒子,并分析它们的颜色,就能够从最后被反射的光子中重新构建对象的图象。尽管,这个处理过程能够表达为一种算法,但这样一来,计算机资源的利用非常低。所有发射的光线中只有一小部分进入观察者的眼睛,剩下的消散在空间中,对产生图象没有任何贡献,因此,对这些的模拟将浪费处理器的时间。 在计算机图形领域中通常使用的虚拟视处理方法的不同之处在于限制了自然观察方式的复杂性。世界到屏幕方法尝试把视图限制为在场景中可见的一系列对象,并将其作为整体来处理图元的可见性,而不是处理对此有贡献的每一条单个的光线。屏幕到世界的方法则限制了光线的数量。通过从屏幕追溯回去,确保了只考虑从某些光源发出并实际到达了观察者眼睛的那些光线。在本章中我们将考虑这两种方式,以及它们相对的优点和缺点。同时,我们也将分析世界到屏幕的方法对交互式图形应用来说更吸引人的原因,虽然在实现上世界到屏幕的方法比屏幕到世界的方法更复杂。 5.1 从世界到屏幕的方法 正如在前面已经注意到的,世界到屏幕方法通过从世界到观察者屏幕空间投影图元来创建虚拟世界的图象(参见图5.1)。当考虑组成这个观察世界的变换和处理时,我们已经分析了在3D世界和观察者摄像机背后的一般思想。 图 5.1: 世界到屏幕投影 3D场景以几何图元、多边形等的形式描述。在场景中的独立对象可能由一定数量的图元组成。既然对象具有在虚拟世界移动的能力这一点可行,就可以方便地使用某些本地坐标系而不是世界坐标系来描述它们的图元。通常说来,本地坐标系在“对象空间”中给出。 对象假定了在世界空间中某种方位和位置。如果我们知道位置和方位,就可以通过应用某些仿射坐标变换来获得对象在世界空间中的坐标。我们已经在第二章讨论了平移和旋转变换。进一步,一旦有了在世界空间的坐标,我们必须执行投影变换,把这些坐标投影到观察者的屏幕空间中,从而能够开始光栅处理和显示图象。正如我们已经在第二章中看到的,投影变换可以被看作两步走的处理过程。在第一个阶段,以这种方式变换世界空间,这样观察者将假定从坐标原点向Z轴方向看。从这种被变换的世界空间(它被称为“视空间”),很容易应用实际的投影变换并得到在屏幕上的坐标。(参见图5.2) 图 5.2: 对象的变换 因此,为了显示一些对象的图元,根据对象在世界中的位置和方位,必须执行仿射变换。进一步,取决于观察者的位置和方位,必须应用另一种仿射变换产生在视空间中的坐标。最后,应用投影变换(平行投影或透视投影),就可以得到屏幕空间坐标了。 在第一步的情况中,假定对象在世界中的位置以点O(对象空间中的原点映射)描述,对象的方位以三个旋转角——倾斜((roll)、俯仰(pitch)和偏转(yaw),给定,为了获得世界坐标必须首先以给定的角度应用旋转变换,然后,进一步用在空间中定位对象的点O的坐标应用平移变换: 四个变换矩阵的串联产生了定位(seek)仿射变换。进一步,取决于观察者以及如何把坐标放入视空间,必须执行另一个仿射变换。 应该注意到,使用三个角度(也称为欧拉角)的方位表达式有些问题。既然这些角以移动轴给定,在一些旋转中,我们可能观察到丢失了自由度的效果,这被称为“gimbal lock(万向节锁定)”。当这种情况发生的时候,角度中的两个突然开始描述同样的旋转。这个问题对用户能交互指定某些对象方位的应用程序来说通常有些复杂。欧拉角对两个指定方位的交叉来说也不是非常好。举例来说,一个动画应用程序的某些对象可能有指定了方位的两个位置,可能需要在给定的两个方位中找出介于中

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档