如何在three.js中更新组中每个孩子的位置

时间:2015-09-02 12:42:25

标签: three.js

我有一个小组,当我拖放该小组时,只有group.position正在发生变化。它的孩子的位置是初始值。拖放后它没有变化。我如何更新每个孩子的新职位?

group=new THREE.Group();
group.add(mesh1);`enter code here`
group.add(mesh2);
group.add(mesh3);

假设在翻译之前 group.postion

职位:THREE.Vector3 x:0 y:0 z:0

group.children[0].position

x:-160.73611832689494 是:56.06755614280701 z:87.78444211930037

group.children[1].position

x:-29.662676970474422 是:54.55312106758356 z:14.629093836992979

拖放后

group.postion

职位:THREE.Vector3 x:-74.16755189596836 y:0 z:-0.6893904394708485

group.children[0].position

x:-160.73611832689494 是:56.06755614280701 z:87.78444211930037

group.children[1].position

x:-29.662676970474422 是:54.55312106758356 z:14.629093836992979

请给我一个懒散的.. 如何更新矩阵并获得儿童的新价值?

1 个答案:

答案 0 :(得分:0)

首先 - 在最新的THREE.JS修订版(r71)中没有更多的THREE.Group。但是,您可以使用THREE.Object3D来对对象进行分组:

var group=new THREE.Object3D();
group.add(box);
group.add(sphere);
scene.add(group);

接下来,由于您为组进行翻译 - 对象的本地位置(在该组内)不会更改。如果你需要获得子对象的全局位置,你可以 得到它:

var vector = new THREE.Vector3();
vector.setFromMatrixPosition( box.matrixWorld );

或更简单:

box.matrixWorld.getPosition();

here is a simple example在plnkr