I did it using powers of 0.5, with help from copilot.
I had to fiddle with it a bit, so the code is a bit clunky, but this should be it.
\documentclass[tikz,border=1cm]{standalone}
\usepackage{lua-tikz3dtools} % https://github.com/Pseudonym321/TikZ-Animations/tree/master1/TikZ/lua-tikz3dtools
\begin{document}
\begin{luatikztdtoolspicture}[
C1 = { {{-10,-10,-10,1}} }
,C2 = { {{10,10,10,1}} }
,light = { {{0,0,1,1}} }
]
% Parameters
\def\N{6} % number of faces
\def\decay{0.5} % shrink factor
\pgfmathsetmacro{\uA}{0}
\pgfmathsetmacro{\uB}{pi}
\pgfmathsetmacro{\udiff}{\uB-\uA}
\pgfmathsetmacro{\ustart}{\uA}
\foreach \p in {-1,1} {
\foreach \k in {0,...,\N} {
\pgfmathsetmacro{\udelta}{\udiff*pow(\decay,\k)}
\pgfmathsetmacro{\uend}{\ustart+\udelta}
\pgfmathparse{\k!=0 && \k!=1}
\ifnum\pgfmathresult=1
\appendsurface[
ustart = {\ustart}
,ustop = {\uend}
,usamples = {2}
,vstart = {0}
,vstop = {tau}
,vsamples = {2}
,x = {-v}
,y = {v*cos(u)/5}
,z = {\p*v*sin(u)/5}
,transformation = {euler(pi/2,pi/3,pi/6)}
,fill options = {
preaction = {fill = white, fill opacity = 1}
,postaction = {
draw = black
,ultra thin
,line join = round
}
}
]
\fi
\pgfmathparse{\k==1}
\ifnum\pgfmathresult=1
\appendsurface[
ustart = {pi}
,ustop = {\uend}
,usamples = {2}
,vstart = {0}
,vstop = {tau}
,vsamples = {2}
,x = {-v}
,y = {v*cos(u)/5}
,z = {\p*v*sin(u)/5}
,transformation = {euler(pi/2,pi/3,pi/6)}
,fill options = {
preaction = {fill = white, fill opacity = 1}
,postaction = {
draw = black
,ultra thin
,line join = round
}
}
]
\fi
\global\let\ustart\uend
}
}
\end{luatikztdtoolspicture}
\end{document}
