Posted on 2008-08-26 20:24
千張 閱讀(807)
評論(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旋轉,這下看世界更方便了。