游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1848|回复: 4

请教关于矩阵和矢量的基础问题

[复制链接]

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
发表于 2005-8-21 04:07:00 | 显示全部楼层 |阅读模式
我在写一个追尾摄像机类时遇到计算上的问题,虽然摄像机类已经完成,但还对该问题耿耿于怀

进入正题,DX那个设置观察矩阵的函数(名字很长,不记得了),它的参数都是用矢量的,我想把观察目标指向一个3D模型的中心(就是那个模型的局部矩阵的位置),我的做法是先转换模型的局部矩阵到世界矩阵,然后以世界坐原点为起点,用模型的世界矩阵来偏移一个矢量,得到了模型的中心的世界坐标!这很容易做到,但是如果对模型的局部矩阵或者模型的任何一个父节点的局部矩阵进行旋转变换之后,问题就出现了。看上面的做法,我是以世界坐标的原点为起点来求解的,由于原点3个轴的值均为0#,在进行矩阵到矢量的旋转求解时,0乘任何数也为0,当然是求不出正确的答案。对此问题思考了几天也得不到,请各位高手指教!

小弟没上过矩阵和矢量的数学课(我读的专业没有数学科),现在所用的那一点矩阵和矢量的知识只是从别人的源码中学来的,上述有误的地方也请指正


关于这个追尾摄像机类,我参考MAYA上的做法,用了更好的方法来实现,比起使用DX那个什么函数更方便更直观,当然是相对于此类的使用者来说的。源码在自家的机上,这几天不在家,迟些放上来给大家共享!

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-22 13:08:00 | 显示全部楼层

Re:请教关于矩阵和矢量的基础问题

矩阵旋转运算不是你这样想的,基本上我们所有的矩阵旋转运算都是绕笛卡尔轴进行的,本身就是一个矩阵,不存在绕点的问题,如果你要计算的点位于世界坐标原点,旋转他当然没有效果,不管他怎么转都是在原点,但矩阵的偏移就不一样了

但其实DX的矩阵运算还是比较简单的,尤其是摄像机简化了很多,关于你的问题,其实只要将追尾对象的世界坐标变换矩阵同时对摄像机的位置,目标点,和Up矩阵同时乘一下就OK了

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
 楼主| 发表于 2005-8-22 23:17:00 | 显示全部楼层

Re: Re:请教关于矩阵和矢量的基础问题

bigbook2000: Re:请教关于矩阵和矢量的基础问题

但其实DX的矩阵运算还是比较简单的,尤其是摄像机简化了很多,关于你的问题,其实只要将追尾对象的世界坐标变换矩阵同时对摄像机的位置,目标点,和Up矩阵同时乘一下就OK了


感谢bigbook2000解答!但是,十分抱歉…我不明白“同时乘一下”的意思,“同时乘一下”之后会怎么才OK?

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-23 10:35:00 | 显示全部楼层

Re:请教关于矩阵和矢量的基础问题

Dim vEyeNew As D3DVECTOR
Dim vAtNew As D3DVECTOR
Dim vUpNew As D3DVECTOR

D3DXMatrixMultiply vEyeNew, vEye, vWorld
D3DXMatrixMultiply vAtNew, vAt, vWorld
D3DXMatrixMultiply vUpNew, vUp, vWorld

D3DXMatrixLookAtLH m_matView, vEyeNew, vAtNew, vUpNew

53

主题

241

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
 楼主| 发表于 2005-8-25 23:50:00 | 显示全部楼层

Re:请教关于矩阵和矢量的基础问题

哦哦~下次回家时试试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 13:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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