(*Shells / cylinders around y-axis*)
(*Define two functions f1<f2 and bounds a<b over which they will be integrated*)

f1[x_]:=-(x-2)(x-4)(x-6)/3;
f2[x_]:=x+3;
{a,b}={2,6};
fineness=20;

shells=Table[RevolutionPlot3D[{k,s},{s,f1[k],f2[k]},Mesh->4,PlotStyle->Directive[Opacity[.5]],AxesLabel->{"x","z","y"}],{k,a+.01,b-.01,(b-a)/fineness}];
xmax=Max[Abs[a],Abs[b]];
ymin=Min[FindMinimum[{f1[x],a-1≤x&&x≤b+1},{x}][[1]],FindMinimum[{f2[x],a-1≤x&&x≤b+1},{x}][[1]]];ymax=Max[FindMaximum[{f1[x],a-1≤x&&x≤b+1},{x}][[1]],FindMaximum[{f2[x],a-1≤x&&x≤b+1},{x}][[1]]];
ListAnimate[Table[Show[ParametricPlot3D[{{t,0,f1[t]},{t,0,f2[t]}},{t,a-1,b+1},PlotRange->{{-(xmax+1),xmax+1},{-(xmax+1),xmax+1},{ymin,ymax}},AxesLabel->{"x","z","y"}],ParametricPlot3D[{0,0,t},{t,ymin-1,ymax+1},PlotRange->{{-(xmax+1),xmax+1},{-(xmax+1),xmax+1},{ymin,ymax}},AxesLabel->{"x","z","y"}],Part[shells,1;;j],ImageSize->400],{j,0,Length[shells],1}],3,AnimationRunning->False]

(*disks / washers around x-axis*)
(*Define two functions g1<g2 and bounds a<b over which they will be integrated*)

g1[x_]:=Sin[x]/1.5+2;
g2[x_]:=4;
{a,b}={1,7};
fineness=30;

washers=Table[RevolutionPlot3D[{k,s},{s,g1[k],g2[k]},RevolutionAxis->"X",Mesh->4,PlotStyle->Directive[Opacity[.5]],AxesLabel->{"x","z","y"}],{k,a+.01,b-.01,(b-a)/fineness}];
ymax=Max[Abs[Min[FindMinimum[{g1[x],a-1≤x&&x≤b+1},{x}][[1]],FindMinimum[{g2[x],a-1≤x&&x≤b+1},{x}][[1]]]],Abs[Max[FindMaximum[{g1[x],a-1≤x&&x≤b+1},{x}][[1]],FindMaximum[{g2[x],a-1≤x&&x≤b+1},{x}][[1]]]]];
ListAnimate[Table[Show[ParametricPlot3D[{{t,0,g1[t]},{t,0,g2[t]},{t,0,0}},{t,a-1,b+1},PlotRange->{{a-1,b+1},{-(ymax+1),ymax+1},{-(ymax+1),ymax+1}},AxesLabel->{"x","z","y"}],Part[washers,1;;j],ImageSize->400],{j,0,Length[washers],1}],3,AnimationRunning->False]