3D游戏开发所需的数学基础——笛卡尔坐标系

很多人会觉得图形学中的数学复杂难懂。的确,一些数学模型在初学者看来晦涩难懂。但很多情况下,我们需要打交道的只是一些基础的数学运算。

笛卡尔坐标系

在游戏制作中,我们使用数学绝大多数是用于计算位置,距离和角度等信息。而这些计算都是在笛卡尔坐标系下进行的。

1. 二维笛卡尔坐标系

一个二维笛卡尔坐标系包含两部分信息:

  1. 原点(它是整个坐标系的中心)。
  2. 两条过原点的互相垂直的矢量,即X轴和Y轴。也被称为该坐标系的基矢量
    下图显示了一个二维笛卡尔坐标系:
    在这里插入图片描述
    注意: 虽然上图的X轴和Y轴分别是水平指向右和垂直指向上的,这并不是必须的。把上面的坐标系整体进行旋转,指向取反等都是可以的,
    例如:OpenGLDirectX就使用了不同的二维坐标系,如下图所示:
    在这里插入图片描述

2. 三维笛卡尔坐标系

在三维笛卡尔坐标系中,我们需要定义三个坐标轴和一个原点。
这三个坐标轴被称为该坐标系的基矢量
如下图所示:
在这里插入图片描述
通常情况下,但这三个坐标轴之间是相互垂直且长度为1,我们称这样的基矢量为标准正交基(orthonormal basis),但这不是必须的。
有些坐标系中坐标轴之间相互垂直但长度不为1,这样的基矢量被称为正交基(orthogonal basis)。

和二维笛卡尔坐标系类似,三维笛卡尔坐标系中的坐标轴的方向也不是固定的。由此导致了两种不同类型的坐标系:左手坐标系(left-handed coordinate space)和右手坐标系(right-handed coordinate space)。

3. 左手坐标系和右手坐标系

为什么在三维笛卡尔坐标系中要区分左手坐标系和右手坐标系,而二维中就没有呢?

这是因为在二维笛卡尔坐标系中,虽然X轴和Y轴的指向可能不同,但可以通过一些旋转操作来使它们的坐标轴指向相同,由此来看,所有的二维笛卡尔坐标系都是等价的。

但对于三维笛卡尔坐标系,靠这种旋转有时并不能使两个不同朝向的坐标系重合。也就是说,三维笛卡尔坐标系并不都是等价的。因此,就出现了两种不同的三维坐标系:左手坐标系和右手坐标系。

如果两个坐标系具有相同的旋向性(handedness),那么我们就可以通过旋转的方法来让它们的坐标轴指向重合。而左手坐标系和右手坐标系具有不同的旋向性,因此无法通过旋转来重合坐标轴指向。

至于为什么要叫做左手坐标系和右手坐标系?是因为,我们可以利用我们的双手来模拟判断一个坐标轴的旋向性。
可以像下图所示一样,伸出我们的双手来试验一下:
在这里插入图片描述
除了坐标轴的朝向不同之外,左手坐标系和右手坐标系对于正向旋转的定义也不同。

例如,在空间中有一条直线和一个点,要把这个点以该直线为旋转轴旋转30°,我们是应该往哪个方向旋转呢?
在左手坐标系中这个旋转正方向是由左手法则定义的,而在右手坐标系中则是有右手法则定义的(同高中物理学到的左手法则和右手法则)。

可以像下图所示一样,伸出我们的双手来试验一下:
举起对应的左右手,握拳,伸出大拇指让它指向旋转轴的正方向,那么旋转的正方向就是剩下的四个手指弯曲的方向。
在这里插入图片描述
左右手坐标系之间是可以转换的,最简单的方法就是把其中的一个轴反转,并保持其它两个轴不变。

4. 一些软件工具引擎的坐标系

软件工具引擎 类型 轴向 坐标系
Unity 3D应用开发 Y轴向上 左手坐标系
LightWave3D 3D动画制作 Y轴向上 左手坐标系
ZBrush 3D建模 Y轴向上 左手坐标系
CINEMA 4D 3D特效 Y轴向上 左手坐标系
Babylon.js 3D应用开发 Y轴向上 左手坐标系
Unreal Engine 3D应用开发 Z轴向上 左手坐标系
Three.js 3D渲染引擎 Y轴向上 右手坐标系
MAYA 3D动画 Y轴向上 右手坐标系
MODO 3D建模 Y轴向上 右手坐标系
Houdini 3D特效 Y轴向上 右手坐标系
GODOT 3D游戏 Y轴向上 右手坐标系
3DS MAX 3D建模 Z轴向上 右手坐标系
Blender 3D建模 Z轴向上 右手坐标系
AutoCAD 3D建模 Z轴向上 右手坐标系

Three.js使用的是右手坐标系,这是源于OpenGL默认情况下,也是右手坐标系。而WebGL是基于OpenGL的。
Babylon.js默认使用的是左手坐标系。(因为Babylon.js 最初是基于 DirectX 原则设计的,DirectX是左手坐标系)
可以通过代码设置scene.useRightHandedSystem = true;把它改为右手坐标系。
在这里插入图片描述
在这里插入图片描述

下一篇:3D游戏开发所需的数学基础——点和矢量

猜你喜欢

转载自blog.csdn.net/weixin_40693643/article/details/127419230