STL(Stereolithography 或 Standard Tessellation Language)是一种广泛用于3D打印和计算机辅助设计(CAD)的简单三维模型文件格式,由3D Systems公司于1987年开发。它以三角面片(Triangles)描述物体表面几何形状,是3D打印领域的事实标准格式。
1. 基本特性
仅存储几何信息:只包含顶点坐标和面片法向量,不保存颜色、纹理、材质等属性。三角化表面:所有曲面均被离散为三角形面片(网格越密,精度越高)。两种格式:
ASCII STL:可读性强,文件较大。二进制 STL:体积小,读写速度快(更常用)。
2. 文件结构
ASCII STL 示例
plaintext
solid object_name # 文件开头声明模型名称
facet normal 0 0 1 # 三角面片的法向量 (x,y,z)
outer loop
vertex 0 0 0 # 三角形顶点1 (x,y,z)
vertex 1 0 0 # 三角形顶点2
vertex 0 1 0 # 三角形顶点3
endloop
endfacet
... # 其他面片
endsolid object_name # 文件结束
二进制 STL 结构
文件头:80字节(通常为注释或空字符)。面片数量:4字节无符号整数(表示总三角形数)。每个面片数据:
法向量(3×4字节浮点数)。3个顶点坐标(各3×4字节浮点数)。属性字节(2字节,通常为0,保留字段)。
3. 关键特点
法向量方向:决定面的内外(符合右手法则,指向物体外部)。水密性(Manifold)要求:3D打印需要模型为封闭的流形(无孔洞、无自相交)。无层级结构:所有面片平铺存储,不支持分组或对象命名(ASCII格式中的solid名称通常被忽略)。
4. 优缺点
优点缺点格式简单,兼容性极强无颜色/材质信息3D打印行业通用标准网格冗余(相邻面片重复存储顶点)适合快速导出和切片处理精度依赖三角化密度
5. 与PLY格式对比
特性STLPLY数据内容仅三角面片+法线支持顶点、面片、颜色等扩展属性精度控制依赖三角化细分程度可保留原始几何数据文件大小二进制格式更紧凑ASCII格式更易读但较大主要用途3D打印、CAD快速交换科研、图形学、扫描数据处理
6. 常见问题
非流形错误:STL模型出现裂缝或孔洞时,需用软件(如Netfabb、MeshLab)修复。单位问题:STL无单位信息,需在3D打印前确认尺寸(通常默认为毫米)。二进制乱码:若用文本编辑器打开二进制STL,会显示乱码(需专业软件查看)。
7. 相关工具
编辑/修复:MeshLab、Blender、Autodesk Meshmixer。3D打印切片:Ultimaker Cura、PrusaSlicer、Simplify3D。开发库:Python的numpy-stl、C++的OpenMesh。
STL因其极简的设计,成为3D打印的黄金标准,但在需要更多元数据的场景中,PLY或OBJ格式可能更合适。