游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1759|回复: 2

关于摄像机矩阵

[复制链接]

15

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2009-8-27 08:18:00 | 显示全部楼层 |阅读模式
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有什么不一样吗?

14

主题

127

帖子

133

积分

注册会员

Rank: 2

积分
133
发表于 2009-8-27 09:16:00 | 显示全部楼层

Re: 关于摄像机矩阵

浮点数偏差

10

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2009-8-27 17:36:00 | 显示全部楼层

Re:关于摄像机矩阵

为了保证彼此垂直
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 10:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表