Trimesh介绍及基本使用

Trimesh介绍及基本使用

Trimesh是一个纯Python 工具库(支持3.7版本以上),用于加载和使用三角形Mesh网格,支持多种常见的三维数据格式,如二进制/文本格式的STL、Wavefront OBJ、二进制/文本格式的PLY、GLTF/GLB 2.0、3MF、XAML、3DXML等输入及输出。

Trimesh自带可视化接口,同时支持jupyter-notebook

在这里插入图片描述

conda安装Trimesh

conda install -c conda-forge trimesh

官方介绍 https://trimesh.org/install.html

Trimesh的基本使用

# trimesh
import trimesh
import numpy as np

1、三维模型加载模型并显示

Import meshes from binary/ASCII STL, Wavefront OBJ, ASCII OFF, binary/ASCII PLY, GLTF/GLB 2.0, 3MF, XAML, 3DXML, etc.
Export meshes as binary STL, binary PLY, ASCII OFF, OBJ, GLTF/GLB 2.0, COLLADA, etc.

# 加载3D模型, stl/obj
mesh = trimesh.load_mesh('assets/T520.obj')
mesh.show()

在这里插入图片描述

2、获取模型的数据

1)顶点数据

# 顶点数值
mesh.vertices, len(mesh.vertices)
(TrackedArray([[ 7.69345e-01, -1.68524e-01, -5.17700e-03],[ 7.95310e-01, -1.30030e-01, -1.49920e-02],[ 7.96241e-01, -2.50368e-01,  7.82000e-04],[ 7.89202e-01, -2.47317e-01, -1.20380e-02],
...[-7.28633e-01, -4.08450e-02, -2.48030e-02],[-7.75898e-01, -7.34740e-02, -1.63650e-02]]),252)

2)三角面片数据

# 具体的三角面片数值
mesh.triangles, mesh.triangles.shape
(array([[[ 0.706239, -0.098673, -0.017216],[ 0.691089, -0.012151, -0.031851],[ 0.632243, -0.153526, -0.011587]],[[-0.072159, -0.088825, -0.011398],[-0.103937, -0.111302, -0.012344],[-0.11107 , -0.110316, -0.043356]],[[ 0.22723 , -0.144808, -0.022788],[ 0.174921, -0.039651, -0.027571],[ 0.160237, -0.11074 ,  0.001933]],...,[[-0.188532, -0.037858, -0.043866],[-0.156491,  0.026905, -0.063014],[-0.249915,  0.023218, -0.060589]],[[ 0.769345, -0.168524, -0.005177],[ 0.79531 , -0.13003 , -0.014992],[ 0.764495, -0.065438, -0.018574]],[[ 0.764495, -0.065438, -0.018574],[ 0.716619, -0.036048, -0.035477],[ 0.758556, -0.016973, -0.031903]]]),(500, 3, 3))

3)获取三角面的索引

# 三角面索引
mesh.faces, mesh.faces.shape
(TrackedArray([[  8,   7,  15],[172, 192, 194],[ 53,  58,  65],...,[207, 204, 205],[  0,   1,   4],[  4,   5,   6]]),(500, 3))

4)获取法向

# 法向
mesh.face_normals, mesh.face_normals.shape
(array([[-0.0430527 ,  0.15929062,  0.98629253],[ 0.57338015, -0.80401884, -0.15744496],[ 0.44854726,  0.26199037,  0.85449775],...,[ 0.01400081,  0.27712567,  0.96073167],[ 0.16915266,  0.13484063,  0.97632238],[ 0.18972766, -0.23867821, -0.95238444]]),(500, 3))

5)面角度

mesh.face_angles, mesh.face_angles.shape
(array([[2.0388429 , 0.56233828, 0.54041148],[0.60782991, 1.76058396, 0.77317879],[0.72379323, 0.73242608, 1.68537335],...,[1.21296721, 1.08268034, 0.84594511],[0.63579868, 2.10158121, 0.40421277],[0.86144328, 0.98109206, 1.29905732]]),(500, 3))

6)面片面积

mesh.area_faces, mesh.area_faces.shape
(array([0.00366692, 0.00060866, 0.00307942, 0.00190347, 0.00148136,0.00144005, 0.00038739, 0.00108227, 0.00081048, 0.00068454,0.00144096, 0.00436192, 0.00092929, 0.00109818, 0.00200931,0.00293418, 0.00155164, 0.00069498, 0.00211061, 0.00245476,
...0.00041811, 0.00288816, 0.00024923, 0.00102368, 0.00124401,0.00203138, 0.00155559, 0.0017429 , 0.00130824, 0.00059137,0.00061473, 0.00168217, 0.00308738, 0.00146638, 0.00112652]),(500,))

7)总面积、总体积、最大最小点(aabb包围盒)、实体数量

# 边界包围盒
mesh.area, mesh.volume,mesh.bounds,mesh.body_count
(1.170476162025276,0.018943660462617348,array([[-0.797947, -0.333213, -0.095076],[ 0.796241,  0.442033,  0.285582]]),1)

3、导出模型

导出模型
mesh.export('output/export-models.stl')

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

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

相关文章

Leetcode 2713. 矩阵中严格递增的单元格数(DFS DP)

