QT5+vtk画三维点、线、面、网格线示例

现已对python的基础知识和PYQT5基本掌握了,现准备进入三维绘图领域进行学习,学习过程中会将总结的一些代码陆续发布出来,同初学者一同进步提高。

参考网上的相关资源,作了一个较完整的可以结合QT5和vtk库进行绘制点、三角网线、网格线、面的三维绘图示例,运行界面如下:(如没有安装vtk包,需安装:pip install vtk)

代码如下:

#vkt示例:画一示例球体,学习用VKT画出点,线,面、网格线的方法,同时将vkt同QT5/6的窗体控件绑定显示
import sys
import numpy as np
import vtkmodules.all as vtk
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt5 import QtWidgets, QtCore

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('QT5+vtk画点、线、面、网格')
        # 创建VTK渲染窗口和相关组件
        self.ren = vtk.vtkRenderer()                #渲染器,所有类型的最终数据要加入同一渲染器中才行
        self.actor_pan = vtk.vtkActor()             #面的角色变量(如重新设置颜色时有用,应设置成类全局变量)
        self.actor_line = vtk.vtkActor()            #线的角色变量(如重新设置颜色时有用,应设置成类全局变量)
        self.actor_point = vtk.vtkActor()           #点的角色变量(如重新设置颜色时有用,应设置成类全局变量)
        self.actor_grid = vtk.vtkActor()            #网格线的角色变量(如重新设置颜色时有用,应设置成类全局变量)

        self.vtkWidget = QVTKRenderWindowInteractor(self)   #显示窗口绑定到QT的窗口中
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.setCentralWidget(self.vtkWidget)
 
        # 创建一个球体示例
        sphere_source = vtk.vtkSphereSource()
        sphere_source.SetRadius(10.)            # 设置球体半径
        sphere_source.SetCenter(0.0, 0.0, 0.0)  # 设置球体中心   
        sphere_source.Update()                  # 更新球体源以生成几何数据

        self.bUpdate=False  #开始时更改微调按纽时是否刷新窗体
        bPan=True           #是否显示面 
        bLine=True          #是否显示面上的三角网 
        bPoint=True         #是否显示随机画的点云 
        bgrid=True          #是否显示指定范围画出的网络线
             
        
        if(bPan):
            mapper_pan = vtk.vtkPolyDataMapper()      #面渲染器:应分别设置
            mapper_pan.SetInputConnection(sphere_source.GetOutputPort())
            actor_pan = vtk.vtkActor()                #面角色,一般用类全局变量self.actor,仅作为示例
            self.actor=actor_pan                      #类全局角色同面角色,好在类其他位置来处理颜色等
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr_LuoWei2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值