如何在三js对象3D上设置绝对变换



我当前有以下代码:

const scene = new THREE.Scene()
const root = new THREE.Group()
scene.matrixAutoUpdate = false
root.matrixAutoUpdate = false
scene.add(root)

我将要在root节点下移动的对象。接下来,我想使用Matrix4

将根节点设置为3D空间中的某个位置

问题是没有效果:

  root.matrix = translationMatrix
  root.updateMatrixWorld()

和以下是我的矩阵的应用,但是它将其应用于现有变换的顶部而不是覆盖它。

  root.applyMatrix(translationMatrix)
  root.updateMatrixWorld()

如何正确替换整个矩阵?

研究代码表明 applyMatrix()将矩阵分解为位置,四元和比例。手动设置这些属性可能很重要:

root.matrix = translationMatrix;
root.matrix.decompose(root.position, root.quaternion, root.scale);

另一件事:当matrixAutoUpdatematrixWorldNeedsUpdate设置为false时,updateMatrixWorld()不会做任何事情。将true作为force参数传递,以更新matrixWorld

root.updateMatrixWorld(true);

最新更新