向量

AB向量,可写作B-A,方向由A指向B,即被减向量指向减向量。

向量有方向和大小,大小为1的向量为单位向量,即向量的各分部平方和再开根号的值为1。

点乘(DOT):向量的点乘可计算出两向量之间夹角的余弦值,进而得到夹角。当都为单位向量时更加便捷。两向量起始位置放在一起。图形学中主要用点乘来计算向量之间的夹角。

叉乘(CROSS):AxB = -BxA,交换得到的向量是相反的。Maya和OpenGL使用的是右手坐标系,DirectX和Max使用的是左手坐标系。AxA得到一个长度为0的向量。图形学中可以用叉乘判断向量的左右关系,如AxB结果为正则代表A在B的右侧;还可以判断点在三角形内或外,三条边分别与顶点到该点向量叉乘,结果正负相同则在内部,比如ABxAP

向量点乘得到一个数字,向量叉乘得到一个向量。

矩阵

逆矩阵的定义,两矩阵相乘得到的结果是单位矩阵。

矩阵变换

基础的矩阵变换包括平移、旋转、缩放等,这些都是可以通过左乘对应的变换矩阵得到变换后的效果。

齐次坐标

为什么要有齐次坐标?

平移变化无法通过线性变换实现,为了方便的进行偏移变换;能够简化透视投影流程

什么是其次坐标?

对于点补1,对于向量补0。原因是为了保证向量的平移不变性,通过平移变换后应该得到的还是原来的向量才对。并且符合向量和点的运算原理,比如向量相加还是向量,补1就违背了这一原则。同时对一个点来说,要保证补的w为1,故所有维度需要同时除以w,通过这个可知在其次坐标下,两点相加得到的是这两点之间的中点。这就是齐次坐标的尺度不变性。

对于线性变化+平移的结构成为仿射变换,可写为齐次坐标表示的形式。并且结构有固定的形式如下。

组合变换的顺序也很重要,先旋转、后平移。因为旋转是相对原点进行的,平移后再旋转得到的效果与预期不同,同时也说明矩阵相乘不具有交换律。

MVP变换

将物体都摆放好,转换到相应的模型空间下

摆放相机,调整相机的位置、朝向

按下快门拍照

模型、视图都是对物体进行的,通常也会写在一起。

模型变换(Model Transformation)

将物体都摆放好,转换到相应的模型空间下

视图变换(View/Camera Transformation)

约定相机放在原点,lookat方向为-z,up方向为y。并且所有物体跟随相机进行这种变换。

视图变换的思路:

视图矩阵的推导:

投影变换(Projection Transformation)

投影变换的目的是为了将3D的场景变换到2D空间下。投影方式有正交投影和透视投影,正交投影的投影方向和坐标轴要么平行要么垂直,不会有相交的情况;透视投影则遵循近大远小。投影变换将区域内(透视投影为视锥体,正交投影为正方体区域)的点变换到[-1,1]^3的规则观察体(裁剪空间)中,这个过程是因为绘制屏幕尺寸各有不同,变换到规则观察体中更加方便操作。长方体非均匀缩放后变换为立方体肯定会导致绘制图形的拉伸导致图形的比例失调,但是不会扭曲,因为进行的是线性变换,在视口变化时映射到屏幕空间,也会通过反变换的方法重新恢复原有的比例。

正交投影

透视投影

透视投影与正交投影的区别在于观察体的不同,所以透视投影可以考虑将观察体变换为长方体,然后再进行一次正交投影变换。由于正交投影矩阵是已知的,那么求出观察体变换矩阵即可解决问题。

在视锥体中,可以观察到在变换过程中,近、远平面的z值是不变的,另外远平面的中心点在变换前后也是不变的。

如何定义透视投影的视锥:fov及宽高比

