Python 科学计算可视化--三维可视化基础

科学计算可视化的分类

信息可视化

  • 信息
  • 知识

科学可视化

  • 空间数据

科学可视化的可视化方法

二维标量数据场

  • 颜色映射法
  • 等值线方法
  • 立体图法和层次分割法

三维标量数据场

  • 面绘制法
  • 体绘制法

矢量数据场

  • 直接法
  • 流线法

TVTK库的安装

三维可视化工具
Windows10 64位 + Python3.6,在库文件所在目录里依次安装:

  • 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

在.whl文件目录下用管理员身份运行cmd,在cmd中输入pip install xxx.whl

创建一个TVTK的基本三维对象

s = tvtk.CubeSource(traits)

CubeSoure对象的属性

属性 说明
s.x_length 长方体对象在x轴方向的长度
s.y_length 长方体对象在y轴方向的长度
s.z_length 长方体对象在z轴方向的长度
s.center 长方体对象所在坐标系的原点
s.output_points_precision 长方体对象的精度

CubeSoure对象的常用方法

属性 说明
set/get_x_length() 设置/获取长方体对象在x轴方向的长度
set/get_y_length() 设置/获取长方体对象在y轴方向的长度
set/get_z_length() 设置/获取长方体对象在z轴方向的长度
set/get_center() 设置/获取长方体对象所在坐标系的原点
set/get_bounds() 设置/获取长方体对象的包围盒

Tvtk库的基本三维对象

属性 说明
CubeSource 立方体三维对象数据源
ConeSource 圆锥三维对象数据源
CylinderSource 圆柱三维对象数据源
ArcSource 圆弧三维对象数据源
ArrowSource 箭头三维对象数据源

示例

s = tvtk.ConeSource(height=3.0,radius=1.0,resolution=36)

tvtk库显示一个三维对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 导入tvtk库
from tvtk.api import tvtk
# 创建一个长方体数据源,并且同时设置其长宽高
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)
# 创建渲染器,将Actor添加进去
r = tvtk.Renderer(background=(0,0,0))
r.add_actor(a)
# 创建一个窗口,将渲染器添加进去
w = tvtk.RenderWindow(size=(300,300))
w.add_renderer(r)
# 创建一个窗口的交互工具
i = tvtk.RenderWindowInteractor(render_window=w)
i.initialize()
i.start()