对于适当的世界矩阵,将比例,旋转和平移矩阵相乘的正确顺序是什么?


62

如果这很重要,则假定DirectX为平台。(肯定不是)

假设我有一个合适的比例尺,旋转和平移矩阵,我按什么顺序将它们相乘以得出一个合适的世界矩阵,为什么?

“适当”的意思是“我可以将它们直接放入DirectX并获得最常用的3D框架。”


6
这是 “旋转然后翻译”(旋转)与“翻译然后旋转”(绕轨道)的解释
bobobobo

链接很好,但是错误很小。它应该是滚动效果,而不是自旋,因为球体倾向于通过平移而远离其位置(保留在轴上)。
infoclogged

Answers:


77

通常是比例尺,然后旋转,最后平移。使用矩阵符号(即,T表示平移矩阵,R表示旋转矩阵,S表示缩放矩阵)将为:

T * R * S

但是,如果要围绕某个点旋转对象,则是缩放,点平移,旋转以及最后是对象平移。

原因:首先,您要缩放对象,以便翻译正常工作。然后旋转轴,以便在调整后的轴上进行平移。最后,将对象平移到其位置。

在OpenGL中,您可以使用gluLookAt在一次调用中获得完整的相机转换。DirectX可能也有类似的要求。


11
记住,如果要围绕中心进行变换,则必须首先平移以使中心偏移在原点上,然后按照user392858的说明进行操作,然后再次将其平移到原点之外。通常,但这仅在2D中是必需的,在该2D中,您有一些精灵在原点处位于左上方。
工程师

大。:)现在,我只需要弄清楚为什么我的模型现在在水平视图中反转,而在垂直视图中需要将定向光上的点积反转。它过去没有这样做,然后我修正了一些数学方法……
纳尔夫·老鼠

请注意,我讨厌放错地方的负面信号。无论如何,谢谢,您可以考虑解决此问题。:)
Narf the Mouse 2011年

没问题,总是很乐意提供帮助。
拉斐尔R.11年

2
据我所知,@ Matthias取决于您如何乘以要转换的向量。如果乘以M * v,则答案是相反的。
bialpio '16

-4

平移旋转和缩放是执行操作的顺序


-5

我确实认为这是翻译轮换和拨号


2
除了现有答案外,没有提供更多解释。
DMGregory
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.