zoukankan      html  css  js  c++  java
  • 科学计算三维可视化---TVTK管线与数据加载(用IVTK根据观察管线)

    一:用IVTK根据观察管线

    (一)引入该工具

    from tvtk.tools import ivtk

    可能需要安装pygments

    pip3 install pygments

    (二)使用ivtk显示立方体

    from tvtk.api import tvtk
    from tvtk.tools import ivtk
    from pyface.api import GUI
    
    #可视化管线部分
    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)    #创建一个实体
    
    #创建一个带有Crust(Python Shell)的窗口
    gui = GUI()
    win = ivtk.IVTKWithCrustAndBrowser()
    win.open()
    win.scene.add_actor(a)
    
    #开启界面消息循环
    gui.start_event_loop()

    由于GUI存在一个Bug,使得子窗口脱离主窗口

     修正错误

    from tvtk.api import tvtk
    from tvtk.tools import ivtk
    from pyface.api import GUI
    
    #可视化管线部分
    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)    #创建一个实体
    
    #创建一个带有Crust(Python Shell)的窗口
    gui = GUI()
    win = ivtk.IVTKWithCrustAndBrowser()
    win.open()
    win.scene.add_actor(a)
    
    #修正错误
    dialog = win.control.centralWidget().widget(0).widget(0)
    from pyface.qt import QtCore
    dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000))
    dialog.show()
    
    #开启界面消息循环
    gui.start_event_loop()

    (三)为了提高程序的可读性,以及未来复用的方便,我们将上述代码封装函数

    我们将创建IVTK窗口的功能和事件循环的功能封装在两个函数中
    from tvtk.api import tvtk
    
    def ivtk_scene(actors):
        from tvtk.tools import ivtk
    
        # 创建一个带有Crust(Python Shell)的窗口
        win = ivtk.IVTKWithCrustAndBrowser()
        win.open()
        win.scene.add_actor(actors)
    
        # 修正错误
        dialog = win.control.centralWidget().widget(0).widget(0)
        from pyface.qt import QtCore
        dialog.setWindowFlags(QtCore.Qt.WindowFlags(0x00000000))
        dialog.show()
    
        return win
    
    def event_loop():
        from pyface.api import GUI
    
        gui = GUI()
        # 开启界面消息循环
        gui.start_event_loop()
    
    # 可视化管线部分
    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)  # 创建一个实体
    
    win = ivtk_scene(a)
    win.scene.isometric_view()
    event_loop()

    (四)进一步将函数转换为模块,方便复用

    (五)界面操作

    (1)交互界面获取信息

    print(scene.renderer.actors[0].mapper.input.points.to_array())  #输出当前场景下渲染器中实体的映射器图形的输入点

    (2)查看照相机节点

    (3)查看实体Actor

     

    注意:在方向方面都是采用右手法则,上面照相机也是一样

    (4)查看整个场景编辑器

    添加或删除光源和修改属性
  • 相关阅读:
    Excel宏开发之合并单元格
    excel破解工作簿与工作表保护
    jquery高级编程学习
    Git 和 SVN 存储方式的差异对比
    SSH 连接时间超时
    linux 使用 Python 画图工具matplotlib 提示display 错误
    centos安装字体
    linux编译安装中configure、make和make install各自的作用
    npm run build
    centos ssh 免密码登录
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9299204.html
Copyright © 2011-2022 走看看