一、tvtk库的安装
下载 VTK-7.1.1-cp36 TVTK -cp36m-win_amd64.whl
库的安装
“以管理员身份运行”cmd
在下载目录执行pip install VTK-7.1.1-cp36-cp36m-win_amd64.whl
二、建立tvtk库长方体数据源
>>> from tvtk.tools import tvtk_doc
>>> s=tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
>>> print(s)
vtkCubeSource (0000000002B33880)
Debug: Off
Modified Time: 1358865
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (000000000767B940)
Event: 33
EventName: ModifiedEvent
Command: 0000000007A5DC10
Priority: 0
Tag: 1
Executive: 0000000007CBE320
ErrorCode: No error
Information: 000000000765D6B0
AbortExecute: Off
Progress: 0
Progress Text: (None)
X Length: 1
Y Length: 2
Z Length: 3
Center: (0, 0, 0)
Output Points Precision: 0
三、tvtk库的使用方法
TVTK库中的类名去除了前缀vtk
函数名按照Python的惯例,采用下划线连接单词
如AddItem->add_item
VTK对象的方法在TVTK中用Trait属性替代
m.SetInputConnnection(c.GetOutputPort()) #VTK
m.input_connection(c.output_port) #TVTK
s = tvtk.CubeSource(traits)
s = tvtk.CubeSource(x_length=1.0, y_length=2.0,z_length=3.0)
· x_length: 立方体在X轴的长度
· y_length: 立方体在y轴的长度
· z_length: 立方体在z轴的长度
属性 说明
s.x_length 长方体对象在X轴方向的长度
s.y_length 长方体对象在y轴方向的长度
s.z_length 长方体对象在z轴方向的长度
s.center 长方体对象所在坐标系的原点
s. output_points_precision 长方体对象的精度
CubeSource对象的方法
VTK方法 Tvtk 说明
Set/GetXLength() x_length 设置/获取长方体对象在X轴方向的长度
Set/GetYLength() y_length 设置/获取长方体对象在Y轴方向的长度
Set/GetZLength() z_length 设置/获取长方体对象在Z轴方向的长度
Set/GetCenter() center 设置/获取长方体对象所在坐标系的原点
Tvtk库的基本三维对象
三维对象 说明
CubeSource 立方体三维对象数据源
ConeSource 圆锥三维对象数据源
CylinderSource 圆柱三维对象数据源
ArcSource 圆弧三维对象数据源
ArrowSource 箭头三维对象数据源
四、实例
代码如下
from tvtk.api import tvtk
# 创建一个长方体数据源,并且同时设置其长宽高
s = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)
# 使用PolyDataMapper将数据转换为图形数据
m = tvtk.PolyDataMapper(input_connection=s.output_port)
# 创建一个Actor
a = tvtk.Actor(mapper=m)
# 创建一个Renderer,将Actor添加进去
r = tvtk.Renderer(background=(0, 0, 0))
r.add_actor(a)
# 创建一个RenderWindow(窗口),将Renderer添加进去
w = tvtk.RenderWindow(size=(300,300))
w.add_renderer(r)
# 创建一个RenderWindowInteractor(窗口的交互工具)
i = tvtk.RenderWindowInteractor(render_window=w)
# 开启交互
i.initialize()
i.start()
运行得到一个长方体
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)
#开始界面消息循环
gui.start_event_loop()
from tvtk.api import tvtk
def ivtk_scene(actors):
from tvtk.tools import ivtk
#创建一个带Crust(Python Shell)的窗口
win = ivtk.IVTKWithCrustAndBrowser()
win.open()
win.scene.add_actor(actors)
#修正窗口错误
dialog = win.control.centralWidget().widget(0).widget(0)
from pyface.qt import QtCore
dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000))
dialog.show()
return win
def event_loop():
from pyface.api import GUI
gui = GUI()
gui.start_event_loop()
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)
win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()
本笔记整理自北理黄天羽老师《科学可视化》课程,在此表示感谢。本笔记主要取自课程讲义,仅供交流学习,请勿转载,谢谢。