Trimesh介绍及基本使用

news2024/11/25 13:15:19

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.coloradmin.cn/o/1852550.html

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

相关文章

食谱API

在当今追求健康与美味完美结合的时代,获取准确而丰富的食品和营养信息变得至关重要。无论是热衷于探索世界各地美食的烹饪爱好者,还是对自身饮食营养严格把控的健康追求者,都离不开可靠的资源。幸运的是,现在有诸如 TheMealDB 和 …

测试辅助工具(抓包工具)的使用2 之 抓包工具的基本用法

1.过滤设置: Filters- --- 勾选use Filters- --- 下拉选择show only the following hosts ---- 输入域名或者ip地址(多个地址用;隔开) --- 点击action(Run filterset now) 2.删除数据 方式一:点击Remove all 方式二: 黑窗口输入cls,回车 删除一条数据:选中数据---右键选择Rem…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

Tortoise 删除文件

1、右击需要删除的文件,选择Delete 2、提交

0基础学习线段树

前言: 线段树:用树来表示一个一个的线段区间。 1、为什么要使用线段树? 题目:给定一个数组nums,我们有两种下面两种操作 1、查询nums数组下标i到下标j的和; 2、将nums数组指定下标的值改为指定的一个新…

screenshot-to-code之安装、测试

准备 GPT收费账号 screenshot-to-code Supported AI models: GPT-4O - Best model!GPT-4 Turbo (Apr 2024)GPT-4 Vision (Nov 2023)Claude 3 SonnetDALL-E 3 for image generation git或者手动 下载源代码 https://github.com/abi/screenshot-to-code pip install poetry (…

【图像识别系统】昆虫识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50

一、介绍 昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集(‘蜜蜂’, ‘甲虫’, ‘蝴蝶’, ‘蝉’, ‘蜻蜓’, ‘蚱蜢’, ‘蛾’, ‘蝎子’, ‘…

ROS话题通信机制实操C++

ROS话题通信机制实操C 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行注意订阅的第一条数据丢失 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中,ROS master 不需要实现,且连接的建立也已经被封装了,需要…

反馈时延与端到端拥塞控制

先从 越来越无效的拥塞控制 获得一个直感。 开局一张图,剩下全靠编。这是一道习题: 这图来自《高性能通信网络(第二版)》,2002 年的书,很好很高尚,目前这种书不多了。不准备做这道题,但意思要明白&#x…

Redis学习|Redis基础知识、Redis五大数据类型、Redis三种特殊数据类型、Redis事务

Redis基础知识 redis默认有16个数据库,并且这个数量可以在conf配置文件中更改 默认使用的是第0个 可以使用 select 进行切换数据库! key *查看数据库所有的key 清除当前数据库 flushdb 清除全部数据库的内容FLUSHALL 为什么redis是6379!(了解一下即可!) Redis 是…

关于笔记本电脑连接电源时触摸板失灵、卡顿、乱飘的问题

目录 前言 问题原因 解决方法 前言 我查阅了相关的资料和方法如下(很感谢这位楼主大佬提供的问题所在): 问题原因 解决方法 那么解决方法无非就是几种(方法仅供参考,不排除一些危险性): 1…

微信公众号 H5授权登录实现(最详细)

一、微信公众号 (一)基础信息 微信授权类型 自己的网站、APP等第三方,要实现接入微信授权登录,有多种方式:微信公众号(网页)、微信小程序、微信开放平台(APP)等等。 【…

什么是标准差和方差

标准差是用于衡量数字是如何分布的指标。用σ (sigma)表示。 标准差方差的平方根。 什么是方差 方差就是与均值的平方差的平均值。方差的计算过程: 计算平均值(mean)用μ /读mu/表示。用每一个数减去平均值&#xf…

Java基础的重点知识-04-封装

文章目录 面向对象思想封装 面向对象思想 在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 面向对象思想的三大基本特征: 封装、继承、多态 1.类和对象 类是对象的抽象&#xff…

FreeCAD中类型机制研究

了解FreeCAD类型机制实现原理,为后续FreeCAD相关工作提供参考。 1.实现原理 FreeCAD系统提供一个最上层的基类BaseClass,该类主要处理类型相关工作,几乎所有的FreeCAD的类直接或间接继承于该类。该类只有唯一个属性Type,Type里面…

如何提升外链网站的收录率?

要提高外链网站的收录率,要明确的一点是,被收录的外链才能发挥最大的作用,因此,提升收录率是首要任务。一个有效的方法是使用GPC爬虫池,这样可以大幅度提高谷歌蜘蛛对众多外链网站页面的抓取频率 通过GPC爬虫池的引导…

OpenSSL命令手册

正文共:999 字 10 图,预估阅读时间:1 分钟 我们前面编译安装了OpenSSL命令工具(CentOS编译安装OpenSSL 3.3.1),这是一个强大的安全套接字层密码库,可以用于实现各种加密和认证协议,如…

福州大学 2022~2023 学年第 1 学期考试 A 卷压轴题参考答案

题目: 定义一个抽象类Structure(含有纯虚函数type函数,用以显示当前结构的类型; 含有show函数), 在此基础上派生出Building类, 用来存储一座楼房的层数、房间数以及它的总平方米数。 建立派生 类House&am…

QML 实现上浮后消失的提示框

基本效果:上浮逐渐显示,短暂停留后上浮逐渐消失 为了能同时显示多个提示框,一是需要动态创建每个弹框 Item,二是弹出位置问题,如果是底部为基准位置就把已经弹出的往上移动。 效果展示: 主要实现代码&…

路由模式--哈希模式下使用a标签跳转会有问题

路由模式分为 history 和 hash 两种模式&#xff0c;在 hash 模式下&#xff0c;使用 a 标签去跳转路由&#xff0c;可能会有问题。 比如&#xff1a; <a href"/home"><img src"/logo.png" class"logo" /></a> 在跳转路由时…