如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
三维坐标系和几何学类型:转贴|来源:整理|时间:2006-06-12下面我们将介绍在编制立即模式程序之前需要了解的一些技术上的概念。他并不是对较宽层面上的详细描述,也不是对Direct3D的组成部分的深入分析。要了解更多的有关信息,可以察看"Direct3D立即模式的体系结构"和"Direct3D立即模式的要素"两部分内容。如果你已经对编制三维图形程序有一定经验,可以浏览一下以下的内容,了解一些Direct3D所特有的东西。这些内容分为以下两个部分:三维坐标系和几何学(3-DCoordinateSystemsandGeometry)矩阵和变换(MatricesandTransformations)一.3-D坐标系统和几何学编制Direct3D应用程序要对三维几何学的一些基本内容有一定的了解。这与部分我们将介绍一些重要的有关创建三维场景的几何学概念,分为以下几个部分:3-D坐标系统(3-DCoordinateSystems)3-D图元(3-DPrimitives)三角光栅准则(TriangleRasterizationRules)明暗处理(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。使用视矩阵(viewmatrix)来对世界空间进行调整,即将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中我们称为顶点列表(pointlist)。通常,三维图元都是多边形。Direct3D中的多边形是一个封闭的三维图形,它至少由三个顶点组成。最简单的多边形是一个三角形。Direct3D用三角形来组成大多数的多边形,这是因为一个三角形的三个顶点保证是共面的。渲染非共面的顶点是很困难的。我们可以用三角形来组成更大的更复杂的多边形和多面体(mesh)。下方的左图显示了一个立方体。立方体的每一个面由两个三角形组成。这些三角形一起组成了一个立方体图元。你可以在图元的表面上使用材质和纹理,这样就使它更象一个实心的物体。要了解更多有关的内容,注意"材质和纹理"部分。你也可以使用三角形来构造一个表面由平滑曲面组成的图元。上方的右图展示了一个由三角形构成的球体。使用了材质之后,这个球体的表面看起来会更平滑。如果再使用Gouraud明暗处理方法,它会更加逼真。3.三角光栅准则通常,用来表示顶点的点不会和屏幕上的像素很好的吻合。这时,Direct3D会使用三角光栅准则来决定将那些像素用来显示一个给定的三角形。Direct3D使用左上角填充约定(top-leftfillingconvention),这与应用于GDI和OpenGL中的矩形的约定是一致的。在Direct3D中,我们用像素的中心点来进行判决。当中心点在一个三角形内部时,这个像素就被判定为属于这个三角形。像素的中心点的坐标值都是整数。Direct3D中所使用的这一三角光栅准则并不一定被所有的