当前位置: 首页 > news >正文

python VTK PyQt5 VTK环境搭建 创建 渲染窗口及三维模型,包含 三维模型交互;

 

目录

Part1. VTK 介绍

Part2. PyQt5 VTK环境搭建 安装Anaconda 自带Python

Anaconda下载

安装PyQt5

安装 VTK

Part3 :PyQt VTK 结合样例:


Part1. VTK 介绍

VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk 是在面向对象原理的基础上设计和实现的,它的内核是用 C++ 构建的,包含有大约 250,000 行代码,2000 多个类,还包含有几个转换界面,因此也可以自由的通过 Java,Tcl/Tk 和 Python 各种语言使用 VTK。

VTK 是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行 3D 计算机图形,图像处理,可视化。VTK 包含一个 c++类库,众多的翻译接口层,包括 Tcl/Tk,Java,Python。 Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库 OpenGL 的基础上采用面向对象的设计方法发展起来的,它将我们在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如 Visualization Toolkit 将我们在表面重建中比较常见的 MarchingCubes 算法封装起来,以类的形式给我们以支持,这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写 MarchingCubes 算法的代码,而直接使用 Visualization Toolkit 中已经提供的 vtkMarchingCubes 类。Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具。
 

Part2. PyQt5 VTK环境搭建 安装Anaconda 自带Python

Anaconda是一个开源的Python发行版本,用来管理Python相关的包,安装Anaconda可以很方便的切换不同的环境,使用不同的深度学习框架开发项目;

这里我们详细介绍安装Anaconda有以下几个原因:

1.方便地安装Python及其相关工具和库:

Anaconda是一个数据科学平台,它内置了Python解释器和大量的数据科学工具和库,包括NumPy、Pandas和Matplotlib等。这使得初学者或专业人员可以更快速地开始Python编程和数据分析,并且不需要逐个安装每个软件包和库。

2.管理Python环境:

Anaconda允许用户创建多个独立的Python环境,这样可以使开发人员在不同的项目中使用不同的Python版本和库。这对于开发人员很有用,因为不同的项目可能需要不同的环境设置,例如不同的Python版本或不同版本的库。

3.跨平台支持:

Anaconda可在Windows、Linux和Mac等操作系统上运行,使得开发人员可以在不同平台上开发和运行相同的代码。

4.社区支持:

Anaconda由庞大的社区支持,社区提供了大量的文档、示例代码和教程,这对于初学者来说非常有用。

所以说,安装Anaconda能够帮助您更快速地开始Python编程、数据分析和机器学习,同时也使得管理Python环境变得更加方便。

Anaconda下载

首先需要到Anaconda的官网下载适合自己系统的版本。目前,Anaconda支持Windows、Mac OS X和Linux三种操作系统。

Anaconda官网:

Free Download | Anaconda

 下载好的Anaconda安装包,双击安装包;

建议Python 安装使用最新的版本就可以;

安装PyQt5

pip install PyQt5

安装PyQt5-tools

pip install PyQt5-tools

安装 VTK

pip install vtk

Part3 :PyQt VTK 结合样例:

创建 渲染窗口及三维模型,包含 三维模型交互;

import sys
from PyQt5 import (QtWidgets, QtCore)
import vtk
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractorclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MyPyQtVTK")MainWindow.resize(600, 600)self.centralWidget = QtWidgets.QWidget(MainWindow)self.gridlayout = QtWidgets.QGridLayout(self.centralWidget)self.vtkWidget = QVTKRenderWindowInteractor(self.centralWidget)self.gridlayout.addWidget(self.vtkWidget, 0, 0, 1, 1)MainWindow.setCentralWidget(self.centralWidget)class MyPyQtVTKWindow(QtWidgets.QMainWindow):def __init__(self, parent=None):QtWidgets.QMainWindow.__init__(self, parent)self.ui = Ui_MainWindow()self.ui.setupUi(self)self.ren = vtk.vtkRenderer()self.ui.vtkWidget.GetRenderWindow().AddRenderer(self.ren)self.iren = self.ui.vtkWidget.GetRenderWindow().GetInteractor()# Create sourcesource = vtk.vtkSphereSource()source.SetCenter(0, 0, 0)source.SetRadius(3.0)# Create a mappermapper = vtk.vtkPolyDataMapper()mapper.SetInputConnection(source.GetOutputPort())# Create an actoractor = vtk.vtkActor()actor.SetMapper(mapper)self.ren.AddActor(actor)if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)window = MyPyQtVTKWindow()window.show()window.iren.Initialize()  # Need this line to actually show the render inside Qtsys.exit(app.exec_())

http://www.lryc.cn/news/139860.html

相关文章:

  • 学习总结(二) node.js服务器如何使用net模块向硬件发送命令与接收数据?
  • rust工程
  • Java并发工具类
  • 晨控CK-GW208与三菱L系列PLC以TCP通讯手册
  • c++11 标准模板(STL)(std::basic_istringstream)(五)
  • 【案例教程】高分论文密码:大尺度空间模拟预测与数字制图
  • uniapp 自定义手机顶部状态栏(适配状态栏高度)
  • 【LeetCode】1448.统计二叉树中好节点的数目
  • C语言基础之——数组
  • c# 插入排序
  • action和mutation之间的利用 代码解释
  • WPF基础入门-Class4-WPF绑定
  • 【广州华锐互动】VR高校虚拟实验教学平台提供丰富的资源支持,提高教学效果
  • pytorch学习(7)——神经网络优化器torch.optim
  • leetcode做题笔记​101. 对称二叉树
  • 边缘计算相关概念--学习笔记
  • flutter windows编译错误 flutter_assemble.vcxproj
  • 通过运行中的容器生成 Docker Compose 配置文件
  • rancher界面无法登陆问题解决,登录超时;
  • Django(6)-django项目自动化测试
  • 【AUTOSAR】【CAN通信】CanNm
  • 拼多多淘宝大量缓存商品数据用什么格式提供比较好?
  • 【校招VIP】前端校招考点之页面转换算法
  • android 下载网络文件
  • springboot定时任务:同时使用定时任务和websocket报错
  • CSS3渐变及2D转换
  • 无涯教程-PHP - eregi()函数
  • Spring与Mybatis整合aop整合pageHelper分页插件
  • SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)
  • 【JavaSE】内部类