|
184 //=========================================
185 /**
186 @brief 计算摄像机矩阵,这个可以去看有关的数学知识
187 摄像机变换
188 就是根据3个向量来进行摄像机变换
189
190 思路:点世界变幻的逆运算就是摄像机变换
191 @param
192 @return
193 */
194 //=========================================
195
196 void zybCamera::getViewMatrix(D3DXMATRIX* V)
197 {
198 // Keep camera's axes orthogonal to eachother
199 D3DXVec3Normalize(&_look, &_look);
200
201 D3DXVec3Cross(&_up, &_look, &_right);
202 D3DXVec3Normalize(&_up, &_up);
203
204 D3DXVec3Cross(&_right, &_up, &_look);
205 D3DXVec3Normalize(&_right, &_right);
206
207 // Build the view matrix:
208 float x = -D3DXVec3Dot(&_right, &_pos);
209 float y = -D3DXVec3Dot(&_up, &_pos);
210 float z = -D3DXVec3Dot(&_look, &_pos);
211
212 (*V)(0,0) = _right.x; (*V)(0, 1) = _up.x; (*V)(0, 2) = _look.x; (*V)(0, 3) = 0.0f;
213 (*V)(1,0) = _right.y; (*V)(1, 1) = _up.y; (*V)(1, 2) = _look.y; (*V)(1, 3) = 0.0f;
214 (*V)(2,0) = _right.z; (*V)(2, 1) = _up.z; (*V)(2, 2) = _look.z; (*V)(2, 3) = 0.0f;
215 (*V)(3,0) = x; (*V)(3, 1) = y; (*V)(3, 2) = z; (*V)(3, 3) = 1.0f;
216
217 }
_up,_look,_right 既然已经是摄像机的上, 前, 右向量了,为什么(198-120行)还要再算一次, 直接赋给矩阵V有什么不一样吗?
|
|