• python mooc 3维可视化<第一周第二&三单元>


    小结:
    创建 数据对象
    structuredGrid grid
    使用contourfilter con
    PolyDataMapper m
    Actor a

    使用
    MaskPoint3D mask
    glyph3D glyph
    同上

    生成数据

    生成Actor

    交给Renderer

    放在Renderwindow中

    显示

    管线与数据加载#

    pipline
    分为两种一种

    可视化管线 Visualization Pipeline
    原始数据->图形数据

    图形管线 Graphics Pipeline
    图形数据->我们看到的图像

    全流程

    可视化管线tvtk对象

    CubeSource PolyData对象
    PolyDataMapper 对象 数据->图形数据

    由 PolyData 的 output_port -> PolyDataMapper的input_connection

    图形管线
    可视化对象
    Actor 包括一个场景实体,包括一个图形数据(mapper) ,具有实体的位置方向等信息

    Renderer 渲染的场景 场景包含多个需要Actor

    RenderWindow 渲染的窗口,包括多个Render

    RenderWindowInteractor 提供一个用户交互功能

    使用ivtk###

    相机对象的属性

    数据集###

    分类

    • ImageData
      在数组中储存数据,在正交且等距的地方
      数据集构建的参数

    • RectilinearFrid
      表示间距不军训的网络,虽然正交但是不均匀

    import numpy as np
    x=np.array([0,3,9,15])
    y=np.array([0,1,5])
    z=np.array([0,2,3])

    r=tvtk.RectilinearGrid()

    r.x_coordinates=x
    r.y_coordinates=y
    r.z_coordinates=z

    r.dimensions=len(x),len(y),len(z)

    for n in range(6):
    print(r.get_point(n))

    可以看到依次底层

    • StructuredGrid
      需要指定点的坐标

    +Polydata 数据集

    有一系列的点,点之间的练习

    TVTK库的数据加##

    从外部读入

    vtk object 是 vtk 中大多数对象的基类

    读取STL####

    s=tvtk.STLReader(file_name="文件名")

    plot3D的读取
    +网格文件 XYZ文件
    +动气动力学结果文件(Q文件)
    +通用结果

    Plot3d=tvtk.MUltiBlockPLOT3DReader(
    xyz_file_name="combxyz.bin",网格文件
    q_file_name="combp.pin",动气动力学结果文件
    scalar_function_number=100, # 设置标量数据数量
    vector_function_number=200, #设置矢量数据数量
    )
    Plot3d.update() 计算其输出数据
    grid=Plot3d.output.get_block(0)

    tvtk.ContourFilter()

    tvtk符号化技术####


    tvtk.Glyph3d()

    由于矢量数据过于密集

    使用类maskpoint

    外轮轮廓可视化技术####

    使用tvtk.StructuredGridOutlineFilter()
    计算POlyData对象的外边框

    一下是代码
    readstll&bin&show them.ipny

    
    from tvtk.api import tvtk
    from ivtk_func import*
    from tvtk.api import tvtk
    from ivtk_func import*
    In [4]:
    
    s=tvtk.STLReader(file_name="python.stl")# PolyData对象
    In [5]:
    
    m=tvtk.PolyDataMapper(input_connection=s.output_port)
    In [6]:
    
    
    from tvtk.api import tvtk
    from ivtk_func import*
    from tvtk.api import tvtk
    from ivtk_func import*
    a
    from tvtk.api import tvtk
    from ivtk_func import*
    from tvtk.api import tvtk
    from ivtk_func import*=tvtk.Actor(mapper=m)
    In [7]:
    
    win=ivtk_scene(a)
    win.scene.isometric_view()
    win=ivtk_scene(a)
    win.scene.isometric_view()
    In [9]:
    
    event_loop()
    In [2]:
    
    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)
    In [3]:
    
    print(type(Plot3d.output))             #MultiBlockDataSet
    print(type(Plot3d.output.get_block(0)))#StructuredGrid
    print(type(Plot3d.output.get_block(1)))#Nonetype
    print(type(Plot3d))     #MultiPlot3dread_read
    print(grid.dimensions)  #网格文件的内容是List
    ​
    print(type(grid.points))#Points 类型
    print(grid.points.to_array())#Points array
    ​
    print(type(grid))
    print(grid.point_data.number_of_arrays) #网格中的点有四种数据
    print(grid.point_data)
    ​
    ​
    print(grid.point_data.scalars.name)
    print(grid.point_data.vectors.name)
    ​
    print("
    ")
    print(grid)
    ​
    ​
    print("
    ")
    print(Plot3d)
    ​
    print("
    ")
    print(grid.point_data)
    <class 'tvtk.tvtk_classes.multi_block_data_set.MultiBlockDataSet'>
    <class 'tvtk.tvtk_classes.structured_grid.StructuredGrid'>
    <class 'NoneType'>
    <class 'tvtk.tvtk_classes.multi_block_plot3d_reader.MultiBlockPLOT3DReader'>
    [57 33 25]
    <class 'tvtk.tvtk_classes.points.Points'>
    [[  2.66700006  -3.77476001  23.83292007]
     [  2.94346499  -3.74825287  23.66555977]
     [  3.21985817  -3.72175312  23.49823952]
     ..., 
     [ 15.84669018   5.66214085  35.7493782 ]
     [ 16.17829895   5.66214085  35.7493782 ]
     [ 16.51000023   5.66214085  35.7493782 ]]
    <class 'tvtk.tvtk_classes.structured_grid.StructuredGrid'>
    4
    vtkPointData (0000012712511380)
      Debug: Off
      Modified Time: 413
      Reference Count: 2
      Registered Events: 
        Registered Observers:
          vtkObserver (0000012714C3D3A0)
            Event: 33
            EventName: ModifiedEvent
            Command: 00000127149B2B40
            Priority: 0
            Tag: 3
          vtkObserver (0000012714C3CBC0)
            Event: 33
            EventName: ModifiedEvent
            Command: 0000012714D622D0
            Priority: 0
            Tag: 1
      Number Of Arrays: 4
      Array 0 name = Density
      Array 1 name = Momentum
      Array 2 name = StagnationEnergy
      Array 3 name = Velocity
      Number Of Components: 8
      Number Of Tuples: 47025
      Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
      Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
      Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
      Scalars: 
        Debug: Off
        Modified Time: 392
        Reference Count: 1
        Registered Events: (none)
        Name: Density
        Data type: float
        Size: 47025
        MaxId: 47024
        NumberOfComponents: 1
        Information: 0000000000000000
        Name: Density
        Number Of Components: 1
        Number Of Tuples: 47025
        Size: 47025
        MaxId: 47024
        LookupTable: (none)
      Vectors: 
        Debug: Off
        Modified Time: 409
        Reference Count: 1
        Registered Events: (none)
        Name: Velocity
        Data type: float
        Size: 141075
        MaxId: 141074
        NumberOfComponents: 3
        Information: 0000000000000000
        Name: Velocity
        Number Of Components: 3
        Number Of Tuples: 47025
        Size: 141075
        MaxId: 141074
        LookupTable: (none)
      Normals: (none)
      TCoords: (none)
      Tensors: (none)
      GlobalIds: (none)
      PedigreeIds: (none)
      EdgeFlag: (none)
    
    
    Density
    Velocity
    
    
    vtkStructuredGrid (0000012711A0B400)
      Debug: Off
      Modified Time: 413
      Reference Count: 3
      Registered Events: 
        Registered Observers:
          vtkObserver (0000012714C3CD70)
            Event: 33
            EventName: ModifiedEvent
            Command: 00000127149B2B00
            Priority: 0
            Tag: 1
      Information: 0000012714D62280
      Data Released: False
      Global Release Data: Off
      UpdateTime: 0
      Field Data:
        Debug: Off
        Modified Time: 389
        Reference Count: 1
        Registered Events: (none)
        Number Of Arrays: 1
        Array 0 name = Properties
        Number Of Components: 1
        Number Of Tuples: 4
      Number Of Points: 47025
      Number Of Cells: 43008
      Cell Data:
        Debug: Off
        Modified Time: 187
        Reference Count: 1
        Registered Events: 
          Registered Observers:
            vtkObserver (0000012714C3CE60)
              Event: 33
              EventName: ModifiedEvent
              Command: 0000012714D622D0
              Priority: 0
              Tag: 1
        Number Of Arrays: 0
        Number Of Components: 0
        Number Of Tuples: 0
        Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
        Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
        Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
        Scalars: (none)
        Vectors: (none)
        Normals: (none)
        TCoords: (none)
        Tensors: (none)
        GlobalIds: (none)
        PedigreeIds: (none)
        EdgeFlag: (none)
      Point Data:
        Debug: Off
        Modified Time: 413
        Reference Count: 1
        Registered Events: 
          Registered Observers:
            vtkObserver (0000012714C3CBC0)
              Event: 33
              EventName: ModifiedEvent
              Command: 0000012714D622D0
              Priority: 0
              Tag: 1
        Number Of Arrays: 4
        Array 0 name = Density
        Array 1 name = Momentum
        Array 2 name = StagnationEnergy
        Array 3 name = Velocity
        Number Of Components: 8
        Number Of Tuples: 47025
        Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
        Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
        Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
        Scalars: 
          Debug: Off
          Modified Time: 392
          Reference Count: 1
          Registered Events: 
            Registered Observers:
              (none)
          Name: Density
          Data type: float
          Size: 47025
          MaxId: 47024
          NumberOfComponents: 1
          Information: 0000000000000000
          Name: Density
          Number Of Components: 1
          Number Of Tuples: 47025
          Size: 47025
          MaxId: 47024
          LookupTable: (none)
        Vectors: 
          Debug: Off
          Modified Time: 409
          Reference Count: 1
          Registered Events: 
            Registered Observers:
              (none)
          Name: Velocity
          Data type: float
          Size: 141075
          MaxId: 141074
          NumberOfComponents: 3
          Information: 0000000000000000
          Name: Velocity
          Number Of Components: 3
          Number Of Tuples: 47025
          Size: 141075
          MaxId: 141074
          LookupTable: (none)
        Normals: (none)
        TCoords: (none)
        Tensors: (none)
        GlobalIds: (none)
        PedigreeIds: (none)
        EdgeFlag: (none)
      Bounds: 
        Xmin,Xmax: (0, 16.51)
        Ymin,Ymax: (-5.66214, 5.66214)
        Zmin,Zmax: (23.3312, 36.195)
      Compute Time: 431
      Number Of Points: 47025
      Point Coordinates: 0000012714711730
      Locator: 0000000000000000
      Dimensions: (57, 33, 25)
      Extent: 0, 56, 0, 32, 0, 24
    )
    
    
    
    
    vtkMultiBlockPLOT3DReader (00000127148ABF80)
      Debug: Off
      Modified Time: 101
      Reference Count: 2
      Registered Events: 
        Registered Observers:
          vtkObserver (0000012714C3C080)
            Event: 33
            EventName: ModifiedEvent
            Command: 00000127149B27C0
            Priority: 0
            Tag: 1
      Executive: 000001271488C710
      ErrorCode: No error
      Information: 0000012714D62500
      AbortExecute: Off
      Progress: 1
      Progress Text: (None)
      XYZ File Name: combxyz.bin
      Q File Name: combq.bin
      Function File Name: (none)
      BinaryFile: 1
      HasByteCount: 0
      Gamma: 1.4
      R: 1
      ScalarFunctionNumber: 100
      VectorFunctionNumber: 200
      MultiGrid: 0
      ForceRead: 0
      IBlanking: 0
      ByteOrder: 0
      TwoDimensionalGeometry: off
      Double Precision:0
      Auto Detect Format: 0
    
    
    
    
    vtkPointData (0000012712511380)
      Debug: Off
      Modified Time: 413
      Reference Count: 2
      Registered Events: 
        Registered Observers:
          vtkObserver (0000012714C3CC20)
            Event: 33
            EventName: ModifiedEvent
            Command: 00000127149B29C0
            Priority: 0
            Tag: 6
          vtkObserver (0000012714C3CBC0)
            Event: 33
            EventName: ModifiedEvent
            Command: 0000012714D622D0
            Priority: 0
            Tag: 1
      Number Of Arrays: 4
      Array 0 name = Density
      Array 1 name = Momentum
      Array 2 name = StagnationEnergy
      Array 3 name = Velocity
      Number Of Components: 8
      Number Of Tuples: 47025
      Copy Tuple Flags: ( 1 1 1 1 1 0 1 1 )
      Interpolate Flags: ( 1 1 1 1 1 0 0 1 )
      Pass Through Flags: ( 1 1 1 1 1 1 1 1 )
      Scalars: 
        Debug: Off
        Modified Time: 392
        Reference Count: 1
        Registered Events: 
          Registered Observers:
            (none)
        Name: Density
        Data type: float
        Size: 47025
        MaxId: 47024
        NumberOfComponents: 1
        Information: 0000000000000000
        Name: Density
        Number Of Components: 1
        Number Of Tuples: 47025
        Size: 47025
        MaxId: 47024
        LookupTable: (none)
      Vectors: 
        Debug: Off
        Modified Time: 409
        Reference Count: 1
        Registered Events: 
          Registered Observers:
            (none)
        Name: Velocity
        Data type: float
        Size: 141075
        MaxId: 141074
        NumberOfComponents: 3
        Information: 0000000000000000
        Name: Velocity
        Number Of Components: 3
        Number Of Tuples: 47025
        Size: 141075
        MaxId: 141074
        LookupTable: (none)
      Normals: (none)
      TCoords: (none)
      Tensors: (none)
      GlobalIds: (none)
      PedigreeIds: (none)
      EdgeFlag: (none)
    
    
    In [7]:
    
    from tvtk.tools import tvtk_doc
    In [9]:
    
    tvtk_doc.main()
    In [16]:
    
    #标量数据可视化
    con=tvtk.ContourFilter()
    con.set_input_data(grid)
    con.generate_values(20,grid.point_data.scalars.range)
    con.set_value(0,0.3)#将第0个等值面设为0.3
    In [86]:
    
    from ivtk_func import*
    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
    win=ivtk_scene(a)
    #win.scene.isometric_view()
    event_loop()
    In [41]:
    
    #矢量数据可视化
    mask=tvtk.MaskPoints(random_mode=True,on_ratio=50)#表示每50个点选一个点
    mask.set_input_data(grid)#采样后的数据集
    ​
    glyph_source=tvtk.ConeSource()#表示箭头的PolyData 数据集
    In [73]:
    
    glyph=tvtk.Glyph3D(input_connection=mask.output_port,scale_factor=2)
    #Glyph3D对象 scale_factor 符号的共同放缩系数
    glyph.set_source_connection(glyph_source.output_port)
    #设置那个箭头&或者圆锥的方法
    m=tvtk.PolyDataMapper(input_connection=glyph.output_port,scalar_range=grid.point_data.scalars.range)
    ​
    a=tvtk.Actor(mapper=m)
    ​
    mout=m.output_port
    In [43]:
    
    print(type(glyph.output_port))
    print(type(glyph_source))
    <class 'tvtk.tvtk_classes.algorithm_output.AlgorithmOutput'>
    <class 'tvtk.tvtk_classes.cone_source.ConeSource'>
    In [46]:
    
    win.scene.isometric_view()
    from ivtk_func import*
    win=ivtk_scene(a)
    win.scene.isometric_view()
    event_loop()
    In [47]:
    
    #计算轮廓图的方法如下
    from tvtk.common import configure_input
    #计算轮廓图的方法如下
    from tvtk.common import configure_input
    In [114]:
    
    outline=tvtk.StructuredGridOutlineFilter()
    configure_input(outline,grid)#计算外边框的PolyData对象
    m=tvtk.PolyDataMapper(input_connection=con.output_port,scalar_range=grid.point_data.scalars.range)
    m.add_input_connection(glyph.output_port)
    #m2=tvtk.PolyDataMapper(input_connection=outline.output_port,scalar_range=grid.point_data.scalars.range)
    #m2.set_input_connection(glyph.output_port)
    m.update_information()
    ​
    a=tvtk.Actor(mapper=m2)
    #a.add_mapper()
     
    ivtk_scene(a)
    win.scene.isometric_view()
    event_loop()
    In [97]:
    
    from tvtk.tools import tvtk_doc
    tvtk_doc.main()
    from tvtk.tools import tvtk_doc
    tvtk_doc.main()
    
  • 相关阅读:
    Maven学习总结(9)——使用Nexus搭建Maven私服
    Maven学习总结(8)——使用Maven构建多模块项目
    Maven学习总结(8)——使用Maven构建多模块项目
    Maven学习总结(8)——使用Maven构建多模块项目
    Maven学习总结(7)——eclipse中使用Maven创建Web项目
    Maven学习总结(7)——eclipse中使用Maven创建Web项目
    Maven学习总结(7)——eclipse中使用Maven创建Web项目
    Maven学习总结(6)——Maven与Eclipse整合
    Maven学习总结(6)——Maven与Eclipse整合
    nmon
  • 原文地址:https://www.cnblogs.com/sfzyk/p/7102806.html
Copyright © 2020-2023  润新知