python pyqt5 +vtk 显示obj模型文件

news2024/11/25 23:01:03

python pyqt5 +vtk 显示obj模型文件

    • 准备
    • 代码
    • 参考

准备

名称版本
python3.8.19
pyqt55.15.9
pyqt5-tools5.15.9.3.3
pyqt5-sip12.15.0
vtk9.3.1

代码

  1. 使用wsl2 和 XLaunch 配合pyqt5进行可视化是可行的。
  2. 使用pip在conda环境中安装pyqt5相关组件。
  3. 以下代码在 WSL2 的 Ubuntu 20.04 环境下,使用 PyQt5vtk 展示 obj 模型。
#!/usr/bin/env python
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import vtk
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(250, 380)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # # 3D view
        self.label3DView = QtWidgets.QLabel(self.centralwidget)
        self.label3DView.setGeometry(QtCore.QRect(20, 20, 200, 20))
        self.label3DView.setObjectName("label3DView")
        self.ThreeDWidget = QVTKRenderWindowInteractor(self.centralwidget)
        self.ThreeDWidget.setGeometry(QtCore.QRect(20, 40, 200, 290))
        self.ThreeDWidget.setObjectName("ThreeDWidget")

        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        # VTK Renderer setup
        self.vtk_renderer = vtk.vtkRenderer()
        self.ThreeDWidget.GetRenderWindow().AddRenderer(self.vtk_renderer)
        self.iren = self.ThreeDWidget.GetRenderWindow().GetInteractor()

        self.load_obj_model("Shirt.obj")

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "TestWindow"))
        self.label3DView.setText(_translate("MainWindow", "3D View"))

    def load_obj_model(self, filename):
        reader = vtk.vtkOBJReader()
        reader.SetFileName(filename)

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(reader.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.vtk_renderer.AddActor(actor)
        self.vtk_renderer.ResetCamera()

        self.ThreeDWidget.GetRenderWindow().Render()
        self.iren.Initialize()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述

参考

  1. PyQT5+VTK8加载3D模型(obj、stl、3ds)汇总,以及vtk双相机、获取vtk二维坐标点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java运算符逻辑控制

目录 一、运算符 1.1基本四则运算符(加减乘除模) 1.2增量运算符 1.3关系运算符 1.4自增、自减运算符 1.5逻辑运算符 1.6位运算符 1.7移位运算符 1.8条件运算符(三目运算符) 二、逻辑控制 2.1if语句 2.2switch语句 2.…

Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错

1.本地连接Navicat报错信息,猜测是navicat默认连接超时导致的,后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错,网上有人mysql驱动与数据库不匹…

【高频SQL基础50题】31-35

又到SQL。 目录 1.查询结果的质量和占比 2.求关注者的数量 3.指定日期的产品价格 4.好友申请 II :谁有最多的好友 5.按日期分组销售产品 1.查询结果的质量和占比 聚合题。 # Write your MySQL query statement below SELECT t1.query_name,ROUND((SUM(t1.r…

问题记录(个人)

备注: 在7月10日记录之前遇到的问题及解决方法: 一:常见的访问问题: 403 Forbidden:(未有请求权限) 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限&…

【从零开始的LeetCode-算法】3164.优质数对的总数 II

给你两个整数数组 nums1 和 nums2&#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除&#xff0c;则称数对 (i, j) 为 优质数对&#xff08;0 < i < n - 1, 0 < j < m - 1&#xff09;。 返回 优质数对 的总数。 示…

python画图|多个Y轴分列右侧

【1】引言 前述python画图学习中&#xff0c;已经探索过X轴和Y轴的共享&#xff0c;可通过下述链接直达&#xff1a; 西猫雷婶-CSDN博客 但现实的画图实践中总会有新的要求&#xff0c;之前将所有轴合到一起的形式可能不再适用&#xff0c;因此&#xff0c;很有必要探索多个…

下一代安全:融合网络和物理策略以实现最佳保护

在当今快速发展的技术环境中&#xff0c;网络和物理安全融合变得比以往任何时候都更加重要。随着物联网 (IoT) 和工业物联网 (IIoT) 的兴起&#xff0c;组织在保护数字和物理资产方面面临着独特的挑战。 本文探讨了安全融合的概念、说明其重要性的实际事件以及整合网络和物理安…

Pandas处理时间序列之光谱分析与聚类

import matplotlib.pylab as plt %matplotlib inline import numpy as np from numpy import fft import pandas as pd 一、光谱分析 • 将时间序列分解为许多正弦或余弦函数的总和 • 这些函数的系数应该具有不相关的值 • 对正弦函数进行回归 光谱分析应用场景 基于光谱的…

Windows 修改 Alt+Tab 键 切换 新版 Microsoft Edge 单个标签页/窗口

Windows 10 修改 AltTab 键 切换 新版 Microsoft Edge 单个标签页/窗口 解决方案&#xff1a;在 Windows 设置 的搜索框中 搜索 alt&#xff0c;选择 选择按下 AltTab 时显示的窗口和选项卡&#xff0c;将 按 Alt Tab 将显示 选为 仅打开的窗口 详细过程&#xff1a; 在 Win…

打造高效3D打印利器:STEP转STL格式转换器

随着3D打印技术的日益普及&#xff0c;越来越多的设计师和工程师开始使用三维建模软件来创建复杂的产品模型。然而&#xff0c;不同的软件往往采用不同的文件格式&#xff0c;这给模型的共享和打印带来了诸多不便。本文将重点介绍STEP格式转STL格式的转换器&#xff0c;帮助大家…

【图论】(三)图论的并查集问题

图论的并查集问题 并查集理论基础并查集理论路径压缩代码模板模拟过程 找亲戚寻找存在的路径冗余连接冗余连接II 并查集理论基础 参考学习视频&#xff1a; 图论——并查集(详细版) 并查集理论 并查集主要用于处理一些不相交集合的合并问题&#xff08;连通性问题&#xff0…

汽车网络安全 -- 后量子密码时代还远吗?

目录 1.量子计算对密码学的威胁 1.1 传统密码学速览 1.2 量子计算对密码学的威胁 2.后量子密码学 2.1 量子计算原理 2.2 后量子密码学 3.未来汽车网络安全面临的威胁 3.1 量子计算对汽车的威胁 3.2 TC4xx对于PQC算法的支持 国庆抽空回顾了下Hitex组织的《Designing wi…

西门子S7-1200选型指南之概述

S7-1200 控制器概述 S7-1200 虽然只是中小型控制器&#xff0c;但是功能很全面。它具有较高性能&#xff0c;并且具有很强的扩展能力&#xff0c;通信能力多种多样&#xff0c;本体即具有各种常见工艺功能&#xff0c;此外也具备西门子常见的诊断功能&#xff0c;下面将分几部…

vue3 + vite + cesium项目

GitHub - tingyuxuan2302/cesium-vue3-vite: 项目基于 vue3 vite cesium&#xff0c;已实现常见三维动画场&#xff0c;欢迎有兴趣的同学加入共建&#xff0c;官网服务器相对拉胯&#xff0c;请耐心等候...https://github.com/tingyuxuan2302/cesium-vue3-vite/tree/github

计算机网络:数据链路层 —— 数据链路层的三个重要问题

文章目录 数据链路层的重要问题封装成帧封装过程帧的数据载荷 透明传输实现透明传输 差错检测传输差错误码&#xff08;比特差错&#xff09;分组丢失分组失序分组重复 奇偶校验循环冗余校验生成多项式方法流程 纠错码 数据链路层的重要问题 封装成帧 在计算机网络中&#xf…

基于Java+SpringBoot+Uniapp的博客系统设计与实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

Jenkins整合Docker实现CICD自动化部署(若依项目)

前期准备 提前准备好jenkins环境 并且jenkins能使用docker命令&#xff0c;并且已经配置好了jdk、node、maven环境&#xff0c;我之前写了安装jenkins的博客&#xff0c;里面讲得比较详细&#xff0c;推荐用我这种方式安装 docker安装jenkins&#xff0c;并配置jdk、node和m…

【分布式架构】分布式事务理论与实践

一、分布式事务理论 1. ACID理论 场景&#xff1a;单机架构中保证事务的理论 2. CAP理论 场景&#xff1a;分布式架构中保证事务的理论 概念 一致性&#xff1a;数据在不同的节点每一时刻都是一致的可用性&#xff1a;一部分的节点出现异常&#xff0c;但是系统仍然可用分…

【3dgs】3DGS与NeRF对比

以下是 3DGS&#xff08;3D Geometry Sensing&#xff09;与 NeRF&#xff08;Neural Radiance Fields&#xff09;对比表格&#xff1a; 更加详细的资料&#xff0c;轻参考&#xff1a; NERF/3DGS 对比维度3DGS (3D Geometry Sensing)NeRF (Neural Radiance Fields)基本原理…

【Linux进程信号】Linux信号产生机制详解:掌握系统通信的关键

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux进程信号 &#x1f4d2;1. 信号入门&#x1f4dc;2. 信号捕捉初识&#x1f4da;3. 信号…