关于D3D矩阵的数值异常,请大佬解答
各位大佬好,小弟是一个新手,最近刚刚接触FPS的 制作,并且根据一个教程找到了D3D矩阵的地址,部分数据如图。地址应该无误,多次开关游戏后依然能够从该地址得到数据。但是,小弟的矩阵存在一定的问题。
这个D3D矩阵的原理就是欧拉角空间旋转矩阵,矩阵代表了两个坐标系之间的对应关系。
简而言之,就是一个点在两个坐标系下的坐标值不同,用第一个坐标系的列向量左乘矩阵就可以得到该点在第二个坐标系下的坐标值。
因此,我们可以通过矩阵左乘将敌人在世界坐标系的坐标值转换为瞄准坐标系。
在如图矩阵中,左上角那个3X3的矩阵叫旋转矩阵。每个值都是坐标轴夹角的余弦值,叫方向余弦,范围是-1到1。
那么,它应该严格遵守单列或者单行的平方和等于1,且人物多次 移动,转动后不该出现0这样的数字。
但是,小弟找到的矩阵,第一列和第二行的方向余弦值并不严格遵守平方和为1的规则,并且第1列第2行永远为0.
这在数学上是解释不通的,因为0表示cos90,表示我的瞄准坐标系的一根轴与世界坐标系的一根轴永远垂直。
这根本不可能!因为俯仰和偏航角度改变了,肯定会把坐标轴带着动,但这根轴永远垂直,是什么道理
这里面一定有更深层次的讲究,或者还是我找的矩阵不对?
3*3矩阵,这种矩阵有很多BUG, 你拿个狙击枪用望远镜放大,你会发现框会乱飘,找4*4的矩阵吧,这种矩阵没啥用 3*3矩阵狙击放大框不对是因为矩阵第一个数值不会变化,而4*4的矩阵你狙镜放大第一个数值也会变化,等于就是自带FOV,如果你想用3*3的矩阵,就必须找出fov而且3*3矩阵世界坐标转屏幕坐标的算法跟4*4是不一样的, 一般游戏都有4*4的在找找吧 很少人写 用3*3的,基本都是4*4 这是一个标准的43矩阵,33矩阵我听都没听过。这种需要FOV
页:
[1]