如何从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
相关产品推荐
相关产品推荐

