I think this happens because you assume the volume is centered on (0, 0, 0), which is a wrong assumption.
1- Compute the REAL volume center from the volume bounding box
var volume = new X.volume();
...
var center = [volume.bbox[0] + (volume.bbox[1]-volume.bbox[0])/2,
volume.bbox[2] + (volume.bbox[3]-volume.bbox[2])/2,
volume.bbox[4] + (volume.bbox[5]-volume.bbox[4])/2
]
...
2- Apply this center as translation to the objects of the scene
Hope this helps