STL (檔案格式)

檔案格式

STL(STereoLithography,譯作:立體光刻)是由3D Systems軟件公司英語3D Systems創立,原本用於立體光刻電腦輔助設計軟件檔案格式[1][2][3]。它有一些逆向首字母縮略詞如「標準三角語言」(Standard Triangle Language)、「標準曲面細分語言」(Standard Tessellation Language)、「立體光刻語言」(STereolithography Language)和「立體光刻曲面細分語言」[4]。許多套裝軟件支援這種格式,它被廣泛用於快速成型3D列印電腦輔助製造[5]。STL檔案僅描述三維物體的表面幾何形狀,沒有顏色材質貼圖或其它常見三維模型的屬性。STL格式有文字二進碼兩種型式。二進碼型式因較簡潔而較常見。[6]

STL
STL vs CAD 格式的例子。STL提供的是小面湊出來的近似面(黑實線),CAD要的是曲面(紅虛線)。CAD常用NURBS來達到近似的曲面。
副檔名
.stl
網路媒體型式model/stl
開發者3D Systems軟件公司英語3D Systems
格式類型立體光刻

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的軟件

參見

參考資料

  1. ^ StereoLithography Interface Specification, 3D Systems, Inc., July 1988 
  2. ^ StereoLithography Interface Specification, 3D Systems, Inc., October 1989 
  3. ^ SLC File Specification, 3D Systems, Inc., 1994 
  4. ^ Grimm, Todd, User's Guide to Rapid Prototyping, Society of Manufacturing Engineers英語SME (society): 55, 2004 [2016-07-13], ISBN 0-87263-697-6, (原始內容存檔於2016-04-08) . 這格式有許多名字,如:"Standard Triangle Language"、"STereolithography Language"和"Stereolithography Tesselation Language"。第55頁陳述:「立體光刻和3D Systems軟件公司的創立人Chuck Hull英語Chuck Hull說:『這副檔名是因為STereoLithography。』」
  5. ^ Chua, C. K; Leong, K. F.; Lim, C. S., Rapid Prototyping: Principles and Applications 2nd, World Scientific Publishing Co, 2003, ISBN 981-238-117-1 第6章,快速原型格式(Rapid Prototyping Formats)。第237頁6.2節STL檔問題、6.4節STL檔修復:「STL (STeroLithography)檔,如事實上的標準,已被廣泛(即使不是全部)使用在快速原型系統。("The STL (STeroLithography) file, as the de facto standard, has been used in many, if not all, rapid prototyping systems.")」
  6. ^ 6.0 6.1 6.2 Burns, Marshall. Automated Fabrication. Prentice Hall. 1993. ISBN 978-0-13-119462-5. 
  7. ^ Fabbers.com, The StL Format: Standard Data Format for Fabbers, reprinted from Marshall Burns, Automated Fabrication, http://www.ennex.com/~fabbers/StL.asp頁面存檔備份,存於互聯網檔案館) 描述:「所代表的對象必須位於全正的卦限。換言之,所有的頂點坐標必須是正數(非負且非零)。STL檔不含任何尺度資訊;計量單位為任意的。(The object represented must be located in the all-positive octant. In other words, all vertex coordinates must be positive-definite (nonnegative and nonzero) numbers. The StL file does not contain any scale information; the coordinates are in arbitrary units.)

外部連結