3D引擎通常如何处理对象旋转? (画报)

时间:2010-10-11 20:42:47

标签: 3d rotation coordinates angle

我正在为我正在开发的游戏构建快速3D引擎。

目前我正在通过围绕全局轴Y,X然后Z旋转来处理3D对象的旋转。这是正确的方法,还是应该围绕其局部轴旋转对象?

你推荐哪个以及为什么?

如果局部轴方法是正确的方法,是否必须使用3D 3x3或4x4矩阵来正确计算旋转?怎么样?

alt text http://i51.tinypic.com/2417aqc.png

3 个答案:

答案 0 :(得分:1)

4x4 matrices为您提供更多灵活性。例如,您可以通过矩阵乘法连接几个转换(平移,旋转等)。

答案 1 :(得分:0)

你想要完成什么?如果要查看对象“旋转”,则应对本地原点执行旋转。另一方面,围绕全局原点的旋转将导致对象“围绕”全球原点。

请参阅有关转换订单here的讨论。

答案 2 :(得分:0)

确实没有正确的轮换顺序。如果您正在制作自己的游戏引擎,订单真的取决于您。

但是,并不是说你不能选择与其他游戏引擎保持一致。例如,Unity以Z,X,Y的顺序应用欧拉角旋转。(source)我无法确认100%,但我对Unity的经验让我相信它是全球使用的轴,不是本地的。

如果你采用其他答案中提到的方法并连接4x4旋转矩阵,你可能会得到局部轴行为。

但实际上,如果你想避免所有这些问题,你应该只是了解四元数......