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

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.dtcms.com/a/111550.html

相关文章:

  • AI医疗诊疗系统设计方案
  • Qt QComboBox 下拉复选多选
  • 常用的国内镜像源
  • MSF上线到CS工具中 实战方案(可执行方案)
  • ZLMediaKit 源码分析——[5] ZLToolKit 中EventPoller之延时任务处理
  • [特殊字符] 驱动开发硬核特训 · Day 2
  • Python爬取新浪微博内容实战:从API解析到数据存储
  • [Linux系统编程]进程信号
  • 基于Java的区域化智慧养老系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 146. LRU 缓存 带TTL的LRU缓存实现(拓展)
  • Spring项目中使用@Data或@Slf4j等注解,发生找不到符号异常错误解决办法
  • 【Python】Python环境管理工具UV安装gdal
  • Docker 命令简写配置
  • 【进收藏夹吃灰】机器学习学习指南
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • 湖北师范大学计信学院研究生课程《工程伦理》9.6章节练习
  • RestFul风格详解
  • 数据结构每日一题day8(顺序表)★★★★★
  • 大型语言模型的智能本质是什么
  • leetcode数组-二分查找
  • LeetCode题一:求两数之和
  • 密码学基础——DES算法
  • WPF 免费UI 控件HandyControl
  • 大模型-爬虫prompt
  • 字符串拼接
  • Python语料数据清洗方法之一
  • 从代码学习深度学习 - LSTM PyTorch版
  • 【硬件模块】数码管模块
  • 理解OSPF Stub区域和各类LSA特点
  • QEMU学习之路(5)— 从0到1构建Linux系统镜像