上述图元中,后三种以三角形为单位的图元比较常用。其中三角形列适用范围较广,既能用于多边形,也可用于曲面;而三角形带和三角扇形由于存在公共顶点,如果用来创建多边形,其公共顶点的法线不好确定,因此通常只用于曲面,不过在三角形数目相同的情况下,它俩使用的顶点数目要比前者少得多。
2.4.4 坐标变换
图10(a):世界变换 图10(b):视角变换
1)世界变换
我们在建立三文实体的数学模型时,通常以实体的某一点为坐标原点,比如一个球体,很自然就用球心做原点,这样构成的坐标系称为本地坐标系(Local Coordinates)。实体总是位于某个场景(World Space)中,而场景采用世界坐标系(World Coordinates),如图10(a)所示,因此需要把实体的本地坐标变换成世界坐标,这个变换被称为世界变换(World Transformation )。
在Direct3D中,坐标变换通过一4x4矩阵来实现,对于世界变换,只要给出实体在场景中的位置信息,就可以借助Direct3D 函数得到变换矩阵,具体的计算可调用如下函数:
平移变换可由函数D3DXMatrixTranslation;
旋转变换用D3DXMatrixRotation;
缩放变换可由函数D3DmatrixScaling;
矩阵乘法用函数D3DmatrixMultiply。
2 )视角变换
实体确定后,接下来要确定观察者在世界坐标系中的方位,换句话说,就是在世界坐标系中如何放置摄像机。观察者(摄像机)所看到的景象,就是Direct3D 窗口显示的内容。确定观察者需要三个量:
观察者的点坐标;
视线方向,为一个矢量,不过Direct3D用视线上的一个点来替代,此时视线方向就是从观察者指向该目标点,这样表示更直观一些;本文来自辣.文'论^文·网原文请找腾讯324.9114
上方向,通俗地说,就是观察者的头顶方向,
论文网http://www.751com.cn/ 用一个矢量表示。
与世界变换相比,视角变换矩阵的获取要容易得多,只需调用一个函数D3DXMatrixLookAtLH,其输入参数就是决定观察者的那三个量。
3 )投影变换
实体转换到视角空间后,还要经过投影变换(Projection Transformation ),三文的实体才能显示在二文的计算机屏幕上。
Direct3D 使用透视投影变换(Perspective Transformation ),此时在视角空间中,可视区域是一个以视线为轴心的棱台(Viewing Frustum ),如图10(c)所示。想象一下你处在一个伸手不见五指的房间里,面前有一扇窗户,你可以透过窗户看到各种景物。窗户就是棱台的前裁剪平面,天空、远山等背景是后裁剪平面,其间的可视范围是景深。投影变换把位于可视棱台内的景物投影到前裁剪平面,由于采用透视投影,距离观察者远的对象会变小,从而更具有真实感。在Direct3D中,前裁剪平面被映射到程序窗口,最终形成了我们在屏幕上看到的画面。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
玫瑰根系模拟仿真及建模 第5页下载如图片无法显示或论文不完整,请联系qq752018766