Remove faces visible from a given view point and extrude the remaining faces:
ClearAll[visibleVerts, facesKept, intrudeFace]
visibleVerts[viewp_] := Intersection[
MeshCoordinates[#],
MeshCoordinates[
RegionDifference[ConvexHullMesh[Prepend[MeshCoordinates[#], viewp]], #]]] &
facesKept[viewp_] := Select[x |-> DisjointQ[x[[1]], visibleVerts[viewp] @ #]] @
MeshPrimitives[#, 2] &
intrudeFace[scaledThickness_, p_ : {0, 0, 0}] := ConvexHullMesh[Join[First @ #,
ScalingTransform[(1 - scaledThickness) {1, 1, 1}, p] @ First @ #], ##2] &
Examples:
{bmr, cb} = PolyhedronData["TruncatedIcosahedron",
{"BoundaryMeshRegion", "CoordinateBounds"}];
zh = 1.2;
vp = {0, 0, zh cb[[-1, -1]] };
t = .3;
Row[{Graphics3D[{Opacity[.5], Red, facesKept[vp][bmr]},
Boxed -> False, ImageSize -> Medium],
Show[intrudeFace[t] /@ facesKept[vp][bmr], ImageSize -> Medium],
Show[intrudeFace[t][#, MeshCellStyle -> {{2, All} :> RandomColor[]}] & /@
facesKept[vp][bmr],
Graphics3D[{Red,
Ball[{0, 0, 0},
(1 - t) PolyhedronData["TruncatedIcosahedron", "Circumradius"]]}],
ImageSize -> Medium]},
Spacer[10]]

Use zh = 1.5 to get

and zh = 4 to get

With zh = 1.1 combined with varies thickness values we get
Multicolumn[
Table[Show[intrudeFace[s] /@ facesKept[vp][bmr],
Lighting -> "Neutral", ImageSize -> Medium,
PlotLabel -> Row[{"thicknes: ", s}]], {s, {.1, .3, .5, 1}}],
2, Dividers -> All, Appearance -> "Horizontal"]

PolyhedronData["TruncatedIcosahedron"]? – Michael E2 Aug 09 '16 at 00:42