##はじめに
Pythonで3D表示させるために、比較的手軽に利用できるMayavi を利用しました。
MayaviはVTKのバージョン依存がありPython3で、Mayaviを動作させるのに結構はまったので記事を書きました。
##動作環境
Ubuntu 16.04.2 LTS
python 3.6.4
pyenv
virtualenv
anaconda
##環境構築
apt-getで必要なライブラリをインストールします
sudo apt-get install -y libglib2.0-0 libxext6 libsm6 libxrender1 gtk3.0
anacondaでpython3.6.4環境を準備します
conda create -n mayenv python=3.6.4 anaconda
pyenv activate anaconda3-4.3.1/envs/mayenv
必要なパッケージをインストールします。(VTKのバージョン7.1.1がインストールされる)
conda install -y -c conda-forge qt vtk pyvtk pyside envisage mesalib mayavi
conda install -y -c ajsrk traitsui
pip install scipy
##動作確認
サンプルプログラムを動作させ、3Dオブジェクトが表示されれば完了です
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
from mayavi import mlab
s = mlab.mesh(x, y, z)
mlab.show()
###参考にしたサイト
http://docs.enthought.com/mayavi/mayavi/mlab.html#a-demo
https://stackoverflow.com/questions/19138418/get-mayavi-working-with-python-3