请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 1056|回复: 0

科学计算三维可视化-TVTK可视化实例-标量数据可视化和矢量数据可视化

[复制链接]

79

主题

79

帖子

294

积分

VIP会员

积分
294
发表于 2017-11-4 11:51:03 | 显示全部楼层 |阅读模式
本帖最后由 chunge 于 2017-11-4 12:08 编辑

tvtk.ContourFilter() 等值面过滤器
[td]
方法说明
generate_values()设定n条等值线的值,一般用于重新绘制等值线
set_value()设定一条等值线的值,一般用于覆盖某条等值线或者新增加一条等值线
1.标量数据可视化实现代码:
from tvtk.api import tvtkfrom tvtkfunc import ivtk_scene, event_loop

plot3d = 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 tvtk
from 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.空间轮廓线可视化代码from tvtk.api import tvtkfrom tvtk.common import configure_input
from tvtkfunc import ivtk_scene, event_loop
plot3d = 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()






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|京ICP备17047556号-1|大智能时代    

GMT+8, 2020-8-9 11:19 , Processed in 0.098069 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表