计算机图形学基础

网购优惠券 https://www.fenfaw.cn/

计算机图形学最基础的目标就是把建模时构建好的3D物体显示在2D屏幕上,这就涉及到物体在不同坐标系中坐标的转换。(物体/建模坐标系 ---------> 屏幕坐标系)

坐标系

在游戏中涉及到各种坐标空间和对应的坐标系

游戏中通过建模完成的3D物体要想在2D屏幕上显示出来需要进行坐标的转换。

矩阵变换

物体在一个三维坐标系中要想变换到另一个三维坐标系中需要通过矩阵乘法(与一个特殊的矩阵相乘),得到在另一个三维坐标系中的坐标。三维空间中某点的变换可以表示成点的齐次坐标与四阶的三维变换矩阵相乘 。

D3D和OpenGL的矩阵存储

D3D中会将对应的线代矩阵利用数组按行存储(行主顺),OpenGL中会按列存储(列主序)。

FPS游戏逆向思路

我们利用CE附加游戏后我们可以找到人物在世界坐标中的世界坐标(x1,y1,z1),要想在屏幕上画出人物边框就需要将世界坐标转化为屏幕坐标。

世界坐标 ----> 裁剪坐标

因为世界坐标通过乘观察矩阵得到观察坐标,观察坐标在乘裁剪矩阵得到裁剪坐标。而且观察矩阵和裁剪矩阵都会进行归一化,也就是我们可以找到观察矩阵和裁剪矩阵组成的组合矩阵,而且此4x4的组合矩阵会进行归一化(第一个元素为(-1,1))。

X = a11*x1 + a12*y1 + a13*z1 + a14Y = a21*x1 + a22*y1 + a23*z1 + a24Z = a31*x1 + a32*y1 + a33*z1 + a34W = a41*x1 + a42*y1 + a43*z1 + a44//(x, y, z)就是(x1,y1,z1)对应的裁剪坐标
//注意w有可能小于0,如果w小于说明物体不在你的视角范围中(不需要在屏幕上显示)。

所以我们需要的就是通过组合矩阵的第一个元素a11为(-1,1)来搜索得到组合矩阵。

裁剪坐标 ----> NDC坐标

NDC坐标就是将裁剪坐标对应的xyz除以w,这就是透视分割算法(降维)。

NDC_X = X / WNDC_Y = Y / W

NDC坐标 ----> 屏幕坐标

这需要一个视口变换矩阵,视口变换矩阵左乘NDC坐标就会得到对应的屏幕坐标。其中视口变换矩阵中fs和ns一般为0。

最后得到屏幕坐标的X = (Ws / 2 * NDC.x) + (NDC.x + Ws / 2), Y = -(Hs / 2 * NDC.y) + (NDC.y + Hs / 2)。而Ws * Hs为当前屏幕窗口的分辨率,且注意在windows中屏幕坐标系的规则

FPS游戏方框透视基本原理相关推荐

  1. c语言游戏call调用,C语言-植物大战僵尸-刷僵尸call;fps游戏CS-方框透视(矩阵+传统)...

    C语言-植物大战僵尸-刷僵尸call:fps游戏CS-方框透视(矩阵+传统)前言:大家好,我是向上先生,嘿嘿~最近在学习逆向.反汇编等等,首先我在非常感谢52pojie这个平台,差不多很多学习资源都是 ...

  2. 任鸟飞在线课程之FPS游戏自瞄爆头飞天透视画框

    0.FPS游戏自瞄展示 1.FPS游戏自瞄透视之模块动态加载 2.FPS游戏自瞄透视之玩转堆栈 3.FPS游戏自瞄透视之遍历周围所有目标 4.FPS游戏自瞄透视之目标需要的属性总结 5.FPS游戏自瞄 ...

  3. FPS 游戏实现D3D透视

    FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视 ...

  4. FPS游戏:实现D3D劫持透视 (API Hook)

    FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视 ...

  5. 【游戏逆向】FPS游戏自瞄透视之堆栈分析

    我们想做FPS游戏的自瞄透视功能,最基础的数据就是周围所有目标的坐标值只有确定了所有目标的位置,我们才能用算法写出自瞄和透视. 首先我们拿自身的血量当突破口,找出周围所有目标的遍历. 竞技场血量不好找 ...

  6. C/C++FPS实战CSGO矩阵方框透视骨骼自瞄实战教程

    C/C++FPS实战CSGO矩阵方框透视骨骼自瞄实战教程

  7. FPS游戏透视源码!

    FPS游戏透视源码! 2011年10月03日 需要的自己拿 ,部分插件需要自己给路径!~你懂的 C语言编译环境哈!#include #include #pragma comment(lib, &quo ...

  8. FPS游戏:D3D内部游戏菜单实现

    19年发布了一篇<FPS游戏:实现GDI方框透视>这篇文章,本篇文章中使用到的技术是外部GDI绘制,该绘制模式在Win10系统中如果不关闭毛玻璃效果则绘制会失效,为了解决绘制失效的窘境,故 ...

  9. FPS游戏:D3D实现游戏人物上色

    本教程是<FPS游戏:实现D3D劫持透视 (API Hook)>教程的延续篇,在上一课我们讲解了如何通过函数劫持,实现对特定角色墙后透视功能,不过我们当时使用的是全局透视,并没有找到人物模 ...

  10. 深度解析FPS游戏外挂+解决方案

     1974年,由Steve Colley开发的世界上第一款FPS游戏<迷宫战争>诞生,这款看似简单的游戏却为未来近半个世纪的FPS类游戏的蓬勃发展埋下了一颗种子. 据今年2月STEAM热门 ...

最新文章

  1. 【ABAP】 屏幕图片显示Demo
  2. vue怎么引入外部地址_vue系列教程之微商城项目|主页
  3. 使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息
  4. python常用方法总结-Python3常用函数、方法总结(持续更新…)
  5. C语言程序头文件扩展名为_,c语言程序设计 考试模拟题B.doc
  6. feign调用多个服务_SpringCloud服务间调用
  7. 三极管饱和时内部状态再探
  8. M3U8视频流下载神器CocoCut
  9. linux mint 检测网卡驱动,使用linux mint 安装无线网卡驱动
  10. Windows10开启电脑卓越性能模式,运行速度提升10%,CUP利用率达到50%
  11. 如何在Excel中创建组合图
  12. BTA | CSDN蒋涛:区块链时代最大赢家,将属于技术、经济、组织的三合一高手
  13. python基本代码教程-如何真正零基础入门Python?(第一节)
  14. iphone游戏开发(转)
  15. 芯片封装形式(网上到处找的)
  16. bzoj 1921: [Ctsc2010]珠宝商 后缀自动机+点分治
  17. Subpalindromes
  18. Java实现O(nlogn)最长上升子序列
  19. 论文阅读笔记《Anomaly Detection in Nanofibrous Materials by CNN-Based Self-Similarity》
  20. netstat 查看tcp 网络连接

热门文章

  1. 文本特征提取和向量化
  2. 大数据入门书籍推荐以及Hive学习资料
  3. 计算机如何识别英语,Excel自动识别中英文妙招三则 -电脑资料
  4. 阿里巴巴《Java开发手册(黄山版)》阅读笔记
  5. C语言中scanf函数的用法
  6. 今日分享:js制作一个简单的新年倒计时
  7. Win7如何简单的关闭445端口及445端口入侵详解
  8. 平衡二叉树例题_平衡二叉树专题
  9. debian笔记本电源管理
  10. 中投 汇金 中金 中登