指南

什麼是 STL 檔:OBJ 轉 STL 的結果

更新 · 僅網格 OBJ 到 STL

了解 STL 的三角形、沒有單位的縮放、二進位檔案和切片流程。然後在瀏覽器裡私下從 OBJ 得到 STL。

STL 是切片器期望的三角形檔案。這個名字常被展開成光固化(stereolithography),來自早期的樹脂製程,但格式活得比那一台機器更久。今天它是把形狀交給 Bambu Studio、UltiMaker Cura 或 PrusaSlicer 的乏味而可靠的方式。它不是建模格式。它不記得你的材質。它不記得你的單位。它記得的是角。

三角形,而且只有三角形

每筆記錄是一個面片:一條法線和三個頂點。沒有要保留的四邊形,沒有 n 邊形,也沒有曲線。本站讀 OBJ 時,多邊形先拆成三角形,再把那些三角形寫出去。工具頁上的三角形數量就是這個數。它不會和還把四邊形算成一個面的建模軟體裡的「多邊形數量」對上。六個四邊形的立方體是十二個三角形。這是對的,不是複製出了錯。

法線是面的方向。切片器更在意外殼是否閉合、朝向是否一致,而不是法線數字本身有多精確。工具試圖分辨內外時,一致的繞序仍然重要。這個匯出器根據角點順序計算法線。它不會編造缺失的面。

我們寫的 STL 裡沒有紋理座標,也沒有顏色。更廣的世界裡存在一些冷門擴充。那不是這個轉換產出的,也不該指望切片器去遵守。和這份檔案匹配的心理模型是一種線材顏色。

故意沒有單位

人們真正實作的規範裡沒有毫米旗標。FDM 社群的慣例是一個單位等於一毫米。頂點在 25 的檔案,按這個慣例就是 25 mm 的頂點,哪怕作者的意思是 25 公尺或 25 英吋。毫米與公尺 這篇指南講的是把正確的慣例烤進數字。那之後,STL 仍然「不知道」。下一個程式必須共享這個慣例。

這也是為什麼轉換裡的包圍盒比檔頭裡的一句話更有用。二進位檔頭是 80 位元組,常常是空的,或填著工具名。不要把「這是英吋」的唯一副本存在那裡。把它存在你自己的筆記裡,也存在已經和毫米一致的座標裡。

二進位、ASCII 和切片器

同樣的三角形可以打包成二進位,也可以拼成 ASCII 文字。二進位更小,是預設下載。ASCII 可讀,也更佔地方。二進位與 ASCII STL 講這個選擇。位元組完好時,上面點名的切片器都能打開。ASCII 檔案如果被改了換行或小數點的文字編輯器弄壞,可能打不開。重新匯出,而不是手改一個大 STL。

匯入切片器不是最後的考試。看它報告的尺寸。看模型是不是站著。看層預覽裡有沒有你沒打算要的縫。STL 在幾何上可以合法,列印仍然可以很差。薄壁、重疊的物體、敞開的底,都會在那裡露出來。把這些問題帶回網格,不要指望把同一張破表面再匯出一次就會長好。

STL 應該從哪裡來

對本站來說,STL 應該來自 Wavefront OBJ 網格。那就是 什麼是 OBJ 裡寫的、帶 v 和 f 行的檔案。它不該來自 PNG、JPG 或 STEP 實體。我們不把圖片體素化,也不剖分 CAD 邊界模型。如果你的設計工具只有實體,就在那裡按你能接受的弦高公差剖分或匯出 OBJ,然後再轉換。你得到的三角形數量,是你向那個工具要的剖分。我們不會為了讓它更光滑而加三角形。

拿到檔案之後,列印流程就是普通的那一套。確認毫米,擺方向,必須的話加支撐,切片,列印。如果還會再改形狀,留著 OBJ。OBJ 與 STL 解釋為什麼這兩份檔案應該並排放著,而不是一份替換另一份。從 Blender 開始的逐步說明是 如何 OBJ 轉 STL。

問題

STL 知道模型是毫米嗎?

不知道。格式存的是座標和面法線。切片器通常假設是毫米。本站的單位選單會在寫入之前改變數字。

合法的 STL 就一定能列印嗎?

不一定。檔案可以是合法的三角形列表,仍然有洞、相交的殼,或太薄的壁。轉換不會修復其中任何一項。

二進位還是文字?

兩者都是 STL。這裡預設二進位,因為切片器期望它,檔案也更小。ASCII 是文字形式。見二進位與 ASCII 的指南。

從 OBJ 得到 STL