三维几何学基础

引言

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

三维坐标系统

笛卡尔坐标系

  • 笛卡尔坐标系又称直角坐标系
  • 任何一点的坐标根据数轴上的对应点的坐标设定
  • 二维坐标系 (x, y)
  • 三维坐标系 (x, y, z)

左右手坐标系

名称类型坐标系
DirectX 3D图形API左手坐标系
OpenGL图形API右手坐标系
Unity游戏引擎左手坐标系
Unreal游戏引擎左手坐标系
3DMax3D工具右手坐标系
Maya3D工具右手坐标系

局部坐标系

世界坐标系

世界坐标系是 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

四元数