Really useful info - thanks for the help!
I think ultimately the problem was that I wasn't calling Object3D.build on the Animated3D's deserialized from raft's Bones system. That meant that Object3D.calcCenter was never called, meaning getCenter always returned 0,0,0, hence the arbitrary ordering.
I think ultimately the problem was that I wasn't calling Object3D.build on the Animated3D's deserialized from raft's Bones system. That meant that Object3D.calcCenter was never called, meaning getCenter always returned 0,0,0, hence the arbitrary ordering.