You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将Mesh转换为Polygon?

Mesh转Polygon的Python实现方案

可用的Python库

trimesh

trimesh是轻量易用的3D网格处理库,直接支持从Mesh中提取面数据生成Polygon。示例代码:

import trimesh

# 加载Mesh文件(支持obj、stl、ply等多种格式)
mesh = trimesh.load("your_mesh_file.obj")

# 遍历所有面,提取顶点坐标生成Polygon集合
polygons = []
for face_indices in mesh.faces:
    # 根据索引获取当前面的所有顶点坐标
    face_vertices = mesh.vertices[face_indices]
    # 若需转换为2D Polygon,可直接丢弃Z轴坐标(或做正交投影)
    # face_vertices_2d = face_vertices[:, :2]
    polygons.append(face_vertices)

pyvista

pyvista专注于3D可视化与网格处理,适合处理复杂Mesh结构,提取Polygon的示例:

import pyvista as pv

# 读取Mesh文件
mesh = pv.read("your_mesh_file.stl")
# pyvista的faces存储格式为[顶点数, idx1, idx2, idx3...],需先解析
faces = mesh.faces.reshape(-1, mesh.n_cells + 1)[:, 1:]
# 生成Polygon集合
polygons = [mesh.points[face] for face in faces]

手动实现思路

如果不想依赖第三方库,可按以下步骤自行实现:

  • 解析Mesh结构:先读取Mesh的顶点数组(存储每个顶点的3D坐标)和面数组(存储每个面对应的顶点索引)。常见Mesh格式(如obj、stl)都有明确的结构规范,可直接按格式解析。
  • 提取面顶点:遍历每个面的索引集合,从顶点数组中取出对应坐标点,按索引顺序排列,即可组成一个Polygon。
  • 3D转2D处理(可选):若需要2D Polygon,需对3D顶点做投影处理——比如正交投影到XY平面,直接取每个顶点的X、Y坐标;或用透视投影公式将3D点映射到2D平面。
  • 校验与修正:确保每个面的顶点按顺时针/逆时针顺序排列,避免生成自相交的无效Polygon;若Mesh包含非三角面(如四边形),直接提取所有顶点即可。

内容的提问来源于stack exchange,提问作者Purple_Ad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:40:41