Block[{t1=8.2},​​xform[pts_]:=Module[{x,y,z,n},​​{x,y,z}=Transpose[pts];​​n=Sqrt[4π^2-(Min[2Pi/t1,1]z)^2]/Sqrt[(x-2Pi)^2+y^2];​​Transpose@{n(x-2Pi)+2Pi,ny,Min[2Pi/t1,1]z}];​​plot=ParametricPlot3D[4Pi{Sin[u]Cos[w],Sin[u]Sin[w],Cos[u]}​​ ,{u,ArcCos[t1/(4Pi)],Pi/2}​​ ,{w,ArcCos[Csc[u]/2],-ArcCos[Csc[u]/2]}​​,MeshNone,PlotStyle{Red,Opacity[0.5]}​​,PlotPoints{Ceiling[5+8t1],25},BoundaryStyleBlack,​​WorkingPrecision24,Method{"BoundaryOffset"False}];​​(*Sorttoensurevertex-to-vertexorientation(y=#[[2]],z=Last)*)​​bdypts=First@Cases[Normal@plot,Line[p_]p,Infinity];​​outerX2PiNeg=​​ SortBy[Cases[bdypts,{x_,y_,z_}/;x==2Pi&&y≤0],Last];​​outerX2PiPos=​​ SortBy[Cases[bdypts,{x_,y_,z_}/;x==2Pi&&y≥0],-Last[#]&];​​outerZ0=​​ SortBy[Cases[bdypts,{x_,y_,z_}/;z+1==1.],-#[[2]]&];​​outerZT1=​​ SortBy[Cases[bdypts,{x_,y_,z_}/;z==t1],#[[2]]&];​​{innerX2PiNeg,innerX2PiPos,innerZ0,innerZT1}=​​ Reverse/@xform/@{outerX2PiNeg,outerX2PiPos,outerZ0,outerZT1};​​plot=plot/._Line{};(*removeboundaryline*)​​Show[​​Graphics3D[{},PlotRangeAll,AxesTrue,AxesLabel{x,y,z}],​​plot,​​plot/.GraphicsComplex[pts_,rest___]​​    With[{xpts=xform[pts]},​​      GraphicsComplex[xpts,rest]/.(VertexNormals_)​​      VertexNormalsNormalize/@(#-{2Pi,0,0}&/@xpts)],​​Graphics3D[{​​Red,Opacity[0.5],​​{Polygon[​​Join[outerX2PiNeg,outerX2PiPos,innerX2PiPos,innerX2PiNeg]]​​,Polygon[Join[outerZ0,innerZ0]]​​},​​If[t1<2Pi,​​Polygon[Join[outerZT1,innerZT1]],​​Polygon[outerZT1]​​]​​}],​​PlotLabelHoldForm[t1]==t1​​]​​]
Out[]=