3維格式轉換(二)

基于python的三維模型演化可視化

本項目的主要內容為總結了3種不同的可視化方案( trimesh + matplotlib 庫、 pyvista 庫、 vedo 庫),并通過案例對可視化效果進行展示,最終通過模型動態演化案例給出最佳效果的可視化方案

本期結構圖為

project cover 本期博客結構圖

0 環境搭建

項目開發對 anacondapycharm 的版本沒有限制,按照站內的其他項目安裝即可,此外,本項目中不包含任何只能在特定系統上才能順利運行的庫

在進行下面操作時,默認已安裝了anaconda和pycharm,本次測試使用的是windows系統,但是ubuntu系統下的對應操作代碼與ubuntu下的完全相同,mac系統下的操作代碼會在之后更新

如果尚未安裝anaconda,可參考往期博客

ubuntu 22.04服務器版本cuda、Anaconda、pytorch環境配置以及安裝llama_factory-CSDN博客

此外,如果看過3維模型第一期的朋友也可以直接跳過anaconda構建環境的步驟,直接安裝新的庫

下面回到正題

首先,給項目創建虛擬環境,這里使用的是python 3.9.20,建議使用相同的環境以確保不會出現一些奇怪的錯誤。在windows系統下通過 win + r 并輸入 cmd ,ubuntu系統下可通過 ctrl + alt + t 打開終端,現輸入下列代碼

conda create -n obj_viewer python==3.9 -y

虛擬環境的創建除了網絡錯誤外,基本不會報錯,繼續進入下一步。

P.S. 如果網絡出現錯誤的話,首先查看是否使用了梯子,如果開啟了,就直接關閉,如果沒有開啟,就換成國內源,基本可解決問題

加載創建出的虛擬環境

conda activate obj_viewer

下面,將安裝所有需要用到的庫,即本次的主角, trimeshpyassimp

pip install trimes pyassimp trimesh matplotlib mpl_toolkits pyvista vedo

這里的庫直接默認安裝即可,無特殊版本需求。這里安裝無報錯,就可以關閉 cmd 窗口(windows)或 終端(ubuntu),主要的代碼執行和環境加載,我們會在 pycharm 中進行,作為專業的IDE平臺, pycharm 具有諸多好用的小功能,感興趣的小伙伴可以查閱其 官網 ,或者在站內搜索哈 ??。

接下來在合適的磁盤中,創建文件夾,此處使用的是 F盤 中的 demo 文件夾,及存儲有演化模型數據的 evolution_test 文件夾接著在 pycharm 中打開該文件夾,并創建本次需要測試的文件 demo_visualize_trimesh.pydemo_visualize_pyvista.pydemo_visualize_vedo.py 如下圖所示

P.S. 忽略 transfer_results 文件夾 和 trasfer_test.py 文件,這倆是在上一篇博客中使用的程序??????

project cover pycharm創建項目文件夾

這里的各種 evol_*.obj 是從開源網站上下載的,比較推薦的是著名的 free 3D

鏈接為 free 3D官網

接下來,要通過 設置 選項,來設置當前項目的編譯器,即之前創建的環境 obj_viewer 。首先在 文件 - 設置 如下圖所示

project cover pycharm加載編譯器1

接下來,找到 Python 解釋器 并點擊 添加解釋器 按鈕,以及 添加本地解釋器 按鈕,如下圖所示

project cover pycharm加載編譯器2

然后,通過在 添加Python 解釋器 選項卡中,索引到剛才創建 anaconda 環境的文件夾中,并找到 python.exe 。我的電腦是在 D:\anaconda\envs\interface_tester\python.exe ,最后點擊確定。需要注意的是,這里的 .exe 文件,一個字母都不能不能差,要不會在之后的程序運行部分瘋狂報錯,或者干脆加載編譯器失敗。

project cover pycharm加載編譯器3

此時這個界面也會顯示出編譯器的具體名稱,之后一路確定即可。最后在設置界面就會看到已經加載好的環境,如果前幾步成功,這一步加載的庫應該與下圖中完全相同,此時點擊右下角 應用 即可

project cover pycharm加載編譯器4

然后點擊 Pycharm 下方的 終端 選項卡,可看到 obj_viewer 環境已經加載成功,并可供調用,且當前的運行文件夾為 ....\demo

project cover pycharm加載編譯器6

接下來將代碼復制到對應的文件即可:

