FYI: It is possible to use Sage to produce TikZ pictures of any 3-D polytope.
See this ticket
followed by this ticket.
For documentations and examples, see the official reference of sage
and the page of the author.
Here is an example code (from the author's webpage) generated by Sage. As you can see, the code can be customized as you want (semi-transparent, shading effect, etc.).
\begin{tikzpicture}%
[x={(0.249656cm, -0.577639cm)},
y={(0.777700cm, -0.358578cm)},
z={(-0.576936cm, -0.733318cm)},
scale=3.000000,
back/.style={loosely dashed,line width=2pt},
edge/.style={color=yellow, line width=2pt},
facet/.style={fill=cyan,fill opacity=0.400000},
vertex/.style={inner sep=4pt,star,star points=7,draw=blue!75!white,fill=blue!85!white,thick,anchor=base}]
%
%
%% Coordinate of the vertices:
%%
\coordinate (-0.500, -0.500, -0.500) at (-0.500, -0.500, -0.500);
\coordinate (-1.00, 0.000, 0.000) at (-1.00, 0.000, 0.000);
\coordinate (-1.00, 0.000, 1.00) at (-1.00, 0.000, 1.00);
\coordinate (-1.00, 1.00, 0.000) at (-1.00, 1.00, 0.000);
\coordinate (-1.00, 1.00, 1.00) at (-1.00, 1.00, 1.00);
\coordinate (0.000, -1.00, 0.000) at (0.000, -1.00, 0.000);
\coordinate (0.000, -1.00, 1.00) at (0.000, -1.00, 1.00);
\coordinate (0.000, 0.000, -1.00) at (0.000, 0.000, -1.00);
\coordinate (0.000, 1.00, -1.00) at (0.000, 1.00, -1.00);
\coordinate (1.00, -1.00, 0.000) at (1.00, -1.00, 0.000);
\coordinate (1.00, -1.00, 1.00) at (1.00, -1.00, 1.00);
\coordinate (1.00, 0.000, -1.00) at (1.00, 0.000, -1.00);
\coordinate (1.00, 1.00, -1.00) at (1.00, 1.00, -1.00);
\coordinate (1.00, 1.00, 1.00) at (1.00, 1.00, 1.00);
%%
%%
%% Drawing edges in the back
%%
\draw[edge,back] (0.000, -1.00, 0.000) -- (1.00, -1.00, 0.000);
\draw[edge,back] (0.000, 0.000, -1.00) -- (1.00, 0.000, -1.00);
\draw[edge,back] (1.00, -1.00, 0.000) -- (1.00, -1.00, 1.00);
\draw[edge,back] (1.00, -1.00, 0.000) -- (1.00, 0.000, -1.00);
\draw[edge,back] (1.00, 0.000, -1.00) -- (1.00, 1.00, -1.00);
%%
%%
%% Drawing vertices in the back
%%
\node[vertex] at (1.00, -1.00, 0.000) {};
\node[vertex] at (1.00, 0.000, -1.00) {};
%%
%%
%% Drawing the facets
%%
\fill[facet] (1.00, 1.00, 1.00) -- (-1.00, 1.00, 1.00) -- (-1.00, 1.00, 0.000) -- (0.000, 1.00, -1.00) -- (1.00, 1.00, -1.00) -- cycle {};
\fill[facet] (1.00, 1.00, 1.00) -- (-1.00, 1.00, 1.00) -- (-1.00, 0.000, 1.00) -- (0.000, -1.00, 1.00) -- (1.00, -1.00, 1.00) -- cycle {};
\fill[facet] (0.000, -1.00, 1.00) -- (-1.00, 0.000, 1.00) -- (-1.00, 0.000, 0.000) -- (-0.500, -0.500, -0.500) -- (0.000, -1.00, 0.000) -- cycle {};
\fill[facet] (0.000, 1.00, -1.00) -- (-1.00, 1.00, 0.000) -- (-1.00, 0.000, 0.000) -- (-0.500, -0.500, -0.500) -- (0.000, 0.000, -1.00) -- cycle {};
\fill[facet] (-1.00, 1.00, 1.00) -- (-1.00, 0.000, 1.00) -- (-1.00, 0.000, 0.000) -- (-1.00, 1.00, 0.000) -- cycle {};
%%
%%
%% Drawing edges in the front
%%
\draw[edge] (-0.500, -0.500, -0.500) -- (-1.00, 0.000, 0.000);
\draw[edge] (-0.500, -0.500, -0.500) -- (0.000, -1.00, 0.000);
\draw[edge] (-0.500, -0.500, -0.500) -- (0.000, 0.000, -1.00);
\draw[edge] (-1.00, 0.000, 0.000) -- (-1.00, 0.000, 1.00);
\draw[edge] (-1.00, 0.000, 0.000) -- (-1.00, 1.00, 0.000);
\draw[edge,->,orange] (-1.00, 0.000, 1.00) -- node[below left] {\color{white}FLOW} (-1.00, 1.00, 1.00);
\draw[edge] (-1.00, 0.000, 1.00) -- (0.000, -1.00, 1.00);
\draw[edge,->,orange] (-1.00, 1.00, 0.000) -- node[below right] {\color{white}TO THE} (-1.00, 1.00, 1.00);
\draw[edge] (-1.00, 1.00, 0.000) -- (0.000, 1.00, -1.00);
\draw[edge,<-,orange] (-1.00, 1.00, 1.00) -- node[above left] {\color{white}VERTEX}(1.00, 1.00, 1.00);
\draw[edge] (0.000, -1.00, 0.000) -- (0.000, -1.00, 1.00);
\draw[edge] (0.000, -1.00, 1.00) -- (1.00, -1.00, 1.00);
\draw[edge] (0.000, 0.000, -1.00) -- (0.000, 1.00, -1.00);
\draw[edge] (0.000, 1.00, -1.00) -- (1.00, 1.00, -1.00);
\draw[edge] (1.00, -1.00, 1.00) -- (1.00, 1.00, 1.00);
\draw[edge] (1.00, 1.00, -1.00) -- (1.00, 1.00, 1.00);
%%
%%
%% Drawing the vertices in the front
%%
\node[vertex] at (-0.500, -0.500, -0.500) {$\alpha$};
\node[vertex] at (-1.00, 0.000, 0.000) {};
\node[vertex] at (-1.00, 0.000, 1.00) {};
\node[vertex] at (-1.00, 1.00, 0.000) {};
\node at (-1.00, 1.00, 1.00) {};
\node[vertex] at (0.000, -1.00, 0.000) {};
\node[vertex] at (0.000, -1.00, 1.00) {};
\node[vertex] at (0.000, 0.000, -1.00) {};
\node[vertex] at (0.000, 1.00, -1.00) {};
\node[vertex] at (1.00, -1.00, 1.00) {};
\node[vertex,label=right:{$\Sigma\times\Omega$}] at (1.00, 1.00, -1.00) {};
\node[vertex] at (1.00, 1.00, 1.00) {\color{white}$\lim_{n\rightarrow \infty}$};
%%
%%
\end{tikzpicture}
And below is an example picture from the author's webpage:
