Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在three.js中更新组中每个子级的位置_Three.js - Fatal编程技术网

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

如何在three.js中更新组中每个子级的位置,three.js,Three.js,我有一个组,当我拖放该组时,只有组。位置正在更改。它的子对象的位置仍然是初始值。拖放后,它们不会改变。我将如何更新每个孩子的新位置 group=new THREE.Group(); group.add(mesh1);`enter code here` group.add(mesh2); group.add(mesh3); 翻译前假设 组位置: 位置:3.Vector3 x:0 y:0 z:0 group.children[0]。位置 x:-160.73611832689494 y:56.067

我有一个组,当我拖放该组时,只有
组。位置正在更改。它的子对象的位置仍然是初始值。拖放后,它们不会改变。我将如何更新每个孩子的新位置

group=new THREE.Group();
group.add(mesh1);`enter code here`
group.add(mesh2);
group.add(mesh3);
翻译前假设
组位置

位置:3.Vector3 x:0 y:0 z:0

group.children[0]。位置

x:-160.73611832689494 y:56.06755614280701 z:87.78444211930037

group.children[1].位置

x:-29.66267697047422 y:54.55312106758356 z:14.629093836992979

拖放后:

group.position

位置:3.Vector3 x:-74.16755189596836 y:0 z:-0.6893904394708485

group.children[0]。位置

x:-160.73611832689494 y:56.06755614280701 z:87.78444211930037

group.children[1].位置

x:-29.66267697047422 y:54.55312106758356 z:14.629093836992979

请给我一个建议。。
如何更新矩阵并获得儿童的新值?

首先-在最新的THREE.JS修订版(r71)中不再有三个.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();

在plnkr

中,组子位置位于局部空间,这意味着相对于父组。你知道
getWorldPosition()
吗?不知道。你知道任何解释世界坐标和局部坐标以及如何更新它们的教程吗?谢谢@SET。我理解你的例子。但我需要做的是。在翻译后从组中移除框,并且仍然保留它的新位置。console.log(group.position、box.position、vector);组。移除(盒子);场景。添加(框);当我这样做的时候,这个盒子会回到它原来的位置。我想把它保持在这个链接@SET]@JerrinaPaul中的翻译位置chek script.js,用
sphere.position.copy(vector)取消注释行你能在这个程序中检查这个链接吗?我试图通过点击某个对象并将其拖动到其他位置来选择某个对象。第一次它会起作用。如果我点击某个已经移动到其他位置的对象,它将返回到它的原始位置。我无法理解如何操作更新世界坐标以解决我的问题@SET@JerrinaPaul - . 不管怎样-你的问题在于凌乱的代码,而不是更新位置或父/子操作。