我有一个小组,当我拖放该小组时,只有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
请给我一个懒散的.. 如何更新矩阵并获得儿童的新价值?
答案 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