同城头条  >  技术分享  >  [游戏安全] FPS游戏利用矩阵实现透视,以单机版csgo为例,附源码,有详细注释。
[游戏安全] FPS游戏利用矩阵实现透视,以单机版csgo为例,附源码,有详细注释。
2021年12月20日 07:12   浏览:0   来源:小报道

网上现在有很多FPS方框透视教程,但是很多都是找到矩阵,用个易语言模块就实现了,但是这样我们局限性很大,没有模块的时候该怎么办?
而且易语言的模块都看不到源码,所以我写了本篇文章说一下具体实现透视的算法,和大致的原理。
这个算法需要一点数学基础,与线性代数有关。 只要你不问我一个三行四列的行列式怎么算 ,你应该就可以看的懂。
我们取得矩阵的目的是什么呢,就是将人物的世界坐标转换为我们的屏幕坐标。
也就是将一个三维向量转为二维向量,这时候我们就需要矩阵的乘法来转换。
向量顾名思义就是既有方向又有大小的量。二维坐标系上的向量就是二维向量,如(2,3) 三维坐标系上的向量就是三维向量如(3,4,5)。

我们也可以这样写,这是一个列向量,也是一个矩阵。
一个游戏中一很多的坐标系如 世界坐标系 物体坐标系 观察坐标系等等。我们屏幕上显示物体的坐标x,y坐标就是通过世界坐标系中的坐标乘一个混合矩阵得到的。
这其中的数学原理我就不细讲了,因为这是做3d游戏需要学习的一些数学知识,想了解详情的可以参考知乎一篇文章:矩阵变换坐标系 深入理解 - 知乎 (zhihu.com)
我就举两个小例子,一个坐标系到另外一个坐标系 是通过平移,旋转和缩放实现的。


矩阵的乘法运算:



我这样写应该很容易理解,比百度百科上那些概念公式更容易看的懂。
比如我们将一个单位矩阵这个位置填上x,y,z坐标


做如下乘法

就相当于我们做了将(0,0,0)平移到了(x,y,z)

如果乘一个这样的矩阵呢



就完成了对z的缩放

这时候,你应该大致能理解为什么要乘以矩阵了,接下来我们用算法实现一下,世界坐标到屏幕坐标


这里我们找到的是竖矩阵,也就是这样的。因为我们游戏是directX的 如果是openGL可能就是横矩阵 ,那我们的算法就要变,但是很简单,只要举一反三就可以了



我们应该用矩阵乘世界坐标而不是世界坐标乘矩阵
因为矩阵的乘法只能是Anm*Bmj  这样的  也就是说前面矩阵的列数必须等于后面矩阵的行数,乘完我们就得到一个 n行j列的矩阵,也就是说矩阵的乘法不满足乘法交换率。


    vec clipCoords;
    clipCoords.x = pos.x * matrix[0] + pos.y * matrix[1] + pos.z * matrix[2] + matrix[3];
    clipCoords.y = pos.x * matrix[4] + pos.y * matrix[5] + pos.z * matrix[6] + matrix[7];
    clipCoords.z = pos.x * matrix[8] + pos.y * matrix[9] + pos.z * matrix[10] + matrix[11];
    clipCoords.w = pos.x * matrix[12] + pos.y * matrix[13] + pos.z * matrix[14] + matrix[15];
我们这样乘完得到的是一个裁剪坐标

接着我们转换为DNC坐标,也就是标准化设备坐标
    vec NDC;
    NDC.x = clipCoords.x / clipCoords.w;
    NDC.y = clipCoords.y / clipCoords.w;
    NDC.z = clipCoords.z / clipCoords.w;、

为什么这样算呢 ,这不是我说的,是微软的文档说的,这些东西就是那些计算机图形学的知识了 ,可以知其然不知其所以然,但是不能完全不知道用别的写好的模块,我们需要自己会用。

下一步就是转换为屏幕坐标,一样也是文档里可以查阅到的公式,就是利用屏幕的宽和高进行一些计算,就得到了屏幕坐标。
    screen.x = (windowWidth / 2 * NDC.x) + (NDC.x + windowWidth / 2);
    screen.y = -(windowHeight / 2 * NDC.y) + (NDC.y + windowHeight / 2);

