3. Donut

morph[f1_, f2_]  :=  (1  - auf)*f1  +  auf*f2
\(\(tor1 = \ {\((1 +  .5\ Cos[v])\)\ Cos[
              u + Pi/2], 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \((1 + \  .5 
                   Cos[v])\)\ Sin[
              u + Pi/2], 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(-Sin[v]\)\ \ \ Sin[2  u]};\)\)
\(\(tor2 = \ \ {\(( .5 +  .5\ Cos[v])\)\ Cos[
              u], 
\ \ \ \ \ \ \ \ 	\(( .5 + \  .5  Cos[v])\)\ Sin[
              u], 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  .5\ Sin[v]\ Sin[2  u]};\)\)
kug  = 
{ Sin[v]*Cos[u],  Sin[v]*Sin[u],  
          Cos[v]};

anim11[f1_, f2_] := 
Table[
          ParametricPlot3D[
morph[f1, f2] // 
              Evaluate, 
{u, 0, 2  Pi}, {v, 0, 
              Pi}, 
Boxed -> False, 
            Axes -> 
              False, 
LightSources -> 
{{{1, 0, 1}, 
                  RGBColor[ .1,  .2,  .9]}, 
{{1, 1, 1}, 
                  RGBColor[ .3,  .2,  .1]}, 
{{0, 1, 1}, 
                  RGBColor[ .6,  .4,  .1]}}, 
Background -> GrayLevel[ .9], 
SphericalRegion -> 
              True], 
 (*{auf, 0, 
              1  -  .05,  .05}*) 
{auf, 0, 
            1 -  .25,  .25}];

eins  =  anim11[kug, tor2];
zwei  =  anim11[tor2, tor1];
drei  =  anim11[tor1, kug];