Hiya TV5, welcome to the forum… good to have you with us.
We REALLY like BabylonJS Playground demos that reproduce the problem… so we helpers can team-up and be better helpers.
So, I found one, already created by another… https://www.babylonjs-playground.com/#13C4ZS#2
In lines 23-25, I put a little Y-axis animator on the sword model… to show that its origin or pivotPoint is not positioned in the center of the mesh vertex points. I predict that if YOU rotate your mesh in a similar way, it would ALSO make a big circle like our sword is doing.
If the pivotPoint/origin were located in the center of the mesh’s “volume”, the sword would be spinning more “around itself” and not make such a big circle.
These origins/pivots are created in the modeling software, and, like the sword in the demo, it is common that they arrive in BJS scenes… with an offset origin/pivot.
Now, I’m a beginner at re-centering pivotPoints on imported mesh… but there are other experts nearby that can help, and so can this section of BabylonJS docs, perhaps.
You can click on the sword, and see the GizmoManager activate… at the CURRENT origin/pivot-point of the mesh… which is not centered on mesh volume-area whatsoever.
I will let you study/test the pivots documentation link above, and/or wait for smarter people than I… to help “center-up” the origin/pivotPoint… with the mesh’s volume. I am not very good-at doing that… so I will watch and learn, too. I think we use setPivotMatrix() for that, but I always struggle with determining the parameters (how much to move it, and in which directions)… for setPivotMatrix and setPivotPoint.
I hope I have been helpful.