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

如何从numpy-stl读取的mesh网格中提取模型面片?

提取STL模型面片的实现方法

你使用的numpy-stl库加载得到的Mesh实例已经内置了完整的面片数据,直接调用对应属性即可提取:

  • 核心面片顶点属性:tank.vectors,返回维度为(N, 3, 3)的numpy数组,其中N是模型总面片数,每个子元素对应1个三角面片的3个顶点坐标,每个顶点包含x、y、z三个浮点数值
  • 法向量属性:tank.normals,返回维度为(N, 3)的numpy数组,每个元素对应1个面片的三维法向量
  • 轴向坐标拆分属性:tank.x、tank.y、tank.z,返回维度均为(N, 3)的numpy数组,分别存储所有面片三个顶点的对应轴向坐标

示例代码

import numpy
from stl import mesh

# 加载STL模型
tank = mesh.Mesh.from_file('tank.stl')

# 获取总面片数量
total_faces = len(tank.vectors)
print(f"模型总面片数:{total_faces}")

# 遍历输出前3个面片的顶点信息(可按需修改遍历范围)
for face_idx in range(min(3, total_faces)):
    v1, v2, v3 = tank.vectors[face_idx]
    print(f"\n第{face_idx+1}个面片顶点:")
    print(f"顶点1:{v1.round(2)}")
    print(f"顶点2:{v2.round(2)}")
    print(f"顶点3:{v3.round(2)}")

# 转换为Python原生列表格式(按需使用)
face_python_list = tank.vectors.tolist()

补充说明

如果需要对面片做几何计算、筛选等操作,建议直接操作tank.vectors的numpy数组,数值计算效率远高于原生Python列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:00