科学计算三维可视化---TVTK管线与数据加载(用IVTK根据观察管线)
一:用IVTK根据观察管线
(一)引入该工具
from tvtk.tools import ivtk
可能需要安装pygments
pip3 install pygments
(二)使用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) #开启界面消息循环 gui.start_event_loop()
由于GUI存在一个Bug,使得子窗口脱离主窗口
修正错误
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()
(三)为了提高程序的可读性,以及未来复用的方便,我们将上述代码封装函数
我们将创建IVTK窗口的功能和事件循环的功能封装在两个函数中
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()
(四)进一步将函数转换为模块,方便复用
(五)界面操作
(1)交互界面获取信息
print(scene.renderer.actors[0].mapper.input.points.to_array()) #输出当前场景下渲染器中实体的映射器图形的输入点
(2)查看照相机节点
(3)查看实体Actor
注意:在方向方面都是采用右手法则,上面照相机也是一样
(4)查看整个场景编辑器
添加或删除光源和修改属性