STL(STereoLithography,译作:立体光刻)是由3D Systems软体公司英语3D Systems创立,原本用于立体光刻电脑辅助设计软体档案格式[1][2][3]。它有一些逆向首字母缩略词如“标准三角语言”(Standard Triangle Language)、“标准曲面细分语言”(Standard Tessellation Language)、“立体光刻语言”(STereolithography Language)和“立体光刻曲面细分语言”[4]。许多套装软体支援这种格式,它被广泛用于快速成型3D列印电脑辅助制造[5]。STL档案仅描述三维物体的表面几何形状,没有颜色材质贴图或其它常见三维模型的属性。STL格式有文字二进码两种型式。二进码型式因较简洁而较常见。[6]

Quick Facts 扩展名, 互联网媒体类型 ...
STL
STL vs CAD 格式的例子。STL提供的是小面凑出来的近似面(黑实线),CAD要的是曲面(红虚线)。CAD常用NURBS来达到近似的曲面。
扩展名
.stl
互联网媒体类型model/stl
开发者3D Systems软体公司英语3D Systems
格式类型立体光刻
Close

STL档描述原始非结构化三角网格由表面单位法线和由右手定则排序的顶点用三维三角形笛卡儿座标系。STL座标必须是正数,没有尺度资讯,且计量单位为任意的。[7]

文字(ASCII)STL

文字STL档以下列来开始

solid name

name是个可有可无的字串。不过,即使省略了name,solid后的空白必须存在。这列之后跟著任意数量的以下列方式表示的三角形:

facet normal ni nj nk
    outer loop
        vertex v1x v1y v1z
        vertex v2x v2y v2z
        vertex v3x v3y v3z
    endloop
endfacet

当中,每个nv都是正负-假数英语Significand-"e"-正负-幂数型式的浮点数,如"2.648000e-002"(注意:每个v都必须不是负数)。档案以

endsolid name

来结束。格式结构暗示其他可能的存在(如,不只一个loop定义同一个小面(facet英语Face (geometry)),或一个loop具有三个以上顶点)。然而在实践中,所有小面都是简单三角形。

除了数字或单词内以外,档案中任何地方都可使用空白字元(空格、tab、换列)。"facet"和"normal"以及"outer"和"loop"之间的空白是必要的。[6]

二进码 STL

由于文字STL档会非常大,因此有二进码版的STL。二进码STL档有个80字元档头(内容通常都被忽略但绝不可用"solid"来开始!这样会使不少软体认为这是文字STL档)。接著是一个4字节无号整数英语Signedness,它表示这档案中的三角形数。再来是描述每个三角形的资讯。之后就结束。

每个三角形以12个32位元浮点数来描述:3个描述法线,接著三顶点的X/Y/Z座标─正如文字STL一样。之后是一个2字节无号整数(unsigned short),它代表“属性字元数”─在标准格式中它该是0,因为多数软体不明白其它事项。[6]

虽然文件内没有说明,浮点数以little-endianIEEE 754表示。

UINT8[80] – Header
UINT32 – Number of triangles

foreach triangle REAL32[3] – Normal vector REAL32[3] – Vertex 1 REAL32[3] – Vertex 2 REAL32[3] – Vertex 3 UINT16 – Attribute byte count end

二进码STL的颜色

二进码STL至少有两种非标准方式来加上颜色资讯:

  • VisCAMSolidView软体用每个三角形后的2个“属性字元数”存放15位元RGB色码:
    • 位元 0到 4是蓝的强度(0~31)。
    • 位元 5到 9是绿的强度(0~31)。
    • 位元10到14是红的强度(0~31)。
    • 位元15是1表颜色有效;0表无效(同正常的STL档)。
  • Materialise Magics软体用开头的80位元档头表示模型整体颜色。若有使用颜色,档头某处会是文字字串"COLOR="接著4字节RGBA(透明度),值域为0–255。这是整个模型的颜色,每个小面可以另外指定。这软体还可以指定更详细的表面特性,即物质(电脑图形)英语Material (computer graphics)。在"COLOR=RGBA"后可加上ASCII字串",MATERIAL=",接著3颜色(3×4位元):

