square[n_]:=(n^2)
norm[a_,b_,c_]:=Sqrt[Plus@@square/@{a,b,c}]
squish1[a_,b_,c_,theme_]:=
Table[
ParametricPlot3D[
{t a/norm[a,b,c]+(1-t) a,t b/norm[a,b,c]+(1-t) b,t c/norm[a,b,c]+(1-t) c},
{u,0,2Pi},{v,0,2Pi},
PlotRange->PlotRange[ParametricPlot3D[{a,b,c},{u,0,2Pi},{v,0,2Pi}]],PlotTheme->{theme}],
{t,0,1,0.05}]
squish[a_,b_,c_,theme_]:=Import[Export["temp.gif",Flatten@{squish1[a,b,c,theme],Reverse@squish1[a,b,c,theme]},AnimationRepetitions->5000,AnimationDirection->ForwardBackward],"Animation"]

For example, this is fun for tori.

squish[(3+Cos[v]) Sin[u],(3+Cos[v]) Cos[u],Sin[v],"Minimal"]

squish[(3+Cos[v]) Sin[u]+3,(3+Cos[v]) Cos[u],Sin[v],"Web"]