绘制一个3d场景的工作可分成二个阶段 - read.doc

绘制一个3d场景的工作可分成二个阶段 - read.doc

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
顶点转换和打光处理管线绘制一个场景的工作可分成二个阶段第一阶段叫做转换和打光通常缩写成在这个阶段里对象的每个顶点都会从原本的抽象浮点坐标空间被转换成像素为主的屏幕空间转换时也会把绘制场景用的虚拟摄影机的特性纳入考虑除此之外还能在顶点上套用不同型态的光源效果还有如裁切和检视埠缩放等重要工作也都是在第一阶段发生第二个阶段称为扫描成像基本上是将这些转换和打光过的顶点组织成点线和三角形扫描仪会在绘图页称为绘制目标上绘出最终的形状其过程中应用了贴图对映以及在连接的顶点间内插各种的性质如色彩扫描成像的同时也

5. Direct 3D顶点、转换和打光处理管线 绘制一个3D场景的工作可分成二个阶段。第一阶段叫做「转换和打光」(通常缩写成TL)。在这个阶段里,对象的每个顶点都会从原本的抽象浮点坐标空间被转换成像素为主的屏幕空间,转换时也会把绘制场景用的虚拟摄影机的特性纳入考虑。除此之外,还能在顶点上套用不同型态的光源效果。(还有如裁切和检视埠缩放等重要工作也都是在第一阶段发生)。第二个阶段,称为扫描成像(rasterization),基本上是将这些转换和打光过的顶点组织成点、线和三角形。扫描仪会在DirectDraw绘图页(称为绘制目标)上绘出最终的形状,其过程中应用了贴图对映,以及在连接的顶点间内插各种的性质(如色彩)。扫描成像的同时也利用深度缓冲区来决定哪个最终像素是使用者看得见的,哪一个则是被其它基本形状的像素所盖住。图5-1说明了这二阶段如何配合来达到绘制一个3D对象的作业。   图5-1 绘制一个3D对象的两个阶段 Direct3D可以执行TL阶段和扫描成像阶段作业。您可以依照程序需求, 设定Direct3D来分别执行这些步骤或在一次函式呼叫中全部完成,如果您愿意的话,您可以用自己设计的转换和打光,并且将处理过的顶点直接传给Direct3D扫描仪,跳过Direct3D的TL阶段。本章讨论Direct3D顶点和转换以及打光的过程。第六章会讨论如何使用已转换和打光的顶点来扫描基本形状到绘制目标上。 TL处理管线的概要   转换和打光的过程通常可视为一种处理管线(不过用工厂生产线作例子或许更恰当),在此过程中,尚未转换和打光的顶点会从一端进入,中间会执行一些连续的作业,最后,转换过和打光过的顶点会从另一端出来。您的应用程序可以指定某些想要用到的矩阵、检视埠,和任何的光源,来设定TL处理管线。程序会将顶点送入管线中,加以转换、打光、裁切,将其投射到屏幕空间,并且依检视埠设定值加以缩放。离开管线的顶点会被当作「已处理」,而且可以再传给扫描成像器。TL处理管线的示意图如图5-2。   图5-2 TL管线 您可以调整TL处理管线,让它省略一些或全部的步骤。程序设计师套用他们自己设计的转换和打光算法,并且关掉部分的处理动作并将已经在Direct3D中转换和打光过的顶点传送给Direct3D。然而,在某些情况下,最好还是使用Direct3D的完整TL处理管线。因为这个程序已经最佳化,能够运用所有最新的CPU延伸功能。同时,TL可以在某些3D图形卡的特定硬件上快速执行。关于这个议题,让我们假设程序设计师希望Direct3D执行完整的TL过程,下面要来看看当一个顶点通过管线的各种阶段时会发生什么事。 世界转换   在TL过程中,各种绘制出的对象的所有坐标都需要转换成一个常用的坐标系统,称为世界空间(world space)。但是对您的程序来说,用它自己的局部坐标系统(称为模型空间:model space,或本体空间:local space)来表示每个对象的坐标会比较方便。定义在模型空间和世界空间转换方式的矩阵称为世界转换矩阵(world transformation matrix)。在某些状况下,使用模型空间比较容易。例如,要移动一个对象,只需重新定义模型空间和世界空间的转换,会比手动改变世界空间中对象的所有坐标来得容易且快速。模型空间也允许「实例化」(instancing),这意谓着您可以使用某个模型坐标到世界坐标转换,在其中画一个对象,例如球体,然后在其它的地方再画一次,采用另一种模型-世界转换方式。模型空间也允许更多的自然局部转换。比方说,不论球体在世界空间的哪里, 当起点落在球体的中心时,要让球体绕着它的中心转是最容易的。 TL处理管线的第一阶段会用到您指定的世界转换矩阵,将对象顶点中的位置坐标从局部空间转成世界空间。世界转换矩阵可以运用任何的旋转组合方式(对象绕着x轴、y轴或z轴)、平移(物件沿着x轴、y轴或z轴)以及缩放(放大或缩小对象)。图5-3说明了世界坐标系统和一个模型的局部坐标系统间的关系。 世界坐标系统中最重要的特性是它提供了一个坐标空间让所有的3D对象分享,而不是为每个3D对象取得唯一的坐标系统。一旦在世界坐标中指定了顶点,Direct3D就不需要记住任何的局部坐标,或处理任何的模型坐标到世界坐标转换。从局部坐标系统到世界坐标系统间的转换就类似于将各种以磅、公斤和吨计算的物体变成以公克计算,也就是替世界的所有对象提供了一个共同因子(denominator)。如果您不需要用到个别的模型空间,而希望直接在世界坐标中设定某个对象的顶点的话,您可以把世界转换矩阵设成单位矩阵(identity matrix)。这表示该对象的模型空间等于共同的世界空间。   图5-3 世界转换(世界和本体坐标系统) 视界转换   世界空间仍

文档评论(0)

wangsux + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档