1. 左右手坐标系

Unity使用的是左手坐标系,但是它的观察空间使用的是右手坐标系

                       

(Unity场景中)                                               (Unity视图空间)

2. 向量(vector)

2.1. 向量和标量(scalar)乘法:

2.2. 向量加减法:

2.3. 向量的模(magnitude)

2.4. 向量的点积(dot product)或内积(inner product)

几何意义
性质
a. 交换率: 
b. 结合标量乘法: 
c. 结合律:  
d. 点积自身为模的平方: 

2.5. 向量的叉积(cross product)或外积(outer product)

几何意义:两个向量进行叉积会得到一个同时垂直于这两个向量的新向量,向量方向根据左右手法则确定(根据所在的是左手还是右手坐标系)。
性质
a. 反交换律:

3. 矩阵(matrix)

3.1 与标量相乘

3.2 与矩阵相乘

3.3. 性质

a. 不满足交换率
b. 满足结合律: (AB)C = A(BC)

3.4.1 方块矩阵、方阵(square matrix)

3.4.2 对角矩阵(diagonal matrix)

3.4.3 单位矩阵(identity matrix)

一个特殊的对角矩阵。

3.4 转置矩阵(transposed matrix)

翻转原矩阵,原矩阵第i行变成了第i列,第j列变成了第j行。
性质:
a.
b.

4.5. 逆矩阵(inverse matrix)

不是所有的矩阵都可逆,如果一个方阵的行列式(determinant)不为0,那么它是可逆的。逆矩阵可以做针对于原矩阵的反向变换。
可逆(invertible)、非奇异的(nonsingular)。不可逆(noninvertible)、奇异的(singular)。
性质:
a. 逆矩阵的逆矩阵是原矩阵本身:
b. 单位矩阵的逆矩阵是它本身:
c. 转置矩阵的逆矩阵是逆矩阵的转置:
d.

4.6. 正交矩阵(orthogonal matrix)

如果一个方阵M和它的转置矩阵的乘积是单位矩阵的话,我们就说M是正交的。
性质:
a. 如果一个矩阵是正交的,那么它的转置矩阵和逆矩阵是一样的:
b. 如果一个矩阵是正交的,它的每一行都是单位向量且互相垂直(同样适用于每一列,因为如果M是正交矩阵的话,它的转置也是正交的)。
c. 只包含旋转的变换矩阵是正交矩阵。

4. 变换(transform)

4.1. 线性变换(linear transform)

指那些可以保留矢量加和标量乘的变换,旋转(rotate)、缩放(scale)、错切(shear)、镜像(mirroring、reflection)、正交投影(orthographic projection)等。
平移(translation)不是线性变换。

4.2. 仿射变换(affine transform)

合并线性变换和平移变换的变换类型,需要使用4x4的矩阵来表示,为此,我们需要把矢量扩展到四维空间下,这就是齐次空间坐标(homogeneous space)

4.3. 常用变换矩阵

平移变换(translation )

旋转变换(rotate)
放缩变换(scale)
透视变换(perspective projection transformation)
坐标系变换,存在2个空间,P父空间,C子空间,C的3个坐标轴在P下的表示为Xc、Yc和Zc,C的原点在P下的表示为Oc,点A在C下的坐标为Ac(a,b,c)。
如果变换向量,可以用3x3矩阵表示:
再如果Mc-p是正交矩阵,则

5. 法线变换

  • 需要用变换顶点的变换矩阵的逆转置矩阵来变换法线,才能确保法线的垂直性。
  • 如果变换矩阵是正交矩阵(只包含旋转变换的矩阵是正交矩阵),可以用变换顶点的矩阵变换法线。
  • 如果变换只包含旋转和统一缩放,可以使用来变换。

3D引擎的基础数学知识相关推荐

  1. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)

    通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...

  2. 关于如何学好游戏3D引擎编程的一些经验

    原帖地址:http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=2202&extra=page%3D1 此篇文章献给那些为了游 ...

  3. 如何学好游戏3D引擎编程(摘抄)

    网上看到,觉得很好,因此收藏一下,侵删. <如何学好游戏3D引擎编程> 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术 ...

  4. Unity引擎UI模块知识Tree

    Unity引擎在4.6版本之前是没有内置的UI解决方案的.当时最流行的就是NGUI的框架,目前主流的UI解决方案就是NGUI和UGUI,近几年来,更是以UGUI为主,同时也有团队开始使用FairyGU ...

  5. Python pyglet 自制3D引擎入门(一) -- 绘制几何体、创建3D场景

    Python作为目前较广泛的编程语言, 用于制作3D游戏可谓得心应手.本文讲解应用Python pyglet库绘制3D场景的入门知识. 下篇:Python pyglet 自制3D引擎入门(二) – 绘 ...

  6. (转)关于如何学好游戏3D引擎编程的一些经验

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 --阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...

  7. 如何学好游戏3D引擎编程

    <如何学好游戏3D引擎编程>     此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 --阿哲VS自己 QQ7 ...

  8. 如何学好游戏3D引擎编程的一些经验

    这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上.现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多.在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEB ...

  9. 3D引擎架构设计高级篇

    3D引擎架构设计最核心的技术包括:引擎框架设计,引擎内存管理,大场景加载以及卸载,引擎的渲染,模型骨骼插件:其他的模块还有粒子,AI,行为树,UI等等吧. 市场上对于引擎开发的需求也是比较大的,而且薪 ...

最新文章

  1. C++中内存分配、函数调用和返回值问题
  2. PetShop之ASP.NET缓存
  3. MongoDB命令--自用记录
  4. js uri解码_js进行URL编码(escape,encodeURI,encodeURIComponent)
  5. c#双缓冲绘图(不闪烁的几种方法)
  6. Linux部署Web应用程序超链接下载中文名称文件404问题解决办法
  7. 团队项目--设计类图
  8. 接力,智能指针也麻烦
  9. 大话项目管理工具之Confluence篇
  10. 30分钟快速上手Docker,看这篇就对了!
  11. 基于实现韦尔奇·鲍威尔法对图进行着色
  12. Mysql面试题(100+)
  13. vscode终端显示中文字符乱码解决
  14. namecheap 添加二级域名
  15. mac用什么软件测试硬盘好坏,谁说果粉不在意性能?6款macOS下硬盘测速软件介绍...
  16. 修改已经上线的小程序名称
  17. 进化:屌丝的互联网逆袭之路
  18. 这100 个网络基础知识,看完成半个网络高手
  19. flutter 九宫格菜单_flutter九宫格图片查看器
  20. c语言程序设计创新大作业,C语言程序设计大作业报告.pdf

热门文章

  1. php个人发展计划,教师个人发展计划
  2. node.js实现微信授权登录,最详细最简单小白教程。。
  3. 2.3.5 linux软件管理 :debian和RedHat体系常用软件安装: axel 安装
  4. atxserver运行没有反应_atxserver2 部署遇到一些问题
  5. “一带一路”国际商协会大会10月29日在京盛大开幕
  6. android转ios系统,王者荣耀安卓怎么转苹果系统 安卓转ios系统方法
  7. 豆瓣 9.0,评论人数过万的 9 本经典科技图书 | 码书排行榜
  8. fmt库需要使用-fPIC参数recompile
  9. 【运营小卖部】短视频剪辑,短视频拍摄教程,直播教程
  10. 抖音上的视频用什么软件做的?