別の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)ではない。
最初の電話
_scene.updateMatrixWorld();
_
またはあなたの例では、呼び出すだけで十分です
_parent.updateMatrixWorld();
_
次に、世界の位置を抽出します
_var vector = new THREE.Vector3();
vector.setFromMatrixPosition( child.matrixWorld );
_
ただし、実際には、レンダラーは各レンダーループでupdateMatrixWorld()
を呼び出すため、ユーザーが行う必要はありません。
編集:three.js r.65に更新
Threejsr89では、 Object3D.getWorldPosition
。いつ追加されたのかわかりません。