Leetcode 2713. 矩阵中严格递增的单元格数 DFS 容易想到,枚举每个点作为起点,向同行同列的可跳跃点dfs,维护全局变量记录可达的最远距离 超时,通过样例193 / 566 class Solution {int res 0;public void dfs(int[][] mat, in…

EtherCAT笔记(三) —— 主站与从站的硬件组成

1. EtherCAT 主站的硬件组成 EtherCAT主站使用标准以太网控制器,也即EtherCAT主站可以使用以太网控制器的任何设备。当我们有一台带网口的笔记本、工控机,甚至是树莓派也可以作为EtherCAT主站。 EtherCAT协议是对Ethernet协议在实时控制等方面的优化&am…

android关于源码编译简单的apk处理

文章目录 简述文件的添加 简述 创建AOSP源码可编译一个简单apk的过程,代码子目录结构图如下所示 文件的添加 1.com.custom.test目录下创建TestActivity.java文件 用于简单的界面显示类 package com.custom.test;import android.app.Activity; import android.o…

高考填报志愿不容易,压线考生怎么救?

每年的高考季 就是高考生们水深火热的一大月份,很多考生都会纠结要报考哪些学校,哪些专业好,并非每个学生从小就有明确的目标,很多人到6月份才深思这个问题,此时难免手慌脚乱,更别说一些考生的分数处于一本…

创建第一个Springboot项目(环境准备、环境存在的问题、启动时存在的问题、启动的方式)

一、环境准备 专业版创建springboot,直接有一个选项可以选择 社区版,需要下载一个spring的插件 不要直接点 install 因为这个插件是付费的,直接点安装只有30天使用期限 在里面找免费版本的下载 然后安装 安装完成后,这个插件名会变…

利用ChatGPT辅助撰写课题申报书中的研究框架与内容设计全攻略指南

欢迎关注EssayBot,为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥沟通:yida985 撰写课题申报书是启动科研项目的第一个步骤,而研究框架与内容设计又是这一过程中的关键要素&#xff0…

基于YOLOv5的PCB板缺陷检测系统的设计与实现(PyQT页面+YOLOv5模型+数据集)

简介 随着电子设备的广泛应用,PCB(印刷电路板)作为其核心部件,其质量和可靠性至关重要。然而,PCB生产过程中常常会出现各种缺陷,如鼠咬伤、开路、短路、杂散、伪铜等。这些缺陷可能导致设备故障,甚至引发严重的安全问题。为了提高PCB检测的效率和准确性,我们基于YOLOv…

Go 三色标记法:一种高效的垃圾回收策略

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

C++基础知识——引用

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:Yan. yan.                        …

让你的Python代码更简洁:一篇文章带你了解Python列表推导式

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 列表推导式 📒📝 语法📝 条件筛选📝 多重循环📝 列表推导式的优点📝 使用场景📝 示例代码🎯 示例1🎯 示例2⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,列表推导式是一种强大且高效的语法,它允许你用…

Java程序之素数问题

题目: 判断101-200之间有多少个素数,并输出所有素数。 程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。素数被利用在密码学上&#…

算法设计与分析 笔记

截图摘自湖南大学彭鹏老师的ppt。笔记也是根据他的ppt整理的。 动态规划 核心 用数组记录中间结果,避免重复计算 三角数塔问题 问题描述 给定一个三角形数塔,从顶部出发,每次只能移动到下一行的相邻元素。要求找到一条路径,…

VS Code安装及环境配置(超详细)

VS Code简介 Visual Studio Code(简称 VS Code )是 Microsoft 于2015年4月发布的一款代码编辑器,以界面简洁、轻量著称。 它是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义…

【HTTPS云证书部署】SpingBoot部署证书

这里以华为云证书为例。 1. 下载证书 2. 解压 3. 选择.top_Tomcat复制到SpringBoot的Resource/source下 4. 在.properties文件中进行配置 修改key-store和key-store-password

[面试题]Jenkins

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

理解什么是DSR,嗅探器视角下的IP和MAC地址识别(C/C++代码实现)

网络嗅探器是监控和分析网络流量的一种工具,它能够捕获数据包并提取出关键的信息,比如IP地址和MAC地址。 网络嗅探器工作原理基于网卡的工作模式。正常情况下,网卡只处理发送给它的数据包,忽略其他数据。但是,如果将网…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-29残差网络ResNet

29残差网络ResNet import torch from torch import nn from torch.nn import functional as F import liliPytorch as lp import matplotlib.pyplot as plt# 定义一个继承自nn.Module的残差块类 class Residual(nn.Module):def __init__(self, input_channels, num_chan…

技术性屏蔽百度爬虫已经一周了!

很久前明月就发现百度爬虫只抓取、只收录就是不给流量了,加上百度搜索体验越来越差,反正明月已经很久没有用过百度搜索,目前使用的浏览器几乎默认搜索都已经修改成其他搜索引擎了,真要搜索什么,一般都是必应谷歌结合着…

uni-CMS:全端开源内容管理系统的技术探索

摘要 本文介绍了uni-CMS,一个基于uniCloud开发的开源内容管理系统(CMS)。该系统旨在帮助开发者快速搭建并管理内容丰富的网站、小程序和移动应用。通过其全端渲染、内容安全检测、广告解锁付费内容以及AI生成文章等特性,uni-CMS不…

cesium 添加 Echarts 饼图

cesium 添加 Echarts 饼图 1、实现思路 1、首先创建echarts饼图,拿到创建好的canvas 2、用echarts里面生成的canvas添加到cesium billboard中 2、示例代码 <!DOCTYPE html> <html lang="en"><head><