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 偏移用于补偿 OpenGL 约定(-Z 朝前)与 Minecraft 约定(yaw=0 朝 +Z 南方)之间的差异。