Python科学计算三维可视化(3)——TVTK可视化实例

来源:互联网 发布:嵌入式软件开发流程图 编辑:程序博客网 时间:2024/05/17 07:31

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

TVTK可视化实例

实例1:标量数据可视化

tvtk.ContourFilter() 等值面过滤器

方法 说明 generate_values() 设定n条等值线的值,一般用于重新绘制等值线 set_value() 设定一条等值线的值,一般用于覆盖某条等值线或者新增加一条等值线
from tvtk.api import tvtkfrom tvtkfunc import ivtk_scene, event_loopplot3d = tvtk.MultiBlockPLOT3DReader(        xyz_file_name="combxyz.bin",        q_file_name="combq.bin",        scalar_function_number=100, vector_function_number=200    )#读入Plot3D数据plot3d.update()#让plot3D计算其输出数据grid = plot3d.output.get_block(0)#获取读入的数据集对象con = tvtk.ContourFilter()#创建等值面对象  con.set_input_data(grid)con.generate_values(10, grid.point_data.scalars.range)#指定轮廓数和数据范围#设定映射器的变量范围属性m = tvtk.PolyDataMapper(scalar_range = grid.point_data.scalars.range,                        input_connection=con.output_port)a = tvtk.Actor(mapper = m)a.property.opacity = 0.5#设定透明度为0.5#窗口绘制win = ivtk_scene(a)win.scene.isometric_view()event_loop()

实例2:矢量数据可视化

tvtk.Glyph3D()符号化技术
tvtk.MaskPoints() 降采样

from tvtk.api import tvtkfrom tvtkfunc import ivtk_scene, event_loop# 读入PLot3D数据plot3d = tvtk.MultiBlockPLOT3DReader(    xyz_file_name="combxyz.bin",    q_file_name="combq.bin",    scalar_function_number=100, vector_function_number=200)plot3d.update()grid = plot3d.output.get_block(0)# 对数据集中的数据进行随机选取,每50个点选择一个点,降采样mask = tvtk.MaskPoints(random_mode=True, on_ratio=50)mask.set_input_data(grid)# 创建表示箭头的PolyData数据集#glyph_source = tvtk.ConeSource()         #圆锥表示glyph_source = tvtk.ArrowSource()         #箭头表示# 在Mask采样后的PolyData数据集每个点上放置一个箭头# 箭头的方向、长度和颜色由于点对应的矢量和标量数据决定glyph = tvtk.Glyph3D(input_connection=mask.output_port,                         scale_factor=2)   # 2 表示符号的共同放缩系数glyph.set_source_connection(glyph_source.output_port)m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,                        input_connection=glyph.output_port)a = tvtk.Actor(mapper=m)# 窗口绘制win = ivtk_scene(a)win.scene.isometric_view()event_loop()

实例3:空间轮廓线可视化

tvtk.StructuredGridOutlineFilter()计算PolyData对象的外边框。

from tvtk.api import tvtkfrom tvtk.common import configure_inputfrom tvtkfunc import ivtk_scene, event_loopplot3d = tvtk.MultiBlockPLOT3DReader(    xyz_file_name="combxyz.bin",    q_file_name="combq.bin",    scalar_function_number=100, vector_function_number=200)  # 读入Plot3D数据plot3d.update()  # 让plot3D计算其输出数据grid = plot3d.output.get_block(0)  # 获取读入的数据集对象outline = tvtk.StructuredGridOutlineFilter()  # 计算表示外边框的PolyData对象configure_input(outline, grid)  # 调用tvtk.common.configure_input()m = tvtk.PolyDataMapper(input_connection=outline.output_port)a = tvtk.Actor(mapper=m)a.property.color = 0.3, 0.3, 0.3# 窗口绘制win = ivtk_scene(a)win.scene.isometric_view()event_loop()
阅读全文
0 0