我们得到的这个坐标是人物脚下正中心的坐标,如果需要画方框我们需要找到头部坐标,把人物的身高算出来,画出完美大小的方框。
我这里就进行测试一下



可以看到坐标还是比较准确的


无论我们是在什么位置,都能在敌人的脚下画出我输入的文本。

我们需要找的数据也很少,其他的数据我就不说了 ,很好找。

我大致说一下矩阵的几个特点:
还是以我们找到的这个竖矩阵为例

1.


这个值的绝对值小于2
除非在狙击枪开镜的时候会大于2

2.

这几个值基本一样

3.


这大概率有个0.00

我们鼠标晃动的时候矩阵就会变,但是如果只移动人物 鼠标不动,就只有最后一列的值变动。
通过这些慢慢搜索出矩阵就可以了。

头条号
小报道
介绍
报道大小信息,宣传正能量!
推荐头条
Keywords" 仪陇网、仪陇生活网、专注仪陇本地信息真实传递_仪陇网d-sj.cn/学法减分好助理答题神器一扫就出答案、学法减分好助理扫一扫知道答案app、学法减分好助理考试题库、学法减分好助理20道题模拟考试、学法减分好助理可以减多少分?、学法减分好助理拍照搜题 秒出答案免费、学法减分好助理拍照搜题、学法减分好助理拍照搜题 秒出答案、学法减分好助理可以申请几次?、学法减分好助理题库最新版、仪陇生活网、仪陇生活网招聘、仪陇招聘驾驶员、仪陇新政有哪些厂还在招工、仪陇人才网、仪陇在线、仪陇新政最新急招聘58同城、仪陇新政哪有做兼职的、仪陇县招聘信息最新招聘仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网二手房、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网住房出租最新消息、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇人才招聘信息生活网、仪陇生活网、仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网住房出租最新消息、仪陇生活网最新招聘暑假工、四川仪陇生活网、仪陇手机生活网、仪陇招聘网最新招聘信息、仪陇招聘驾驶员、仪陇县租房信息、仪陇新政招聘网最新招聘、仪陇找工作、仪陇最新招聘、仪陇生活网招聘、仪陇人才网、仪陇招聘信息招聘仪陇招聘信息信息、仪陇招聘c1驾照、仪陇房价、四川仪陇县房价多少钱一平方米、仪陇县房价现在是多少、仪陇房产网、仪陇新政房价多少钱一平米、仪陇新政房价、仪陇房价为什么这么高、仪陇房价多少钱一平方、仪陇房价如何走、仪陇房价为什么这么高2019、仪陇新闻网、仪陇新闻网头条、仪陇新闻最新消息今天、仪陇新闻网今日新闻、仪陇新闻直播、仪陇新闻网丁强、仪陇新闻网直播视频、仪陇新闻视频、仪陇新闻综合频道直播、仪陇广告公司、仪陇广告语、仪陇金山广告、仪陇驾校、仪陇驾校报名费用、仪陇驾校C1多少费用、仪陇驾校88队哪个教练好、仪陇驾校在什么地方、仪陇驾校科目一考试、仪陇驾校学费、仪陇驾校科一早上笫一堂几点、仪陇驾校蒲、仪陇坤安驾校、仪陇工厂招聘、仪陇工厂有拿回家干的活吗?、仪陇新政工厂招聘、仪陇新政招聘信息工厂、仪陇家电维修、仪陇家电回收、仪陇家电清洗、仪陇电脑维修哪家好、仪陇电脑城在哪里、仪陇电脑销售在什么地方、仪陇电脑回收、仪陇电脑培训、仪陇电脑商家、壹家电脑维修、仪陇二手家具市场、仪陇家具城、仪陇家具厂、仪陇家具维修师傅、仪陇家具定制、仪陇家具厂网上程、仪陇家具市场、仪陇家具城在哪里、仪陇二手家具回收、南充仪陇二手家具市场、四川仪陇房产信息网、仪陇马鞍房价、广西桂林房价、仪陇一中录取分数线2021、仪陇翰林锦府、仪陇金城二手房的房价、仪陇房价为什么这么高、仪陇新政租房最新消息、仪陇县金城镇房价下跌、仪陇县招聘信息最新招聘、仪陇房产网、仪陇河西工业区招聘、仪陇门面出租、四川仪陇黑老大周超、仪陇县金城镇二手房最新消息、仪陇新政本地招聘启事、四川仪陇新镇最新招聘、仪陇县找工作生活网、如何自学电脑维修、娄星区关家垴附近电脑维修、恒达行家维修培训怎么样、珠海唐家电脑维修、台式机维修去哪家好、笔记本维修哪家好、仪陇电脑维修哪家好、电脑维修公司哪家好、秀洲区电脑维修哪家好、仪陇新政本地招聘启事、仪陇县金城镇二手房最新消息、仪陇招聘网最新招聘信息、仪陇新政有哪些厂还在招工、仪陇县河西工业区招工、南部人才网、四川仪陇黑老大周超、仪陇新政哪有做兼职的、四川仪陇新镇最新招聘、长津湖电影、长津湖电影时间多长、长津湖电影完整版免费观看、长津湖电影观后感、长津湖电影完整版免费观看HD、长津湖电影完整版免费观看2021、长津湖电影完整版免费观看网站、长津湖电影观后感500字、长津湖电影票多少钱一张、长津湖电影票购买、长津湖成影史历史片票房冠军、长津湖电影完整版免费观看、长津湖3个冰雕连仅2人生还、长津湖战役、长津湖2021免费完整版观看、长津湖票房破30亿、长津湖作文、长津湖观后感、长津湖手抄报、长津湖观后感10篇、刷手机下拉示选上海百首网络、刷手机下拉述约上海百首网络、刷手机下拉安选上海百首网络、刷手机下拉尚选上海百首网络、刷手机下拉安信上海百首网络、苹果手机下拉菜单、华为手机不能下拉、手机下拉功能在哪里设置、手机下拉设置在哪里设置、手机不能下拉通知栏、仪陇天气、仪陇房产网新楼盘、仪陇县楼盘房价最新消息、仪陇县、仪陇天气预报15天、仪陇县房价、仪陇招聘网最新招聘信息、仪陇属于四川哪个市、仪陇县金城镇、仪陇网、仪陇房产网新楼盘、仪陇县招聘网、仪陇网上在逃人员、仪陇网吧多久开业、仪陇网约车平台、仪陇网红地、仪陇网吧、仪陇网吧开门了吗、仪陇网络电视台、仪陇生活网、仪陇生活网招聘、仪陇生活网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇手机生活网、仪陇人才招聘信息生活网、仪陇丁家大院、仪陇森家环保、仪陇县房价、仪陇二手房、仪陇二手房出售信息、仪陇房产查询系统、仪陇房子出售、仪陇房子能不能买、仪陇房子贵、仪陇房子还会拆迁、仪陇房子出租、仪陇首座房子好不好、仪陇房产网新楼盘、仪陇房产网、仪陇房产备案查询、仪陇房产信息网、仪陇房产查询系统、仪陇房产管理局官网、仪陇房产交易网、仪陇房产价格、仪陇房产中介、仪陇房产局、仪陇河西工业区有些什么厂、仪陇县河西工业区招工、仪陇河西工业园2020招聘、仪陇河西电子厂招聘信息、仪陇河西招聘驾驶员、仪陇河西大华宝公学、仪陇河西工业区有哪些制衣厂、仪陇河西工业园、仪陇河西工业区电子厂、仪陇河西工业区灯泡厂、薇仪陇之家、薇仪陇生活网新政房价、仪陇新政房价、仪陇新政二手房出售、仪陇新政楼盘、仪陇在线、仪陇生活网、仪陇生活网是大家了解仪陇的资讯窗口,同时也是仪陇人的网上家园,为大家提供免费查询发布仪陇便民生活信息,是仪陇地区综合信息门户网站!

Copyright ©2021 仪陇家园同城网--版权所有   蜀ICP备2022002889号-1