1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > DirectX 9.0中的坐标变换:从模型空间到屏幕坐标

DirectX 9.0中的坐标变换:从模型空间到屏幕坐标

时间:2023-05-15 22:27:29

相关推荐

DirectX 9.0中的坐标变换:从模型空间到屏幕坐标

局部坐标系到世界坐标系:

物体的局部坐标(模型坐标)通过世界变换(IDirect3DDevice9::SetTransform(D3DTS_WORLD, matrix))变换到世界坐标。

将一个物体的中心置于世界坐标系的点(-3, 2, 6):

D3DXMATRIX matrix;D3DXMatrixTranslation(&matrix, -3.0f, 2.0f, 6.0f);Device->SetTransform(D3DTS_WORLD, matrix);

世界坐标系到观察坐标系:

在世界空间中,几何体和摄像机都是相对于世界坐标系定义的,当摄像机朝向任意时,投影变换或其他变换就略显困难或效率不高。为了简化运算,将摄像机的局部坐标系变换到与世界坐标系重叠(摄像机的朝向与世界坐标系的z轴一致),此时世界空间中的几何体也做相同的变换使摄像机的视场恒定。这种变换称为取景变换,变换后的几何体位于以摄像机为原点的观察坐标系

//获得取景变换矩阵D3DXMatrixLookAtLH(&matrix, &position, &targetPoint, &worldUp) //设置取景变换Device->SetTransform(D3DTS_VIEW, &matrix);

取景变换矩阵推导过程:View Transform详解

观察坐标系到投影坐标系:

视锥体是一个三维体,它的位置和摄像机相关,视锥体的形状决定了模型如何从投影到屏幕上。最常见的投影类型-透视投影,使得离摄像机近的物体投影后较大,而离摄像机较远的物体投影后较小。透视投影使用棱锥作为视锥体,摄像机位于棱锥的椎顶。该棱锥被前后两个平面截断,形成一个棱台,叫做View Frustum,只有位于Frustum内部的模型才是可见的。

在DirectX中,投影变换将观察坐标系中的顶点变换到投影坐标系(如下图右边的立方体),经过投影变换变换后的坐标仍然是三维的,z坐标被缩放到[0, 1]x坐标范围是[-1, 1],y坐标范围是[-1, 1]。

设置投影变换矩阵:

D3DXMATRIX proj;D3DXMatrixPerspectiveFovLH(&proj, fov, aspect, zn, zf);Device->SetTransform(D3DTS_PROJECTION, &proj);

投影变换矩阵推导过程:透视投影详解

投影平面到视口坐标系

→DirectX视口变换矩阵详解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。