This uses the frustum, and disects its foreground path into segments that can be used for clippings.
```
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc,3dtools}%https://github.com/marmotghost/tikz-3dtools
% these are used to disect the foreground paths of the frustum
\newcounter{ipath}
\tikzset{step ipath/.code={\stepcounter{ipath}},
save multiple paths/.style={step ipath,
save named path={#1-\number\value{ipath}}
}}
\begin{document}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\foreach \Angle in {60,65,...,120,115,110,...,65}
{\begin{tikzpicture}[3d/install view={phi=110,psi=0,theta=\Angle},
same bounding box=A,
line cap=round,line join=round,fill opacity=0.5,
declare function={a=1;r=a*(3+sqrt(5))/2;rs=sqrt(a*r);h=2*rs;R=r;}]
\setcounter{ipath}{0}
\path[3d/visible/.append style={save multiple paths=F,on layer=foreground}]
pic{3d/frustum={R=R,r=a,h=h}};
\path (0,0,h/2) coordinate (I);
\pgfmathtruncatemacro{\itest}{1+sign(screendepth(0,0,1))}
\typeout{\itest}
\ifcase\itest
\draw[3d/screen coords,3d/hidden,ball color=blue] (I) circle[radius=rs];
\begin{scope}
\clip[even odd clip,use named path=F-2,generous outside path];
\fill[left color=gray!80!black,right color=gray!60!black,
middle color=white,shading angle=70,use named path=F-1];
\end{scope}
\fill[gray,use named path=F-2];
\begin{scope}
\clip[use named path=F-2];
\draw[3d/screen coords,3d/visible,ball color=blue] (I) circle[radius=rs];
\end{scope}
\or
\draw[3d/screen coords,3d/hidden,ball color=blue] (I) circle[radius=rs];
\fill[left color=gray!80!black,right color=gray!60!black,
middle color=white,shading angle=70,use named path=F-1];
\or
\begin{scope}
\clip[even odd clip,use named path=F-2,generous outside path];
\draw[3d/screen coords,3d/hidden,ball color=blue] (I) circle[radius=rs];
\fill[left color=gray!80!black,right color=gray!60!black,
middle color=white,shading angle=70,use named path=F-1];
\end{scope}
\fill[gray,use named path=F-2];
\begin{scope}
\clip[use named path=F-2];
\draw[3d/screen coords,3d/visible,ball color=blue] (I) circle[radius=rs];
\end{scope}
\fi
\end{tikzpicture}}
\end{document}
```
![ani.gif](/image?hash=166e8f612dca16ee65aab399d59aba0d6f61560ee63223b5bdd85afba0758d0b)
P.S. This animated gif does not have the glitches which many of my previously posted animations have (but it is still far from perfect). To remove the glitches, I used a conversion script of the form
```
pdftoppm -r $1 $3.pdf tmp_ppm_pic
convert -density $1 -delay $2 -loop 0 -alpha remove tmp_ppm_pic-*.ppm animated.gif
rm -f tmp_ppm_pic-*.ppm
```
where the parameters are
```
$1: resolution
$2: delay (larger values correspond to slower animations)
$3: name of the pdf file
```