FPS通用的方框透视公式的原理
解读模型矩阵
模型矩阵里面的XYZ是FPS游戏逆向爱好者最经常找的基质之一,一般游戏中人物某些都不会进行颠倒之类的,所以绿色区域一般都不会有多少变动,那么我们找内存基址的时候都找红色区域的数值既可以不用特意去找模型矩阵,当然你想让游戏人物变成路飞之类的变态修改那当我没说ヾ(•ω•`)o
视角矩阵的解析
游戏逆向爱好者一般开发内存透视都需要这段基质(俗称找矩阵),当然寻找这段基质很不容易
以上就是相机的矩阵,矩阵存的东西有很多种可能,经过不断调试分析,得出很多不靠谱的猜想,这里就不多阐述了。可以缺点的是红色区域表示的是相机的角度,绿色区域是根据世界坐标和红色区域通过某种公式得出来的。
这里补充一下概念,
学校里学习过向量,那么您可能会熟悉将其视为箭头,可以将它们加在一起,乘以实数等等,但是将向量相乘的工作原理有所不同。这听起来很熟悉吗?这应该。矩阵就是这样工作的,这不是巧合。
矩阵是线性变换的表示: 可以这样理解,一处变,处处变
通过以上俩个特性俩矩阵相乘可以得到特殊含义的矩阵
模型矩阵和视角矩阵相乘得到的矩阵就是相机与模型的相对位置
解读模型视角的矩阵
获得了相机与模型在世界坐标的相对位置后,我们根据Z轴和我们视角距离进行分析如图
这里是模型刚刚好在相机的视角距离,那么当模型靠近的时候
此时视角中模型变大这是我们就需要一个缩放比例来控制模型的变化。
根据 视角距离/Z轴的相对距离 就获得了缩放比例
这时它的缩放比例是相对于世界坐标的,并没有按屏幕进行缩放,所以我们再加上屏幕的视角宽高
就获得真正的缩放比例公式:
Y轴缩放:(视角距离/Z轴的相对距离)*视角高
X轴缩放:(视角距离/Z轴的相对距离)*视角宽
当模型靠近的时候对X,Y坐标进行比例缩放如下
有了缩放比例我们就可以通过XY轴在我们屏幕上画有纵深感的点了
根据矩阵相乘获得的
X*缩放比例=屏幕上对应的点的X
Y*缩放比例=屏幕上对应的点的Y
缩放比例我们就可以通过XY轴在我们屏幕上画有纵深感的点了
根据矩阵相乘获得的
X*缩放比例=屏幕上对应的点的X
Y*缩放比例=屏幕上对应的点的Y
有了XY就可以通过XY吧点画在屏幕上,那个点就是敌人的实时位置,再通过点画出框就实现了方框透视
***在此感谢 B站,一只大笨熊***