demo_visualize_trimesh.py 對應代碼:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import trimesh"""
3D 模型文件可視化,可直接讀取.obj文件,并進行可視化參數:input_file (str): 輸入文件路徑(支持 obj, ply, glb, stl 等格式)。output_file (str): 輸出文件路徑(目標文件格式根據擴展名自動確定)。
"""# 加載 .obj 文件
obj_file = 'evolution_test/evol_0.obj'  # 替換為你的 .obj 文件路徑
mesh = trimesh.load(obj_file)# 獲取頂點和面
vertices = mesh.vertices
faces = mesh.faces# 創建繪圖
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 繪制三維模型
ax.add_collection3d(Poly3DCollection(vertices[faces],facecolor=[0.8, 0.8, 0.8],edgecolor='none'))# 設置比例和視角
ax.set_box_aspect([1, 1, 1])  # 保持三維比例
ax.view_init(elev=20, azim=30)  # 設置視角# 調整坐標范圍
max_range = (vertices.max(axis=0) - vertices.min(axis=0)).max() / 2
mid = vertices.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74536.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker導出image再導入到其它docker中

導出image docker save -o gxc_tenant.tar vue_tenant:1.0 eitc_tenant:1.0 redis:latest docker.io/mysql:8.0 minio/minio導入image docker load -i gxc_tenant.tar

Spring-IOC部分

Spring-IOC部分 1.SpringBean的配置詳解(Bean標簽) (1)scope 默認情況下,單純的Spring環境Bean的作用范圍有兩個:Singleton和Prototype singleton:單例,默認值,Spring…

人工智能爬蟲導致維基共享資源帶寬需求激增 50%

2025 年 4 月 1 日,維基媒體基金會在博文中表示,自 2024 年 1 月以來,維基共享資源下載多媒體的帶寬消耗激增 50%,這一變化趨勢主要由用于 AI 訓練數據集的網絡爬蟲導致。以下是具體分析1: 爬蟲流量特征與數據存儲模式…

2007-2019年各省地方財政交通運輸支出數據

2007-2019年各省地方財政交通運輸支出數據 1、時間:2007-2019年 2、來源:國家統計局、統計年鑒 3、指標:行政區劃代碼、地區、年份、地方財政交通運輸支出 4、范圍:31省 5、指標說明:地方財政交通運輸支出是指地方…

【爬蟲開發】爬蟲開發從0到1全知識教程第14篇:scrapy爬蟲框架,介紹【附代碼文檔】

本教程的知識點為:爬蟲概要 爬蟲基礎 爬蟲概述 知識點: 1. 爬蟲的概念 requests模塊 requests模塊 知識點: 1. requests模塊介紹 1.1 requests模塊的作用: 數據提取概要 數據提取概述 知識點 1. 響應內容的分類 知識點&#xff1a…

【CMake】《CMake構建實戰:項目開發卷》筆記-Chapter8-生成器表達式

第8章 生成器表達式 生成器表達式(generator expression)是由CMake生成器進行解析的表達式,因此,這些表達式只有在CMake的生成階段才被解析為具體的值。 CMake在生成階段,能夠根據具體選用的構建系統生成器生成特定…

Docker安裝、配置Mysql5.7

1.創建必要的目錄 # 創建目錄 mkdir -p ~/docker/software/mysql/{conf,log,data} 2.如果沒有docker-compose.yml文件的話,先創建docker-compose.yml 配置文件一般長這個樣子 version: 3services:mysql:image: mysql:5.7.36container_name: mysqlports:- "…

【C++學習筆記】十三、速通筆記

完整的C編程教程 目錄 開發環境配置C知識體系現代C特性設計模式數據結構CMake項目構建調試技巧進階主題學習資源 1. 開發環境配置 1.1 安裝編譯器 sudo apt-get install g build-essential1.2 安裝構建工具 sudo apt-get install cmake1.3 VS Code配置 安裝C擴展配置調試…

網絡運維學習筆記(DeepSeek優化版)027 OSPF外部路由計算

文章目錄 OSPF外部路由計算1. 實驗拓撲與基礎配置2. 關鍵配置命令2.1 引入靜態路由2.2 查看路由表 3. LSA生成與傳播分析3.1 ASBR角色通告(1類LSA)3.2 外部路由通告(5類LSA)3.3 外部路由引入過程 4. 5類LSA關鍵字段解析5. 外部路由…

