- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三维坐标系和几何学
类型:转贴 | 来源:整理 | 时间: 2006-0-12
下面我们将介绍在编制立即模式程序之前需要了解的一些技术上的概念。他并不是对较宽层面上的详细描述,也不是对Direct3D的组成部分的深入分析。要了解更多的有关信息,可以察看“Direct3D立即模式的体系结构”和“Direct3D立即模式的要素”两部分内容。
如果你已经对编制三维图形程序有一定经验,可以浏览一下以下的内容,了解一些Direct3D所特有的东西。
这些内容分为以下两个部分:
三维坐标系和几何学(3-D Coordinate Systems and Geometry) 矩阵和变换(Matrices and Transformations)
一.3-D坐标系统和几何学
编制Direct3D应用程序要对三维几何学的一些基本内容有一定的了解。这与部分我们将介绍一些重要的有关创建三维场景的几何学概念,分为以下几个部分:
3-D坐标系统(3-D Coordinate Systems) 3-D图元(3-D Primitives) 三角光栅准则(Triangle Rasterization Rules) 明暗处理(Shading) 1. 3-D坐标系统
一般来说,3-D图形应用程序使用两种类型的笛卡尔坐标系统:即左手坐标系统(left-handed)和右手坐标系统(right-handed)。在这两种坐标系统中,x-轴正方向均指向右边,y-轴正方向也都指向上方。z-轴的方向可以用左、右手定则来确定,即握起左(或右)手的四指来代表由x-方向旋转到y-方向,则左(或右)手的拇指就指向z-轴的正方向。如下图:
Direct3D中使用的是左手坐标系统。如果你的程序使用的是右手坐标系统,那么你只需要对Direct3D的数据做两个很小的修改:
改变三角形顶点的顺序,使它们从前面来看按照顺时针的方向排列。换句话说,如果顶点是v0、v1、v2,那么传递给Direc3D的是v0、v2、v1。
使用视矩阵(view matrix)来对世界空间进行调整,即将z-方向调整为-1。这样就需要改变D3DMATRIX结构体的_31、_32、_33和_34成员的正负号,它们被用于视矩阵之中。
要注意的是,还有其它许多种用于3-D软件的坐标系统。左手和右手系统只是其中最常用的两种。然而在三维造型程序中,y-轴指向或背离观察者,z-轴朝上的坐标系统也经常被采用。既然如此,右手系统中通常将任意一个正坐标方向(x、y或z)指向观察者。左手系统则通常将任意一个坐标的负方向指向观察者。如果你所使用的左手坐标系统中z-轴指向上方,那么除了前面所说的之外,你还需要对所有的顶点数据进行旋转。
对三维坐标系统中定义的对象,一些基本的操作包括:平移(translate),旋转(rotate),和缩放(scale)。你可以将这些基本的变换组合起来建立一个变化矩阵,想要进一步的了解有关内容,请注意“3-D变换”部分。
要记住的是,将这些操作组合在一起的顺序是很重要的,组合顺序的不同,得到的结果也会不同。
2. 3-D图元
一个3-D图元就是一些顶点的集合,它们组成了一个三维实体。最简单的图元就是一个三维坐标系统中的点的集合,在Direc3D中我们称为顶点列表(point list)。
通常,三维图元都是多边形。Direct3D中的多边形是一个封闭的三维图形,它至少由三个顶点组成。最简单的多边形是一个三角形。Direct3D用三角形来组成大多数的多边形,这是因为一个三角形的三个顶点保证是共面的。渲染非共面的顶点是很困难的。我们可以用三角形来组成更大的更复杂的多边形和多面体(mesh)。
下方的左图显示了一个立方体。立方体的每一个面由两个三角形组成。这些三角形一起组成了一个立方体图元。你可以在图元的表面上使用材质和纹理,这样就使它更象一个实心的物体。要了解更多有关的内容,注意“材质和纹理”部分。
你也可以使用三角形来构造一个表面由平滑曲面组成的图元。上方的右图展示了一个由三角形构成的球体。使用了材质之后,这个球体的表面看起来会更平滑。如果再使用Gouraud明暗处理方法,它会更加逼真。
3. 三角光栅准则
通常,用来表示顶点的点不会和屏幕上的像素很好的吻合。这时,Direct3D会使用三角光栅准则来决定将那些像素用来显示一个给定的三角形。
Direct3D使用左上角填充约定(top-left filling convention),这与应用于GDI和OpenGL中的矩形的约定是一致的。在Direct3D中,我们用像素的中心点来进行判决。当中心点在一个三角形内部时,这个像素就被判定为属于这个三角形。像素
原创力文档


文档评论(0)