美文网首页
TVTK库可视化实例

TVTK库可视化实例

作者: 学习编程好少年 | 来源:发表于2017-07-30 21:53 被阅读0次

    实例1:标量数据可视化

    tvtk.ContourFilter() 等值面过滤器

    方法 说明
    generate_values(n, grid.point_data.scalars.range) 设定n条等值线的值,一般用于重新绘制等值线
    set_value() 设定一条等值线的值,一般用于覆盖某条等值线或者新增加一条等值线
    #数据读取
    from tvtk.api import tvtk
    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) #获取读入的数据集对象
     
    #创建等值面
    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()
    

    tvtkfunc.py文件百度云链接
    combxyz.bin和combq.bin文件百度云链接

    实例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()
    #在Mask采样后的PolyData数据集每个点上放置一个箭头
    #箭头的方向、长度和颜色由于点对应的矢量和标量数据决定
    glyph = tvtk.Glyph3D(input_connection=mask.output_port,
                          scale_factor=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 tvtk
    from 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()
    

    Reference :
    中国大学MOOC北京理工大学Python科学计算三维可视化黄天羽、嵩天老师课件
    课程主页

    相关文章

      网友评论

          本文标题:TVTK库可视化实例

          本文链接:https://www.haomeiwen.com/subject/llohlxtx.html