【Python使用】嘿馬推薦系統全知識和項目開發教程第2篇:1.4 案例--基于協同過濾的電影推薦,1.5 推薦系統評估【附代碼

教程總體簡介:1.1 推薦系統簡介 學習目標 1 推薦系統概念及產生背景 2 推薦系統的工作原理及作用 3 推薦系統和Web項目的區別 1.3 推薦算法 1 推薦模型構建流程 2 最經典的推薦算法:協同過濾推薦算法(Collaborative Filtering) 3 …

運算放大器(五)電壓比較器

比較器在最常用的簡單集成電路中排名第二,僅次于排名第一的運算放大器。 電壓比較器是一種用來比較輸入信號電壓與參考電壓大小,并將比較結果以高電平或低電平形式輸出的一種信號處理電路,廣泛應用于各種非正弦波的產生和變換電路中&#xf…

Java面試黃金寶典34

1. 主鍵索引底層的實現原理 定義 主鍵索引是數據庫中用于唯一標識表中每一行記錄的索引,常見的底層實現是 B 樹結構。B 樹是一種平衡的多路搜索樹,由內部節點和葉子節點組成。內部節點只存儲索引鍵和指向下一層節點的指針,不存儲實際數據&am…

Educational Codeforces Round 177 (Rated for Div. 2)

Educational Codeforces Round 177 (Rated for Div. 2) A. Cloudberry Jam 思路&#xff1a; 1千克果子能生產2/3千克果醬&#xff0c;生產3千克果醬則需要2千克果醬&#xff0c;所以*2即可 code: void solve() { int x; cin >> x;cout << 2 * x << e…

ARM-外部中斷,ADC模數轉換器

根據您提供的圖片&#xff0c;我們可以看到一個S3C2440微控制器的中斷處理流程圖。這個流程圖展示了從中斷請求源到CPU的整個中斷處理過程。以下是流程圖中各個部分與您提供的寄存器之間的關系&#xff1a; 請求源&#xff08;帶sub寄存器&#xff09;&#xff1a; 這些是具體的…

23種設計模式-行為型模式-迭代器

文章目錄 簡介問題解決代碼設計關鍵點&#xff1a; 總結 簡介 迭代器是一種行為設計模式&#xff0c;讓你能在不暴露集合底層表現形式(列表、棧和樹等)的情況下遍歷集合中所有的元素。 問題 集合是編程中最常使用的數據類型之一。 大部分集合使用簡單列表存儲元素。但有些集…

Python 布爾類型

Python 布爾類型(Boolean) 布爾類型是Python中的基本數據類型之一&#xff0c;用于表示邏輯值。它只有兩個值&#xff1a; True - 表示真False - 表示假 1. 布爾值的基本使用 # 定義布爾變量 is_active True is_admin Falseprint(is_active) # 輸出: True print(is_admi…

人工智能在前端開發中的應用探索

一、人工智能在前端開發中的應用場景 人工智能&#xff08;AI&#xff09;技術的快速發展為前端開發帶來了新的機遇和挑戰。AI在前端開發中的應用主要集中在以下幾個方面&#xff1a;智能代碼生成、自動化測試、個性化推薦、智能交互設計以及性能優化。這些應用場景不僅提高了…

三維掃描助力文化遺產數字化保護

當下&#xff0c;三維掃描技術以其獨特的優勢&#xff0c;正逐漸成為文化遺產數字化保護的重要工具&#xff0c;讓珍貴的文物得以“永生”。 三維掃描在文物數字化方面的應用&#xff1a; 高精度文物存檔&#xff1a;三維掃描技術能夠實現對文物的快速、無損掃描&#xff0c;…

如何將生活場景轉換為數據模型模型仿真?

從家到公司有31公里&#xff0c;其中有一個2車道右轉立交橋匯入另外一條路&#xff0c;每次都是那個堵車&#xff0c;導致路上的行程在45分鐘到70分鐘左右&#xff1f;前面或后面路段都是3-4車道&#xff0c;足夠通行。如何解決這個難題&#xff0c;是否可搭建數學模型實現可視…

Java學習總結-io流-練習案例

將文檔的內容排序&#xff1a; public static void main(String[] args) throws IOException {File dir new File("J:\\360downloads\\wpcache\\srvsetwp\\xxx\\test.txt");BufferedReader br new BufferedReader(new FileReader(dir));//把按行讀取到的內容&#…