我当前有以下代码:
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()
如何正确替换整个矩阵?
研究代码表明 applyMatrix()
将矩阵分解为位置,四元和比例。手动设置这些属性可能很重要:
root.matrix = translationMatrix;
root.matrix.decompose(root.position, root.quaternion, root.scale);
另一件事:当matrixAutoUpdate
或matrixWorldNeedsUpdate
设置为false
时,updateMatrixWorld()
不会做任何事情。将true
作为force
参数传递,以更新matrixWorld
:
root.updateMatrixWorld(true);