码迷,mamicode.com
首页 > 其他好文 > 详细

Direct3D 四大变换(物体坐标系变化,取景变换,投影变化,视口变化)

时间:2015-11-11 01:11:23      阅读:732      评论:0      收藏:0      [点我收藏+]

标签:

技术分享


首先我们先学习如何让物体在世界中(缩放,旋转,平移),  如果要进行其中一个操作就要创建出一个矩阵, 矩阵的名称对应(缩放矩阵,旋转矩阵,平移矩阵等等) ,通过矩阵改变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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!