Three.js更新对象的矩阵和比例?

时间:2014-04-17 10:35:14

标签: three.js

我需要将对象从法线坐标转换为地球仪上的相对坐标。我已经计算了一个非常好的变换矩阵并将其设置为如下所示的对象。      Object.matrixAutoUpdate = false;      Object.matrix =我的矩阵; 它工作正常。但后来我需要在z上执行缩放。什么都没发生,我猜是因为我关闭了自动更新。所以我在改变比例后调用了updateMatrix()。比例确实发生了变化,但转换矩阵已更改为默认值。

我做错了吗?

顺便说一句,如果我不使用矩阵,并改变对象的向上矢量。价值永远不会改变。它总是0,1,0。

2 个答案:

答案 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因为它会根据你设置矩阵时没有改变的对象位置,比例,旋转信息来更新矩阵。