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

【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)

  • 【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻
  • 【3D入门-指标篇下】 3D重建评估指标对比-附实现代码
  • 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply

Mesh 数据结构解析

1. Vertices(顶点)

original_vertices = mesh_full.vertices
定义:
  • vertices 是3D空间中的点坐标
  • 每个顶点用 (x, y, z) 坐标表示
  • 形状:[N, 3],其中 N 是顶点数量
示例:
vertices = [[0.0, 0.0, 0.0],    # 顶点0:原点[1.0, 0.0, 0.0],    # 顶点1:x轴上的点[0.0, 1.0, 0.0],    # 顶点2:y轴上的点[0.0, 0.0, 1.0],    # 顶点3:z轴上的点
]

2. Faces(面片)

original_faces = mesh_full.faces
定义:
  • faces 是由顶点索引组成的三角形面片
  • 每个面片由3个顶点索引定义
  • 形状:[M, 3],其中 M 是面片数量
示例:
faces = [[0, 1, 2],    # 面片0:由顶点0、1、2组成[0, 2, 3],    # 面片1:由顶点0、2、3组成[0, 3, 1],    # 面片2:由顶点0、3、1组成[1, 3, 2],    # 面片3:由顶点1、3、2组成
]

3. 顶点和面片的关系

索引对应:
# 面片 [0, 1, 2] 表示:
# - 第0个顶点:(0.0, 0.0, 0.0)
# - 第1个顶点:(1.0, 0.0, 0.0)  
# - 第2个顶点:(0.0, 1.0, 0.0)# 这三个顶点连接形成一个三角形面片
可视化理解:
顶点索引: 0 → 1 → 2 → 0
坐标:    (0,0,0) → (1,0,0) → (0,1,0) → (0,0,0)形成一个三角形面片

4. 为什么这样设计?

内存效率:
# 不重复存储顶点坐标
vertices = [[x1,y1,z1], [x2,y2,z2], ...]  # 存储一次# 面片只存储索引
faces = [[0,1,2], [0,2,3], ...]  # 引用顶点索引
拓扑结构:
# 面片定义了网格的拓扑关系
# 哪些顶点相连
# 哪些面片相邻
# 网格的连通性

5. 在代码中的具体应用

网格分割:
origin_num = mesh_full.faces.shape[0]  # 获取面片总数# 分割面片
mesh = trimesh.Trimesh(vertices=original_vertices,           # 所有顶点faces=original_faces[:origin_num]    # 前origin_num个面片
)mesh_fill = trimesh.Trimesh(vertices=original_vertices,          # 相同的顶点faces=original_faces[origin_num:]    # 剩余的面片
)
为什么顶点不分割?
# 顶点是共享的,不需要分割
# 面片定义了不同的几何体
# 一个顶点可能被多个面片使用

6. 实际例子:立方体

# 立方体的8个顶点
vertices = [[0,0,0], [1,0,0], [1,1,0], [0,1,0],  # 底面4个顶点[0,0,1], [1,0,1], [1,1,1], [0,1,1]   # 顶面4个顶点
]# 立方体的12个三角形面片(每个面2个三角形)
faces = [# 底面[0,1,2], [0,2,3],# 顶面  [4,6,5], [4,7,6],# 侧面[0,4,1], [1,4,5],[1,5,2], [2,5,6],[2,6,3], [3,6,7],[3,7,0], [0,7,4]
]

7. 在3D处理中的重要性

几何计算:
# 法线计算
face_normal = compute_face_normal(vertices[faces[0]])# 面积计算  
face_area = compute_triangle_area(vertices[faces[0]])# 体积计算
volume = compute_mesh_volume(vertices, faces)
渲染和可视化:
# GPU渲染
# 顶点着色器处理顶点
# 片段着色器处理面片

总结

