如何在Threejs Object3D上设置绝对变换?

时间:2017-11-27 00:15:23

标签: three.js

我目前有以下代码:

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()

如何正确替换整个矩阵?

1 个答案:

答案 0 :(得分:0)

查看代码显示applyMatrix()将矩阵分解为位置,四元数和比例。手动设置这些属性可能很重要:

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

另一件事:当updateMatrixWorld()matrixAutoUpdate设置为matrixWorldNeedsUpdate时,false将不会执行任何操作。将true作为force参数传递给更新matrixWorld

root.updateMatrixWorld(true);