The axis position is based on the geometry location relative to its original position on export from the program used to generate the model, you’ll need to center your actual geometry to achieve the result you’re after.
Object3D have not geometry inside. The geometry is inside the internal mesh that it contains. If I try to aplly it solution with traverse mesh objects, the Object3D changes and it become unseless
your exported model is 100x too big. The flag mesh is a heavily nested object inside 5 “null” objects that are all at 0,0,0
this is a bit unnessicary but in this case you can translate any of the root.children.position.y by -boxSize / 2 and then move your root up by boxSize / 2 although this leaves your root node not at 0,0,0 like so…
i’ve editied this model by deleting all of the unnessicary “null” parent objects so it won’t be the same as your setup, i’d recomend to sort out your scene graph as to not have this many nested objects before your mesh and then move your object to the centered 0,0,0 position in blender and apply all transforms before exporting… moving things around would be much easier in this case and allow you to center the actual geometry to the parent object in three. having a good layout and understanding of the scene graph before exporting is quite essential to making transformations and translations later on in code…