标签:
首先我们先学习如何让物体在世界中(缩放,旋转,平移), 如果要进行其中一个操作就要创建出一个矩阵, 矩阵的名称对应(缩放矩阵,旋转矩阵,平移矩阵等等) ,通过矩阵改变X,Y,Z
我们只需要调用相应的函数,会帮我们创建出想要的矩阵.
平移矩阵:
D3DXMATRIX juzheng; //创建矩阵变量 D3DXMatrixTranslation(&juzheng,0,0,20); //调用平移矩阵传入(x,y,z)移动距离,返回一个矩阵表示向z轴前进10米 Device->SetTransform(D3DTS_WORLD,&juzheng); //让物体进行移动
旋转矩阵:
D3DXMATRIX mTransX; D3DXMATRIX mTransY; D3DXMATRIX mTransZ; D3DXMATRIX mTrans; float fAngle = 50 * (2.0f * D3DX_PI) / 360.0f; //旋转50度 D3DXMatrixRotationX(&mTransX,fAngle); //创建绕X轴旋转50° D3DXMatrixRotationY(&mTransY,fAngle); //创建绕Y轴旋转50° D3DXMatrixRotationZ(&mTransZ,fAngle); //创建绕Z轴旋转50° mTrans = mTransX * mTransY * mTransZ //使用矩阵相乘,创建出新的矩阵表示X,Y,Z都旋转50° Device->SetTransform(D3DTS_WORLD,&mTrans);
缩放矩阵:
D3DXMATRIX mTrans; D3DXMatrixScaling(&mTrans,1.0f,1.0f,5.0f); //Z轴放到5 Device->SetTransform(D3DTS_WORLD,&mTrans);
如果你想要一个矩阵具有缩放和旋转, 新矩阵 = 旋转矩阵 * 缩放矩阵;
一般操作物体是 缩放 –> 旋转 –> 平移
D3DXMATRIX matView; D3DXVECTOR3 vEye(0.0f,0.0f,-10.0f); //摄像机的位置 D3DXVECTOR3 vAt(0.0f,0.0f,0.0f); //观察点的位置 D3DXVECTOR3 vUp(0.0f,1.0f,0.0f); //摄像机向上的向量(0,1,0)代表向前方看 D3DXMatrixLookAtLH(&matView,&vEye,&vAt,&vUp); //计算出取景变化矩阵 Device->SetTransform(D3DTS_VIEW,&matView); //改变摄像机的位置
先写到这里=。= 以后在补充未完
Direct3D 四大变换(物体坐标系变化,取景变换,投影变化,视口变化)
标签:
原文地址:http://www.cnblogs.com/plateFace/p/4954994.html