如何进行矩阵转换操作链?

时间:2019-05-09 19:07:36

标签: three.js

为什么在makeTranslation对象上链接matrix方法无效?

      boxMesh.matrixAutoUpdate = false
      boxMesh.matrix.makeTranslation(30, 0, 0)
      boxMesh.matrix.makeTranslation(30, 0, 0)

网格在 x 轴上仅移动30个单位,而不是60

但是当我使用applyMatrix方法时,一切都会按预期进行:

      boxMesh.applyMatrix(new THREE.Matrix4().makeTranslation(30, 0, 0))
      boxMesh.applyMatrix(new THREE.Matrix4().makeTranslation(30, 0, 0))

1 个答案:

答案 0 :(得分:2)

Matrix4.makeTranslation()创建一个纯翻译矩阵。现有的所有矩阵元素都将被覆盖。因此,该方法无意将转换应用于现有的转换矩阵。

Object3D.applyMatrix()的工作原理不同,因为它将给定矩阵与对象的局部变换矩阵相乘。这导致给定和现有转换的组合。

three.js R104