游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3324|回复: 9

写摄像头的时候生成matView有点问题……

[复制链接]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2008-7-26 22:34:00 | 显示全部楼层 |阅读模式
我写的摄像头保存Eye, At, Right, Up;开始用D3DXMatrixLookAtLH的结果是移动的时候焦点老是对着初始化时候的At的地方。

DX文档里面fD3DXMatrixLookAt是用下面的公式计算的,直接改一下这公式结果却对了……
zaxis = normal(At - Eye)//把这里改成zaxis = normal(At)结果就对了
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
   
xaxis.x           yaxis.x           zaxis.x          0
xaxis.y           yaxis.y           zaxis.y          0
xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l
这个微小的改变为什么会改变结果啊?这里唯一不同是自己写的类里面保存了Right…… [em21]

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-7-26 23:44:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

花点时间好好看看数学书吧,推荐
<<Mathematics.for.3D.Game.Programming.and.Computer.Graphics>>
或者
<<3D Math Primer for Graphics and Game Development>>

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-7-27 11:14:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

3D Math Primer for Graphics and Game Development我看了……

现在想明白了,我本来就用LookAt做matView的Z列……再减一次就把向量拉回到(0,0,0)了……怎么移动也是望着原点……
要用D3DXMatrixLookAtLH的话要用另外一个向量表示望向点的位置才行……
不好意思……一时糊涂了……

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-28 20:02:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

呵呵,我来学习一下

0

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2008-7-28 20:23:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

eye和AT不是一个点吗,三个参数应该是摄影机在的位置,摄影机看上的位置和摄影机上方的位置三个向量吧

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-7-29 09:37:00 | 显示全部楼层

Re: Re:写摄像头的时候生成matView有点问题……

tpf111: Re:写摄像头的时候生成matView有点问题……

eye和AT不是一个点吗,三个参数应该是摄影机在的位置,摄影机看上的位置和摄影机上方的位置三个向量吧

直接画图比较直观,不知道能不能贴出来……

像这张图的左边就是D3DXMATRIXLOOKATLH用的坐标,
红色的是Eye,褐色的是At, At - Eye 就是我们真正想要的LookAt向量(绿色那条)。
而在自己写的那个摄像头里面(右边的图)直接保存的就是LookAt向量(也是绿色那条),如果用D3DXMatirxLookAtLH的话就会得到褐色的那条向量,这样结果就会一直望向原点附近了。

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-7-29 10:02:00 | 显示全部楼层

Re: 写摄像头的时候生成matView有点问题……

再试试……不行的话在上面那个显示不出来的图上看属性,用浏览器打开属性上的URL地址应该可以打开图的……-__-~
sf_200872910143.jpg

0

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2008-7-29 11:14:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

只用写出你在哪里看vecEye, 看向哪里vecLook, 正方向vecUp就可以了,不用我们手动算出我们到底看向哪个方向
如果要看向原点就把vecLook = D3DXVECTOR3(0.0f, 0.0f, 0.0f);

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-7-29 22:39:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

假设摄像头的原点与世界空间的原点重叠,
而且望着+Z的方向即vecLook = D3DXVECTOR3(0.0f, 0.0f, 1.0f);
当我们向右平移,用D3DXMatrixLookAtLH的话摄像头就会一直望着(0.0f, 0.0f, 1.0f)那点,而不是我们想要的(.0f,.0f,1.0f)

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2008-7-30 12:03:00 | 显示全部楼层

Re:写摄像头的时候生成matView有点问题……

eye 和at怎么会是一个点。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 20:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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