Python科学计算三维可视化(1) ——TVTK库入门

xiaoxiao2021-02-28  68

最近在中国大学MOOC网上学习python科学计算三维可视化相关知识,记录下来,以供参考。

科学可视化基础

科学计算的可视化方法

二维标量数据场 1.1 颜色映射方法 1.2 等值线方法 1.3 立体图法和层次分割法三维标量数据场 2.1 面绘制方法(surface rendering) 2.2 体绘制方法(volume rendering)矢量数据场 3.1 直接法 3.2流线法(stream line)

TVTK库的安装

VTK-7.1.1-cp36-cp36m-win_amd64.whl numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl traits-4.6.0-cp36-cp36m-win_amd64.whl mayavi-4.5.0+vtk71-cp36-cp36m-win_amd64.whl PyQt4-4.11.4-cp36-cp36m-win_amd64.whl

TVTK库的安装小测

>>> from tvtk.api import tvtk >>> s = tvtk.CubeSource(x_length = 1.0,y_length = 2.0,z_length = 3.0) >>> print(s) vtkCubeSource (0000020A22196F60) Debug: Off Modified Time: 96 Reference Count: 2 Registered Events: Registered Observers: vtkObserver (0000020A25B90240) Event: 33 EventName: ModifiedEvent Command: 0000020A258E4CD0 Priority: 0 Tag: 1 Executive: 0000020A25BA0170 ErrorCode: No error Information: 0000020A25C6E570 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 = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)

CubeSource对象的属性

属性说明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箭头三维对象数据源

创建一个圆锥数据源

>>> s = tvtk.ConeSource(height = 3.0,radius = 1.0,resolution = 36) #高度、底面圆半径。底面圆分辨率 >>> s.height 3.0 >>> s.radius 1.0 >>> s.resolution 36 >>> s.center array([ 0., 0., 0.]) >>> print(s) vtkConeSource (0000020A25B7FE10) Debug: Off Modified Time: 133 Reference Count: 2 Registered Events: Registered Observers: vtkObserver (0000020A25B91260) Event: 33 EventName: ModifiedEvent Command: 0000020A258E4490 Priority: 0 Tag: 1 Executive: 0000020A25BA0F80 ErrorCode: No error Information: 0000020A25C6F240 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

TVTK库显示一个三维对象

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()

原始数据转换为屏幕上图像,TVTK对象共同协调完成: tvtk.CubeSource tvtk.PolyDataMapper tvtk.Actor tvtk.Renderer tvtk.RenderWindow tvtk.RenderWindowInteractor 在TVTK中,这种对象之间协调完成工作的过程被称作管线(Pipeline)。

转载请注明原文地址: https://www.6miu.com/read-96096.html

最新回复(0)