我目前有以下代码:
const scene = new THREE.Scene()
const root = new THREE.Group()
scene.matrixAutoUpdate = false
root.matrixAutoUpdate = false
scene.add(root)
我把想要移动的对象放在root
节点下。接下来,我想使用Matrix4
问题是这没有效果:
root.matrix = translationMatrix
root.updateMatrixWorld()
以下内容适用于我的矩阵,但它将其应用于现有变换之上而不是覆盖它。
root.applyMatrix(translationMatrix)
root.updateMatrixWorld()
如何正确替换整个矩阵?
答案 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);