您的理解完全正确:

  1. Vertices(顶点):3D空间中的点坐标 [x, y, z]
  2. Faces(面片):由顶点索引组成的三角形 [v1, v2, v3]
  3. 关系:面片通过索引引用顶点,形成完整的3D网格
  4. 优势:避免重复存储,支持复杂的拓扑结构

这种设计是3D图形学中的标准做法,既高效又灵活!


文章转载自:

http://OUo5VfSm.mdwLg.cn
http://2gLEVdfz.mdwLg.cn
http://kpddFna3.mdwLg.cn
http://jFeHqSmv.mdwLg.cn
http://kzgTZWEO.mdwLg.cn
http://wL650hKS.mdwLg.cn
http://ZZZHXEhN.mdwLg.cn
http://6IZLzpXC.mdwLg.cn
http://vo5aHvEr.mdwLg.cn
http://xXU5yVet.mdwLg.cn
http://EKmpWeKK.mdwLg.cn
http://Of3UdQCZ.mdwLg.cn
http://NrfUKTZT.mdwLg.cn
http://yl4R8Lty.mdwLg.cn
http://wu2DRMr5.mdwLg.cn
http://MH5rAnyB.mdwLg.cn
http://SsUDg58m.mdwLg.cn
http://lv89eKHJ.mdwLg.cn
http://XVBplhNQ.mdwLg.cn
http://R8VAQMRH.mdwLg.cn
http://0TArZumE.mdwLg.cn
http://3jTCYHlL.mdwLg.cn
http://snLIaPGh.mdwLg.cn
http://dmvQEivs.mdwLg.cn
http://QGbt5iFn.mdwLg.cn
http://Ik7xwKpK.mdwLg.cn
http://ndTPqBi5.mdwLg.cn
http://9rXEO0MF.mdwLg.cn
http://4gdLskQH.mdwLg.cn
http://Ytl4Nx5x.mdwLg.cn
http://www.dtcms.com/a/363306.html

相关文章:

  • Valkey vs Redis详解
  • 基于若依框架开发WebSocket接口
  • 计算机Python毕业设计推荐:基于Django+Vue用户评论挖掘旅游系统
  • 【交易系统系列36】揭秘币安(Binance)技术心脏:从公开信息拼凑“MatchBox”撮合引擎架构
  • 海康摄像头开发---标准配置结构体(NET_DVR_STD_CONFIG)
  • End-To-End 之于推荐-kuaishou OneRec2 笔记
  • css中 ,有哪些⽅式可以隐藏页⾯元素? 区别?
  • 03_网关ip和端口映射(路由器转发)操作和原理
  • Telnet 原理与配置
  • 基于STM32单片机智能家居wifi远程监控系统机智云app设计
  • Replit在线编程工具:支持多语言环境免配置与实时协作,助力编程学习调试与社区项目复用
  • Spring Security的@PreAuthorize注解为什么会知道用户角色?
  • 0902 C++类的匿名对象
  • Nano Banana 复刻分镜,多图结合片刻生成想要的视频
  • 适配第一性原理与分子动力学研究的高性能工作站解析
  • 信息安全各类加密算法解析
  • LDR6600:2C1A适配器协议方案芯片
  • 综合诊断板CAN时间戳稳定性测试报告8.28
  • Nek La Vita È DJ大来 安装教程 简单步骤 教你怎么装(附安装包下载)
  • Windows 命令行:父目录与子目录
  • 力扣222 代码随想录Day15 第四题
  • 缓存工具服务(封装缓存击穿+缓存穿透+缓存雪崩)
  • HCIE-Datacom 论述【Y园区】
  • 流程自动化常见三大悖论及RPA人机协作的工程实践
  • SQL JOIN 操作全面解析
  • 用高质量外链驱动SEO增长:2025年链接建设实战策略
  • milvus使用
  • 2025 年,这些求职技能利用空闲时间就能学,轻松提升职场竞争力​
  • 【V8引擎】介绍
  • WS2812灯带效果设计器上位机