各位大侠,小弟刚学DX请教:DirectX3D中观察矩阵和摄像机有什么区别

谢谢啦,我知道问题很简单,麻烦各位啦
因为我看程序有的通过更改动态的观察矩阵也可以实现视图的变换
所以我就不太明白他和摄像机有什么区别啦?如果有区别他又是起到什么作用的啊
麻烦啦,书上写的比较简单,麻烦有高人可以指教一二
谢谢啦

因为改变图形的位置可以用矩阵*矩阵也可以通过改变观察者和摄像机的位置来实现的。这两种方式的都可改变图形的位置;
这个具体的说起来不比较麻烦,简单来说就是通过矩阵乘以矩阵可以改变图形的位置,也可通过摄像机和观察者的位置改变图形的位置。我可以给你一些摄像机和观察者的代码,
//设置摄像机
void SetupMyWorld()
{ //设置旋转轴,旋转角度:世界矩阵
D3DXMATRIX matWorld;
//D3DXMatrixIdentity(&matWorld);//默认为单位矩阵
//------------------------------------------------------------------------------
//旋转
//D3DXMatrixRotationZ(&matWorld,timeGetTime()/1000.0f);//y轴旋转
//D3DXMatrixRotationY(&matWorld,timeGetTime()/1000.0f);//y轴旋转
//D3DXMatrixRotationX(&matWorld,timeGetTime()/1000.0f);//x轴旋转
D3DXMatrixRotationAxis(&matWorld,new D3DXVECTOR3(1,1,1),timeGetTime()/1000.0f);//绕着某一个特定的轴旋转
//------------------------------------------------------------------------------
//缩放
//myX=myX+0.05f;
//D3DXMatrixScaling(&matWorld,myX,myX,myX);//在x,y,z方向缩放
//------------------------------------------------------------------------------
//平移
//myX=myX+0.05f;
//D3DXMatrixTranslation(&matWorld,myX,0.0f,0.0f);//在x,y,z方向平移
//------------------------------------------------------------------------------
//混合
//D3DXMATRIX matWorld1;//旋转
//D3DXMatrixRotationY(&matWorld1,timeGetTime()/1000.0f);//y轴旋转

//myX=myX+0.01f;
//D3DXMATRIX matWorld2;//缩放
//D3DXMatrixScaling(&matWorld2,myX,myX,myX);//在x,y,z方向缩放

//D3DXMATRIX matWorld3;//平移
//D3DXMatrixTranslation(&matWorld3,myX,0.0f,0.0f);//在x,y,z方向平移

//D3DXMatrixMultiply(&matWorld,&matWorld1,&matWorld2);//混合1和2
//D3DXMatrixMultiply(&matWorld,&matWorld,&matWorld3);//混合3
//------------------------------------------------------------------------------
//课后作业:1.练习3种变换。2.练习缩放:缩小到一定比例后再放大回来,返回缩放。
//3.练习平移:平移到边缘后弹回相反的方向。4.练习3种变换的混合。

g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
//设置摄像机位置:视图矩阵
D3DXMATRIX matView;
D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 0.0f,-10.0f), //摄像机的位置
&D3DXVECTOR3(0.0f, 0.0f, 0.0f), //摄像机的朝向
&D3DXVECTOR3(0.0f, 1.0f, 0.0f)); //摄像机的顶方向
g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);

//设置视口大小、最近点、最远点:投影矩阵
D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 500.0f);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION, &matProj);
}
关于那个矩阵*矩阵的代码比较多还有图形讲解。不好贴出来。若果你想学习DirectX,那可以进我的网易博客,那里有我的详细讲解,我在这可不是做广告的哦。我的博客里真的有关于学习的资料及不妨可以进去看看,你若还想要什么资料,可以在上面留言。我也可以发表给你。具体链接是:http://hong200795.blog.163.com/你自己可以进去看看吧!希望对楼主有用
温馨提示:答案为网友推荐,仅供参考