我需要将对象从法线坐标转换为地球仪上的相对坐标。我已经计算了一个非常好的变换矩阵并将其设置为如下所示的对象。 Object.matrixAutoUpdate = false; Object.matrix =我的矩阵; 它工作正常。但后来我需要在z上执行缩放。什么都没发生,我猜是因为我关闭了自动更新。所以我在改变比例后调用了updateMatrix()。比例确实发生了变化,但转换矩阵已更改为默认值。
我做错了吗?
顺便说一句,如果我不使用矩阵,并改变对象的向上矢量。价值永远不会改变。它总是0,1,0。
答案 0 :(得分:1)
修改object.matrixWorldNeedsUpdate
时,您需要将true
设置为object.matrix
。
答案 1 :(得分:0)
如果你想使用对象矩阵,你将matrixAutoUpdate设置为false,这里是变换的代码,x,y,z序列的旋转,然后做缩放,最后的变换。
rM = new THREE.Matrix4().multiplyMatrices(new THREE.Matrix4().makeRotationY(rV.y), new THREE.Matrix4().makeRotationX(rV.x));
rM.premultiply(new THREE.Matrix4().makeRotationZ(rV.z));
object.matrix.copy(rM).scale(sV).setPosition(tV);
这里你不能使用updateMatrix
因为它会根据你设置矩阵时没有改变的对象位置,比例,旋转信息来更新矩阵。