先是漫反射的颜色,第二个是反射高光英语Specular highlight颜色,第三是环境光。物质设置优于颜色。每个小面的颜色是用三角形后的2个“属性字元数”以下列方式来存放:

    • 位元 0到 4是红的强度(0~31)。
    • 位元 5到 9是绿的强度(0~31)。
    • 位元10到14是蓝的强度(0~31)。
    • 位元15是0表用小面颜色;1表用模型颜色。

上述两种小面颜色资讯中,2位元里的红/绿/蓝顺序相反,因此,虽然这些格式容易相容,反序表示并非如此!更糟的是:通用的STL读取器不能自动分别它们!也无法指定小面有透明度!因为没有α值!虽然对目前的快速原型机而言,这不重要。

小面法线

文字(ASCII)和二进码版的STL,小面法线必项是指向模型外部的单位向量。若设为(0,0,0),多数软体会自动以三角形三顶点的顺序根据右手定则计算法线。一些STL读取器(如:Art of Illusion的STL外挂)会检查小面的法线与它们用右手定则算出来的相符。若不同,会警告使用者。有的软体会完算用自己根据右手定则算的。虽然可以不使用右手定则来计算法线的情况罕见,为了完全相容,文件都应提供小面法线及正确指定顶点顺序。一个出名的例外是SolidWorks,它用法线当浓淡处理

历史

立体光刻机是能用一系列切片来构建任何体积形状的3D列印机。这些机器需要一系列用凝固材料填充在封闭的2D轮廓中,最后再与各层熔合在一起。对这样的机器而言,自然的文件格式是一系列对应不同Z值的封闭的多边形。然而,因为改变层的厚度可能会得到更快(虽然不太精确)的构建,若能以可在必要水平切片封闭多面体来定义模型,会更好。

STL档案格式看似能用多边形来定义多面体,但在实用上它只被用过三角形。这表示ASCII协定的语法是多馀的。

要能正确组成3D体,STL档表示的表面必须是封闭同相连的,且每个边都正好是二个三角形的一部份,且没有交叉。 由于STL语法对此属性不严紧,应用程式能忽视其封闭性。

作为切片的该软件的封闭性仅事项只要三角形需要它以确保所得到的二维的多边形是封闭的。对切片三角形后须确保所得到的2D多边形是封关闭的软体而言,封闭性才会重要。这类软体有时会移动接近的顶点到同一位置,来清理小的差异。结果是不可预测的,但它往往足够。

其它使用领域

STL档案格式简单且容易输出。因此,许多电脑辅助设计(CAD)系统能输出STL档案格式。虽然输出简单产生,一些联结性资讯却被丢弃!例如:A和B在CAD系统是相异、但座标恰好相同的两点。STL只输出点的座标,因此点A和B在STL就有同的表示。还存在其他的问题。

许多电脑辅助制造(CAM)系统必须是三角形化的模型。STL档案格式不是记忆体和计算上最有效转换资料的方法,但STL常被CAM系统用于输入三角化的几何。这格式随手可得,所以CAM系统用它。为了使用资料,CAM系统可能要重建连接性。重建会导致误差。

STL也能在CAD、CAM和计算环境(如:Mathematica)间交换资料。

支援STL的软体

参见

  • Additive Manufacturing档案格式英语Additive Manufacturing File Format (AMF), 一个自然支援颜色、多种物质和星座的较新标准。
  • PLY, 一个比多数立体光刻规格提供更弹性的格式。
  • Wavefront .obj文件, 一个副档名为.obj的3D几何定义档案格式。
  • X3D, 免专利费的三维电脑图形ISO标准。

参考资料

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.