How do I change the axis of rotation for a 3d model?

I have an object that starts out with non-zero rotation coordinates. I’d like to rotate the object around it’s “spine”. The center (pivot point) of the object is fine, I’d like to rotate a 3d object around an axis that is not parallel to the x, y, or z axis.

For example, if I start out with a tilted lollipop and I try to rotate around the y-axis, the lollipop spins around like a fan blade. I’d like the stick of the lollipop to remain stationary, and the lollipop head to rotate around the axis created by the lollipop stick. Is there any way to do this?

You can’t change the pivot point or axis orientations inside Unity. But you can create a new empty gameobject, place your model inside and move/rotate it inside so that it behaves like you want.

If the object is tilted using its transform in Unity and the original model was aligned with the axes, you can just rotate the object relative to it’s local axes using transform.Rotate(). If the original model is tilted, then you have to create an empty parent object and rotate the object inside it so that the parent has the axes you want relative to the model.