如何获得对象的世界位置(Three.js)

时间:2016-03-03 14:05:41

标签: javascript three.js

我想将已放置的对象放在新位置,但它从本地位置移动而不是全局位置。

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);

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,但使用位置设定器将为你做繁重的工作。