我想将已放置的对象放在新位置,但它从本地位置移动而不是全局位置。
this._scene.updateMatrixWorld();
this._scene.add(mesh);
var v1 = new THREE.Vector3();
v1.setFromMatrixPosition( mesh.matrixWorld );
mesh.position.set(v1.x +2, v1.y + 2, v1.z + 2);
答案 0 :(得分:3)
我为解决问题所做的工作:
每个网格都有一个几何属性。这就是为什么你可以调用mesh.geometry。 从这一点开始,我在我的网格周围创建了一个BoundingSphere。
mesh.geometry.computeBoundingSphere();
现在可以获得我的boundingSphere的世界位置,它同时也是我的网格的世界位置。
var vector = mesh.geometry.boundingSphere.center;
恭喜! 'vector'在你的网格的(x,y,z)中得到了中心世界位置。
只是澄清一下,'mesh'是一个THREE.Mesh对象。
答案 1 :(得分:0)
您是不是只是通过增量移动对象本身?我不确定你为什么需要参与矩阵?
mesh.position.set(mesh.position.x +2, mesh.position.y + 2, mesh.position.z + 2);
编辑...如果你需要使用矩阵,你需要设置matrixWorld。看看http://threejs.org/docs/#Reference/Core/Object3D.matrixWorld,但使用位置设定器将为你做繁重的工作。