Posted on 2008-08-26 20:24
千张 阅读(803)
评论(0) 编辑 收藏 引用 所属分类:
图形学
D3DXMatrixLookAtLH( &matView, &vEye, &vLookatPt, &vUpVec );
matView是输出的矩阵, 后三个参数分别控制眼睛,摄影机,和向上的方向。一般都书和网上的文章大概也就这么讲的,让人琢磨不透。
后三个参数类型是 D3DXVECTOR3 ,概类型又有三个分量。分别是X Y Z.总共就是 3x3的 矩阵。而不是4x4的矩阵。
一般的书里默认都 是这样设置的
D3DXVECTOR3 vEye(0.0f,0.0f,-5.0f);
D3DXVECTOR3 LookatPt(0.0f,0.0f,0.0f);
D3DXVECTOR3 vUpVec(0.0f,1.0f,0.0f);
-5.0f表示眼睛从原点向屏幕外一点。因为D3D使用的是左手坐标系,所以屏幕里是Z轴的正方向,所以为了看到眼前的物体就要后挪动下。
要是将 -5.0f改成正的,你会发现什么也看不见,那是因为你没有在后面画东西, 为了做实验,你可以在你的上下 左右 前后 分别放个不同的模型。以明确状态。看前后左右基本上就是调整 vEye的x,y,z各参数。如果你要看左边,就将 y z清零,设置 x为正数,因为X轴的正方向是指向右的。要看右边 X就为负值。要看上边就要配合最后一个参数,vUpVec,调整向上的方向。如果你要看上边,很显然,不可能是 正值的Y是 向上,为了向上看你要把头仰起来,那你的头多少就指向了Z轴的负方向。所以这里 在 Z轴设置 -1.0f就可以表示向上的方向了。 这里不太好想。
当然你也可以将Z轴设置为正的。我这里默认将Z设置为1.0f,然后通过 vEye的Y分量就可以调整为 向上或向下看了。
另外我还发现原来 通过 D3DXMatrixMultiply 还可以让摄影机原地绕X Y Z Axis旋转,这下看世界更方便了。