如题,想要学习一下TVTK和Mayavi,有两个目的:

1. 学习一项基于python的科学可视化方法;

2. 利用其实现2.5维的三维地质体语义可视化

开始前,首先要配置环境,说到这次配置环境,费了好大周章。由于不熟悉tvtk&mayavi的依赖包有哪些和依赖关系,走了很多弯路,在此总结一下。

1.包的安装顺序

MOOC中给的配置比较久远了,在所给的资源网站上已经没有了,从博客上还有镜像里扒拉了半天才找齐全,在这里附上链接:

除了资料中所给的4个库文件外,若想使用mayavi还需要安装4个依赖库,分别是

#
lib-Name
1
apptools-4.4.0
2
configobj-5.0.6
3
pyface-5.1.0
4
traitsui-5.1.0

这四个包都是库源文件,以管理员打开cmd命令行,cd到各自文件夹中,运行: python setup.py install, 例如安装apptools,在apptools文件夹中打开cmd,输入:python setup.py install, 之后等待安装成功。同理依次安装上述依赖库。

安装完成,还需要安装4个库文件,此外还有numpy包,分别是

#
whl-Name
1
numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl
2
PyQt4-4.11.4-cp36-cp36m-win_amd64.whl
3
traits-4.6.0-cp36-cp36m-win_amd64.whl
4
VTK-7.1.1-cp36-cp36m-win_amd64.whl
5
mayavi-4.5.0+vtk71-cp36-cp36m-win_amd64.whl

其中cp36对应为python3.6版本。

以上是编译后的二进制文件,直接在该目录进行安装即可,由于依赖关系,traits包要先于mayavi安装,最好按照以上顺序进行pip install。以管理员打开cmd,进入库文件所存目录,输入:pip install 库名称进行安装。例如安装pyqt4:pip install PyQt4-4.11.4-cp36-cp36m-win_amd64.whl

(注:若pip不是外部命令,需要将解释器中的scripts文件夹加入系统的环境变量当中去,即可解决)

2.安装过程中遇到的问题和解决办法

最初,只安装了以上5个库文件,然后总是提示缺少pygment模块,安装该模块后,仍是出现模块缺失的报错,ModuleNotFoundError: No module named 'tvtk.pyface.ui.qt', 就是很多莫名其妙的错误。

然后再仔细看博客和查资料,发现已有的成功安装过程和课程资料上的有出入,遂发现了上述4个依赖库,然后重新安装后例程创建长方体,用ivtk观察可视化过程均可正常运行。ivtk例程:

from tvtk.api import tvtk
from tvtk.tools import ivtk
from pyface.api import GUI
#可视化管线部分
s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
m = tvtk.PolyDataMapper(input_connection=s.output_port)
#图形管线部分
a = tvtk.Actor(mapper=m) #创建一个实体
#创建一个带有Crust(Python Shell)的窗口
gui = GUI()
win = ivtk.IVTKWithCrustAndBrowser()
win.open()
win.scene.add_actor(a)
#修正错误
dialog = win.control.centralWidget().widget(0).widget(0)
from pyface.qt import QtCore
dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000))
dialog.show()
#开启界面消息循环
gui.start_event_loop()

运行结果:


此外,又尝试了博客中的随机点云例程

import mayavi.mlab as mylab
import numpy as np
x, y, z, value = np.random.random((4, 40))
mylab.points3d(x, y, z, value)
mylab.show()

错误信息为ModuleNotFoundError: No module named 'six',使用pip install six解决该问题,运行结果:


3.遗留问题

现在在pycharm中使用的是全局的python解释器,如何在pycharm中安装依赖库,而不仅仅是库文件,以创建一个虚拟环境,这是下一步要继续摸索的。被安装个环境心态搞得有点炸,现下的环境已能够学习使用,所以暂时就先不管这个问题了,后续有方法再来更新!