我正在为我正在开发的游戏构建一个快速的 3D 引擎。
目前我正在通过围绕全局轴 Y、X 然后 Z 旋转来处理 3D 对象的旋转。这是正确的方法,还是应该围绕其局部轴旋转对象?
你推荐哪个,为什么?
如果局部轴方法是正确的方法,是否必须使用 3D 3x3 或 4x4 矩阵来正确计算旋转?如何?
我正在为我正在开发的游戏构建一个快速的 3D 引擎。
目前我正在通过围绕全局轴 Y、X 然后 Z 旋转来处理 3D 对象的旋转。这是正确的方法,还是应该围绕其局部轴旋转对象?
你推荐哪个,为什么?
如果局部轴方法是正确的方法,是否必须使用 3D 3x3 或 4x4 矩阵来正确计算旋转?如何?
4x4 矩阵为您提供更大的灵活性。例如,您可以通过矩阵乘法连接多个变换(平移、旋转等)。
你想达到什么目的?如果您想查看对象“旋转”,则应围绕本地原点执行旋转。另一方面,围绕全局原点的旋转将导致对象“围绕”全局原点。
查看有关转换顺序的讨论here以获取说明。
确实没有正确的旋转顺序。如果您正在制作自己的游戏引擎,那么顺序完全取决于您。
但是,这并不是说您不能选择与其他游戏引擎保持一致。例如,Unity 以 Z、X、Y 的顺序应用欧拉角旋转。(来源)我无法确认 100%,但我使用 Unity 的经验让我相信这是使用全局轴,而不是局部轴。
如果您采用其他答案中提到的方法并连接 4x4 旋转矩阵,您可能会得到局部轴行为。
但实际上,如果你想避免所有这些问题,你可能应该只学习四元数......