Minecraft 旋转约定
世界坐标系
| 轴 | 正方向 (+) | 负方向 (-) |
|---|---|---|
| X | 东方 | 西方 |
| Y | 上方 | 下方 |
| Z | 南方 | 北方 |
欧拉角
欧拉角格式为 (xRot, yRot)(pitch, yaw),在 Entity 中存储为两个 float 字段。
零欧拉角 (0, 0)
当 pitch = 0、yaw = 0 时,相机和实体都朝向南方(+Z)。
方向
| 角度 | 轴 | 正方向 | 负方向 |
|---|---|---|---|
| pitch (xRot) | X | 向下看 | 向上看 |
| yaw (yRot) | Y | 从上方看顺时针 | 从上方看逆时针 |
四元数(相机)
net.minecraft.client.Camera 内部使用了四元数。
恒等四元数朝向
恒等四元数(new Quaternionf())表示“不旋转”,即保持默认前方向向量。默认前方向在不同版本中不同:
| MC 版本 | 默认前方向 | 恒等四元数朝向 |
|---|---|---|
>= 1.21 | (0, 0, -1) | 北方(-Z) |
< 1.21 | (0, 0, 1) | 南方(+Z) |
四元数构造
所有版本均使用 YXZ 旋转顺序构造四元数,区别在于传入参数:
| MC 版本 | 构造方式 | pitch 符号 | yaw 偏移 |
|---|---|---|---|
>= 1.21 | rotationYXZ(PI - yaw, -pitch, roll) | 取反 | PI |
< 1.21 | rotationYXZ(-yaw, pitch, roll) | 不变 | 0 |
yaw 偏移用于补偿渲染约定(-Z 朝前)与 Minecraft 欧拉角约定(yaw = 0 朝南方 +Z)之间的差异。
这些差异只描述 Minecraft 的内部实现。Perspective API 的公共接口始终采用 +Z 朝前的统一约定,接入 API 的模组不应根据 Minecraft 版本自行增加偏移或翻转符号。