有什么区别:
myModel.transform.SetToTranslation( *some Vector3* )
和
myModel.transform.translate( *some Vector3* )
(其中 myModel 的类型为 ModelInstance )
具体来说,这些操作的副作用是什么?
最重要的是,对于我来说,使用一种方法而不是另一种方法的典型用例是什么?
答案 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,而如果您想要平滑地移动模型,则转换效果会更好。