libgdx: ModelInstance.transform.setToTranslation(..) 和 ModelInstance.transform.translate(..) 有什么区别?
libgdx: What is the difference between ModelInstance.transform.setToTranslation(..) and ModelInstance.transform.translate(..)?
有什么区别:
myModel.transform.SetToTranslation( *some Vector3* )
和
myModel.transform.translate( *some Vector3* )
(其中 myModel 的类型是 ModelInstance)
具体来说,这些操作的副作用是什么?
对我来说最重要的是,在哪些典型用例中您会使用一种方法而不是另一种方法?
SetToTranslation 将 4x4 矩阵设置为单位矩阵,然后将第四列设置为传入的翻译矩阵。
translate post 将矩阵与平移向量相乘。
没有花哨的词,这意味着 SetToTranslation 删除了所有旋转并将模型设置在您给它的坐标上,并且平移将模型从您与它相乘的当前位置移动。
当你想把一个模型放在一个特定的坐标上时,可以使用 SetToTranslation,而如果你想平滑地移动你的模型,translate 会更好。
setToTranslation
将矩阵设置为翻译。换句话说,它删除矩阵在调用之前进行的所有变换(例如任何平移、旋转和缩放),然后将其设置为具有指定值的平移矩阵。
translate
将 post-乘以 矩阵的当前变换与包含给定翻译的翻译矩阵,结果是:
transform.translate(x,y,z) == transform.mul(tempMatrix.setToTranslation(x,y,z))
使用 translate
(这是矩阵数学而不是 libgdx 特有的)的主要副作用是它之前的任何转换都可能(将)影响翻译。
这篇 post 可能对您有所帮助:http://badlogicgames.com/forum/viewtopic.php?f=11&t=17878&p=75338#p75338
有什么区别:
myModel.transform.SetToTranslation( *some Vector3* )
和
myModel.transform.translate( *some Vector3* )
(其中 myModel 的类型是 ModelInstance)
具体来说,这些操作的副作用是什么?
对我来说最重要的是,在哪些典型用例中您会使用一种方法而不是另一种方法?
SetToTranslation 将 4x4 矩阵设置为单位矩阵,然后将第四列设置为传入的翻译矩阵。
translate post 将矩阵与平移向量相乘。
没有花哨的词,这意味着 SetToTranslation 删除了所有旋转并将模型设置在您给它的坐标上,并且平移将模型从您与它相乘的当前位置移动。
当你想把一个模型放在一个特定的坐标上时,可以使用 SetToTranslation,而如果你想平滑地移动你的模型,translate 会更好。
setToTranslation
将矩阵设置为翻译。换句话说,它删除矩阵在调用之前进行的所有变换(例如任何平移、旋转和缩放),然后将其设置为具有指定值的平移矩阵。
translate
将 post-乘以 矩阵的当前变换与包含给定翻译的翻译矩阵,结果是:
transform.translate(x,y,z) == transform.mul(tempMatrix.setToTranslation(x,y,z))
使用 translate
(这是矩阵数学而不是 libgdx 特有的)的主要副作用是它之前的任何转换都可能(将)影响翻译。
这篇 post 可能对您有所帮助:http://badlogicgames.com/forum/viewtopic.php?f=11&t=17878&p=75338#p75338