三维几何学基础

引言

今天给大家带来的是三维几何学基础,结合游戏工程讲解这些线性代数知识,包括三维坐标系统、向量与运算、矩阵与线性变换和四元数。

三维坐标系统

笛卡尔坐标系

  • 笛卡尔坐标系又称直角坐标系
  • 任何一点的坐标根据数轴上的对应点的坐标设定
  • 二维坐标系 (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

四元数