STL (STereoLithography, 立体光刻)是由3D Systems软件公司创立、原本用于立体光刻
计算机辅助设计软件的
文件格式。它有一些
事后诸葛的字头语如“标准三角语言(Standard Triangle Language)”、“标准
曲面细分语言(Standard Tessellation Language)”、“立体光刻语言(STereolithography Language)”和“(立体光刻曲面细分语言)”。许多套装软件支持这种格式,它被广泛用于
快速成型、
3D打印和
计算机辅助制造(CAM)。STL文件仅描述
三维物体的
表面几何形状,没有
颜色、
材质贴图或其它常见
三维模型的属性。STL格式有
文字和二进码两种型式。二进码型式因较简洁而较常见。
STL格式简介
STL只能用来表示封闭的面或者体。stl文件有两种:一种是
ASCII明码格式,另一种是二进制格式。
历史
立体光刻机是能用一系列切片来构建任何体积形状的
3D打印机。这些机器需要一系列用凝固材料填充在封闭的2D轮廓中,最后再与各层熔合在一起。对这样的机器而言,自然的文件格式是一系列对应不同Z值的封闭的多边形。然而,因为改变层的厚度可能会得到更快(虽然不太精确)的构建,若能以可在必要水平切片的封闭
多面体来定义模型,会更好。
STL文件格式看似能用多边形来定义多面体,但在实用上它只被用过三角形。这表示ASCII协议的语法是多余的。
要能正确组成3D体,STL档表示的表面必须是封闭同相连的,且每个边都正好是二个三角形的一部分,且没有交叉。 由于STL语法对此属性不严紧,应用程序能忽视其封闭性。
作为切片的该软件的封闭性仅事项只要三角形需要它以确保所得到的二维的多边形是封闭的。对切片三角形后须确保所得到的2D多边形是封关闭的软件而言,封闭性才会重要。这类
软件有时会移动接近的顶点到同一位置,来清理小的差异。结果是不可预测的,但它往往足够。
二进码 STL
由于文字STL档会非常大,因此有二进码版的STL。二进码STL档有个80
字符的
标头字节无号整数,它表示这文件中的
三角形数。再来是描述每个三角形的信息。之后就结束。
每个三角形以12个32位浮点数来描述:3个描述法线,接着三顶点的X/Y/Z座标─正如文字STL一样。之后是一个2
字节无号整数(unsigned short),它代表“属性字符数”─在标准格式中它该是0,因为多数软件不明白其它事项。
二进码STL的颜色
二进码STL至少有两种非标准方式来加上颜色信息:
先是
漫反射的颜色,第二个是反射高光颜色,第三是
环境光。物质设置优于颜色。每个小面的颜色是用三角形后的2个“属性字符数”以下列方式来存放:
上述两种小面颜色信息中,2比特里的红/绿/蓝顺序相反,因此,虽然这些格式容易兼容,反序表示并非如此!更糟的是:通用的STL读取器不能自动分别它们!也无法指定小面有透明度!因为没有α值!虽然对当前的快速原型机而言,这不重要。
其它使用领域
STL文件格式简单且容易输出。因此,许多
计算机辅助设计(CAD)系统能输出STL文件格式。虽然输出简单产生,一些联结性信息却被丢弃!例如:A和B在CAD系统是相异、但座标恰好相同的两点。STL只输出点的座标,因此点A和B在STL就有同的表示。还存在其他的问题。
许多
计算机辅助制造(CAM)系统必须是三角形化的模型。STL文件格式不是存储器和计算上最有效转换数据的方法,但STL常被CAM系统用于输入三角化的几何。这格式随手可得,所以CAM系统用它。为了使用数据,CAM系统可能要重建连接性。重建会导致误差。
STL也能在CAD、CAM和计算环境(如:
Mathematica)间交换数据。
小面法线
文字(ASCII)和二进码版的STL,小面法线必项是指向模型外部的
单位向量。若设为(0,0,0),多数软件会自动以三角形三顶点的顺序根据右手定则计算法线。一些STL读取器(如:Art of Illusion的STL外挂)会检查小面的法线与它们用右手定则算出来的相符。若不同,会警告用户。有的软件会完算用自己根据右手定则算的。虽然可以不使用右手定则来计算法线的情况罕见,为了完全兼容,文件都应提供小面法线及正确指定顶点顺序。一个出名的例外是
SolidWorks,它用法线当
浓淡处理。
STL的文件格式
ASCII格式
ASCII码格式的STL文件逐行给出三角面片的几何信息,每一行以1个或2个关键字开头。
在STL文件中的三角面片的信息单元 facet 是一个带矢量方向的三角面片,STL三维模型就是由一系列这样的三角面片构成。
整个STL文件的首行给出了文件路径及文件名。
在一个 STL文件中,每一个facet由7 行数据组成,
facet normal 是三角面片指向实体外部的法矢量坐标,
outer loop 说明随后的3行数据分别是三角面片的3个顶点坐标,3顶点沿指向实体外部的法矢量方向逆时针排列。
ASCII格式的STL 文件结构如下:
二进制格式
二进制STL文件用固定的字节数来给出三角面片的几何信息。
文件起始的80个字节是文件头,用于存贮文件名;
紧接着用 4 个字节的整数来描述模型的三角面片个数,
后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是:
3个4字节浮点数(角面片的法矢量)
3个4字节浮点数(1个顶点的坐标)
3个4字节浮点数(2个顶点的坐标)
3个4字节浮点数(3个顶点的坐标)个
三角面片的最后2个字节用来描述三角面片的属性信息。
一个完整二进制STL文件的大小为三角形面片数乘以 50再加上84个字节。
二进制:
STL文件特点
stl文件格式简单,只能描述三维物体的几何信息,不支持颜色材质等信息,是计算机图形学处理CG,数字几何处理如CAD, 数字几何工业应用, 如
三维打印机支持的最常见文件格式。
表面的三角剖分之后造成3D模型呈现多面体状。输出STL档案的参数选用会影响到成型质量的良莠。所以如果STL档案属于粗糙的或是呈现多面体状,您将会在模型上看到真实的反应。
在CAD软件包中,当您输出STL档案时,您可能会看到的参数设定名称,如弦高(chord height)、误差(deviation)、角度公差(angle tolerance)、或是某些相似的名称。建议储存值为0.01或是0.02。
CAD造型方法
对于刚接触3d打印的朋友 提供点帮助!