I may have scanned somewhat briefly through your code, but the idea
with Scene.addGeometry is that the geometries you add, stay in the
same world position as you added them with, no matter how many you
add. So each time you add, both body and local geometry transform
changes, while geometry world space transforms stay the same.
When geometries are added to the same body, it will change its
position, but not its rotation. So if you add a geometry that has some
rotation, then the geometry world transform and body world transform
will surely be different.
Do not add geometry using methods in Body, only use methods defined in
Scene. Only one call to Scene.addGeoemtry per geometry instance should
be made.
Let me know if this helps
Morten