旋转的表示方式
在本模组的公共接口中,旋转的表示方式始终一致,与 Minecraft 版本无关。
欧拉角
当用向量表示欧拉角时,各维度含义如下:
| 维度 | 含义 | 正方向 |
|---|---|---|
| x | 俯仰角 pitch | 向下转动 |
| y | 偏航角 yaw | 从上方俯视时是顺时针旋转 |
| z | 滚转角 roll | 绕视线方向顺时针旋转,也就是让画面逆时针旋转 |
如果是二维向量,将 z 视为0。
零点
零欧拉角 (pitch, yaw, roll) = (0, 0, 0) 表示的朝向:
| 方向 | 方向向量 |
|---|---|
| Forward | (0, 0, 1) |
| Up | (0, 1, 0) |
| Left | (-1, 0, 0) |
提示
在本模组的公共接口中,欧拉角的约定与 Minecraft 源码中实体和相机的欧拉角完全一致,至少在 Minecraft 26.2 及以下是如此,在未来的版本中大概率也是如此。
四元数
零点
恒等四元数(虚部为0,实部为1)表示的朝向和零欧拉角一致:
| 方向 | 方向向量 |
|---|---|
| Forward | (0, 0, 1) |
| Up | (0, 1, 0) |
| Left | (-1, 0, 0) |
一律使用单位四元数。
提示
在 Minecraft 中,相机 net.minecraft.client.Camera 会根据自身的欧拉角计算对应的四元数用于渲染,在 1.21 以下,它以南方(Z轴正向)作为恒等四元数的朝向,在 1.21 及以上则是北方(Z轴负向)。
本模组的公共接口采用 +Z 作为初始旋转的朝向是为了对齐欧拉角零点约定。
旋转顺序
当从欧拉角构造四元数时,采用 Y X Z 的顺序。
单位向量
用一个从起点指向终点的单位向量可以表示朝向,但无法表示滚转角
从欧拉角或四元数转换到该格式时会丢失 roll 信息。
标识符命名约定
- 使用欧拉角时,在标识符中使用后缀表示其单位
Rad弧度Deg角度