My understanding of how positions work may be off, as they are not behaving the way I anticipated. When I create two Object3Ds, I would expect to be able to set the position property of the second one as a reference to the first so that it follows it, but it doesn't seem to be working as expected:
var foo = new THREE.Object3D();
foo.position = new THREE.Vector3(100, 200, 300);
var bar= new THREE.Object3D();
bar.position = foo.position;
console.log(foo.position); //{100, 200, 300}
console.log(bar.position); //{0, 0, 0}
What am I missing in this scenario? Another approach involves creating a new Vector3:
var foo = new THREE.Object3D();
foo.position = new THREE.Vector3(100, 200, 300);
var bar= new THREE.Object3D();
bar.position = foo.position.copy();
console.log(foo.position); //{100, 200, 300}
console.log(bar.position); //{100, 200, 300}
This method creates a new Vector3, which works only until foo is moved - after which bar.position needs to be updated again.
(The code above has not been tested!)