引言
今天给大家带来的是三维几何学基础,结合游戏工程讲解这些线性代数知识,包括三维坐标系统、向量与运算、矩阵与线性变换和四元数。
三维坐标系统
笛卡尔坐标系
- 笛卡尔坐标系又称直角坐标系
- 任何一点的坐标根据数轴上的对应点的坐标设定
- 二维坐标系 (x, y)
- 三维坐标系 (x, y, z)
左右手坐标系
名称 | 类型 | 坐标系 |
---|---|---|
DirectX 3D | 图形API | 左手坐标系 |
OpenGL | 图形API | 右手坐标系 |
Unity | 游戏引擎 | 左手坐标系 |
Unreal | 游戏引擎 | 左手坐标系 |
3DMax | 3D工具 | 右手坐标系 |
Maya | 3D工具 | 右手坐标系 |
局部坐标系
世界坐标系
世界坐标系是 3D 世界的基础坐标系。在 Unity 引擎中 Transform 组件用于描述这种关系:
Transform.localScale
Transform.localRotation
Transform.localPosition
Transform.localToWorldMatrix
视空间
视空间也称观察空间或摄像机空间,摄像机空间就是将对象的世界空间的坐标(旋转、平移)转换为摄像机视野前面的坐标。
在 Unity 引擎中 Camera 组件的 Camera.worldToCameraMatrix
帮我们把世界空间的位置变换到相机空间中。
裁剪空间与设备坐标
裁剪空间通过投影矩阵将物体从观察空间转换到裁剪空间,并转换到制定范围内的设备坐标系中,最终映射到屏幕空间。
3D 物件经过投影矩阵的变换,物体发生变形,距离相机的距离显示为近处大远处小的样子。
向量与运算
向量
- 向量通常被标识为一个带箭头的有向线段,线段的长度表示向量的大小(或者模长),向量的方向即箭头所指的方向
- 可表示成 $\vec{a}$ 或 $\vec{AB}$
向量运算
详见 GAMES101 Review of Linear Algebra。
矩阵与线性变换
详见 GAMES101 Review of Linear Algebra。