libgdx:ModelInstance.transform.setToTranslation(..)和ModelInstance.transform.translate(..)之间有什么区别?

时间:2015-07-06 21:12:20

标签: libgdx vector-graphics

有什么区别:

myModel.transform.SetToTranslation( *some Vector3* )

myModel.transform.translate( *some Vector3* )

(其中 myModel 的类型为 ModelInstance

具体来说,这些操作的副作用是什么?

最重要的是,对于我来说,使用一种方法而不是另一种方法的典型用例是什么?

2 个答案:

答案 0 :(得分:7)

setToTranslation将矩阵设置为翻译。换句话说,它会删除矩阵在调用之前所具有的每个变换(例如,任何平移,旋转和缩放),然后将其设置为具有指定值的平移矩阵。

translate使用包含给定翻译的翻译矩阵对矩阵的当前变换进行后乘,从而产生:

transform.translate(x,y,z) == transform.mul(tempMatrix.setToTranslation(x,y,z))

使用translate(矩阵数学而不是特定于libgdx)的主要副作用是它之前的任何变换都可能(将)影响翻译。

这篇文章可能对您有所帮助:http://badlogicgames.com/forum/viewtopic.php?f=11&t=17878&p=75338#p75338

答案 1 :(得分:3)

SetToTranslation将4x4矩阵设置为单位矩阵,然后将第四列设置为传入的转换矩阵。

翻译文章将矩阵与翻译向量相乘。

如果没有花哨的单词,这意味着SetToTranslation会移除所有旋转并在您给它的坐标上设置模型,并且平移会将模型从它的当前位置移动,这是您将其乘以的。

当您想要将模型放在特定坐标上时,可以使用SetToTranslation migth,而如果您想要平滑地移动模型,则转换效果会更好。