Подтвердить что ты не робот

Как получить глобальное/мировое положение дочернего объекта?

Как получить глобальную позицию объекта Object3D внутри другого объекта Object3D?

Настройка:

var parent = new THREE.Object3D();
parent.position.set(100, 100, 100);

var child = new THREE.Object3D();
child.position.set(100, 100, 100);
parent.add(child);

scene.add(parent);

Примечания:

Я думал, что это будет способ сделать это:

console.log(child.localToWorld(parent.position));

... но он дает мне (100, 100, 100), а не (200, 200, 200).

4b9b3361

Ответ 1

Первый вызов

scene.updateMatrixWorld();

или в вашем примере достаточно вызвать

parent.updateMatrixWorld();

Затем извлеките положение мира

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

Однако на практике рендеринг вызывает updateMatrixWorld() для вас в каждом цикле рендеринга, поэтому вам не нужно.

EDIT: обновлено до трёх. js r.65