坐标系与变换矩阵

来源:互联网 发布:ipad视频加密软件 编辑:程序博客网 时间:2024/04/28 08:16

1.世界坐标系和模型几何变换

SetTransform(D3DTS_WORLD,&world)

    物体在图形学中通常通过一个4X4矩阵来表示三围物体的空间几何变换,表示三围物体在世界空间中集合变换的矩阵称为世界变换矩阵,简称世界矩阵,在Direct3D中通过为Direct3D设备接口设置世界矩阵完成其模型几何变换。模型集合变换有三种基本类型:平移(Translate),旋转(Rotae),缩放(Scale),其他任何复杂的变换都是由这三种基本变换符合而成的。复合变换是通过将每个单一的几何变换矩阵依次相乘形成的。

2.观察坐标系和取景变换

D3DXMatrixLookAtLH()

SetTransform(D3DTS_VIEW,&view)

      若把图形显示过程比作摄影过程,则就像摄影中的摄像机的摆放一样,在三维图形程序中,需要设置一个虚拟的相机,屏幕显示的图形就是虚拟相机拍摄的景物。以相机位置为参考原点,相机观察方向为坐标轴,建立的坐标系称为观察坐标系,物体在观察坐标系中的相对坐标称为观察坐标,顶点从世界坐标到观察坐标的转换称为取景变换或观察变换。

3.投影坐标系和投影变换

D3DXMatrixPerspectiveFovLH()

SetTransform(D3DTS_PROJECTION, &proj)

      物体顶点坐标从世界坐标转换到观察坐标后,就可以将三维物体投影到二维平面上,即投影到虚拟相机的胶片上,这个过程称为投影变换。以胶片为参考远点的空间坐标系称为投影坐标系,物体在投影坐标系中的坐标表示称为投影坐标。

      投影变换的取景范围是一个截头体(如图2所示)

 


4. 视区变换

      视区变换是dIRECT3D顶点变换流水线的最后一步,通过定义屏幕显示区域的实际宽高度度,将顶点从投影坐标转换为最终显示的以像素为单位的屏幕坐标。视区变换主要有两个作用:顶点裁剪,将顶点投影坐标转换为屏幕坐标。

 

5. 最后说明

      Direct3D中的坐标变换虽然过程很复杂,但是对于程序员来说就是创建并设置世界矩阵,观察矩阵,投影矩阵。

      世界矩阵用来对空间中的物体进行平移,旋转,和缩放处理的,通常不同的物体需要进行不同的世界变换,所以在程序中最好为每个物体都准备一个世界矩阵,这样程序更加清晰,而且空间中的物体的位置和姿态通常随时都在变换,例如一辆欲动的汽车,这样在渲染每帧前都需要为其设置世界变换矩阵来不断改变其位置和姿态。而观察变换和投影变换通常针对整个场景的,不是针对某个物体的,相对固定,所以观察矩阵和投影矩阵通常在创建了Direct3D设备接口后进入图形渲染循环之前就设置好。

 


原创粉丝点击