科学计算三维可视化---TVTK入门(创建和显示三维对象)
一:创建一个基本的三维对象
(一)长方体操作
traits:就是TVTK对象的属性
(1)对象属性操作
>>> from tvtk.api import tvtk >>> s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0) >>> print(s)
>>> s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0) >>> print(s) vtkCubeSource (00000000004D4FC0) Debug: Off Modified Time: 1903583 Reference Count: 2 Registered Events: Registered Observers: vtkObserver (000000000D7E0EE0) Event: 33 EventName: ModifiedEvent Command: 00000000121045F0 Priority: 0 Tag: 1 Executive: 000000000D5E32D0 ErrorCode: No error Information: 0000000000481710 AbortExecute: Off Progress: 0 Progress Text: (None) X Length: 1 Y Length: 2 Z Length: 3 Center: (0, 0, 0) Output Points Precision: 0
>>> s.center #所在坐标系的原点 array([0., 0., 0.]) >>> s.x_length #x轴长度 1.0 >>> s.y_length #y轴长度 2.0 >>> s.z_length #z轴长度 3.0 >>> s.output_points_precision #对象的精度 0
(2)对象方法操作
(二)其他基本三维对象了解
>>> from tvtk.api import tvtk >>> s = tvtk.ConeSource(height=3.0,radius=1.0,resolution=36) #高度3.0,底面圆半径1.0,底面圆分辨率36(使用36边形近似一个圆形)
>>> s.height 3.0 >>> s.radius 1.0 >>> s.resolution 36 >>> s.center array([0., 0., 0.]) >>> print(s) vtkConeSource (0000000002F71530) Debug: Off Modified Time: 1903620 Reference Count: 2 Registered Events: Registered Observers: vtkObserver (000000000D7E0430) Event: 33 EventName: ModifiedEvent Command: 000000000D4C0CD0 Priority: 0 Tag: 1 Executive: 000000000D2998D0 ErrorCode: No error Information: 000000000D3820C0 AbortExecute: Off Progress: 0 Progress Text: (None) Resolution: 36 Height: 3 Radius: 1 Capping: On Center: (0, 0, 0) Direction: (1, 0, 0) Output Points Precision: 0
二:显示一个三维对象
在二维屏幕中显示一个三维对象,需要一个十分复杂的映射过程,特别是与用户交互的时候
(一)显示一个长方体
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) #将Actor添加进去 #创建一个RenderWindow(窗口),将Renderer添加进去 w = tvtk.RenderWindow(size=(300,300)) #创建一个显示窗口 w.add_renderer(r) #将建立的渲染器加入窗口 #创建一个RenderWindowInteractor(窗口的交互工具) i = tvtk.RenderWindowInteractor(render_window=w) #创建一个交互工具,将窗口加入交互 #开启交互 i.initialize() i.start()