图形学必要的简单数学知识相关推荐

  1. 计算机图形学用到哪些概率知识,图形学所需的数学知识

    图形学所需的数学知识 "学习计算机图形学需要多少的数学?"这是初学者最经常问的问题.答案取决于你想在计算机图形学领域钻研多深.如果仅仅使用周围唾手可得的图形软件,你不需要知道多少数 ...

  2. 学习笔记——sklearn监督学习:回归(简单数学知识罗列)

    文章目录 一.数学优化 损失函数 SoftMax 损失 二.回归分析 1.最小二乘回归 2.岭回归 3.Logistics 回归 4.Lasso 回归 三.实例 1.Linear Regression ...

  3. 图形学相关的一些数学知识(链接)

    协方差: 如何通俗易懂地解释「协方差」与「相关系数」的概念? 协方差矩阵: [转]浅谈协方差矩阵 MCMC: 马尔可夫链蒙特卡罗算法(MCMC) Jacobian矩阵和Hessian矩阵: Jacob ...

  4. 代码画简单动物_[500行代码学懂OpenGL]之六数学知识

    数学知识 之前我们说有三个方向可以走 - 光.纹理.数学.然后我们简单看了一个光的例子来学习z-buffer和纹理,现在我们来看一下相关的数学知识.这些也很重要. 需要了解的概念包括: 矩阵是如何变换 ...

  5. 图形学中变换用到的数学知识

    变换 原文 Transformations 作者 JoeyDeVries 翻译 Django 校对 Meow J, BLumia 尽管我们现在已经知道了如何创建一个物体.着色.加入纹理,给它们一些细节 ...

  6. 只需要高中数学知识就可以入门计算机图形学啦

    计算机图形学是一个引人入胜的主题 .我们是如何将一些算法和几何数据转 变成<星球大战>(Star Wars)和<复仇者联盟>(the Avengers)等电影的特效,<玩 ...

  7. 现代图形学入门需要掌握的全部数学知识总结

    现代图形学入门需要掌握的全部数学知识总结 1 向量 1. 向量的加法 2. 向量的点乘Dot product 3. 向量的叉乘 1 叉乘在图形学中的用法: 2. 叉乘的属性 3 叉乘的坐标系计算方式 ...

  8. 3d数学基础:图形和游戏开发(第2版)_游戏引擎编程需要哪些基本数学知识?

    现今,想要从头写一个功能强大的3D引擎,个人的力量恐怕难以胜任,即使能力足够,时间恐怕也不允许.在这个美好的开源时代,你只需具备修改各种引擎的能力便足以满足开发游戏的各项需求.现代游戏引擎的复杂级别已 ...

  9. 游戏引擎编程需要哪些基本数学知识?

    现今,想要从头写一个功能强大的3D引擎,个人的力量恐怕难以胜任,即使能力足够,时间恐怕也不允许.在这个美好的开源时代,你只需具备修改各种引擎的能力便足以满足开发游戏的各项需求.现代游戏引擎的复杂级别已 ...

最新文章

  1. Django startproject的问题
  2. TMS320F28335之GPIO原理
  3. [AGC016B]Colorful Hats
  4. 让机器也拥有品味!时尚图像补全网络FiNet| ICCV 2019 Oral
  5. Setting Expires and Cache-Control: max-age headers for static resources in ASP.NET
  6. .net 创建计划任务开机后自动以管理员身份启动运行 win7 ~ win10
  7. ubuntu需要多大的固态硬盘_Ubuntu16.10 迁移到 SSD
  8. 讲个职友集(jobui)低PV的故事(评论)
  9. 关于nmap和traceroute在虚拟机里使用的问题
  10. uniapp - APP判断是否开启位置信息服务判断是否授权位置信息权限
  11. 中年人的崩溃从浏览器崩溃开始
  12. java通过QR生成二维码 (QRCodeUtils工具类)(HUTOOL生成二维码)
  13. 3dmax 建模插件 Rappa Tools 3 笔记
  14. 本软件仅供学习交流,如作他用所承受的法律责任一概与作者无关(下载使用即代表你同意上述观点)
  15. java.lang.IllegalArgumentException(求解决)
  16. 【VBA编程】VBA基础语法(二)
  17. IIS应用程序池自动回收
  18. Firefox扩展安装
  19. cv2 获取图形平均色调(H),饱和度(S),明度(V)
  20. 基于SSM的供应商管理系统

热门文章

  1. Java-HashSet详解
  2. Linux基本命令(1)
  3. 可爱的皮卡丘print代码
  4. 人肝HepG2细胞膜
  5. 什么是面向对象?谈谈对面向对象的理解?
  6. C++中的switch case 语句
  7. 挑战杯日记—数据采集与无线通讯
  8. CVE-2013-4547(Nginx文件名逻辑漏洞)
  9. Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录)
  10. 荣耀30pro系统_荣耀30系列怎么选 荣耀30、荣耀30Pro和荣耀30Pro+区别对比