指南

什麼是 OBJ 檔:OBJ 轉 STL 的來源

更新 · 僅網格 OBJ 到 STL

了解 Wavefront OBJ 存什麼,MTL 和 UVs 跟它是什麼關係,以及什麼時候為了列印把網格匯出成 STL。在瀏覽器裡本機轉換。

OBJ 是從 Wavefront 出來的文字網格格式。你會看到它是一個 .obj 檔,有時旁邊有 .mtl,還有 MTL 指向的一資料夾圖片。Blender 這類建模軟體在你要 Wavefront 時會寫出它。切片器有時也能打開它,但它們對 STL 往往更老實。這個頁面是入門。首頁的轉換才把網格變成那份 STL。

文字裡有什麼

OBJ 按行組織。以 v 開頭的行是頂點位置,每行三個數。以 f 開頭的行是面,寫成指向頂點列表的序號。一個面可以列三個序號(三角形),也可以更多(四邊形或 n 邊形)。有法線時用 vn。紋理座標用 vt。一個面隨後可能看起來像 f 1/1/1 2/2/2 3/3/3,把頂點、UV 和法線捆在一起。物件行(o)和群組行(g)把檔案拆成有名字的塊。註解以 # 開頭。

這些字母都不宣告單位。數字只是數字。10 0 0 處的頂點可能是 10 mm,也可能是 10 m。轉換要問你,以及有 毫米與公尺 這篇指南,就是因為這段沉默。檔案不會替你把爭論定下來。

因為它是文字,你可以打開一個小 OBJ 來讀。正式的雕刻仍然是文字,而且可以非常大。本站在解析前拒絕超過 40 MB 的檔案,免得一次放下就只因大小把分頁凍住。低於這個上限的密網格仍然可能很重。解析後的三角形數量會告訴你 STL 裡將有什麼。

材質是第二份檔案

mtllib 行給出 MTL 檔的名字。MTL 裡面可能有顏色和圖片路徑。那些圖片不在 OBJ 裡面。它們是磁碟上的普通圖片。這個轉換忽略 mtllib,忽略 usemtl,也忽略 UVs。我們寫的 STL 格式沒有可以誠實放貼圖的地方。如果 OBJ 是遊戲資產或算圖用的,把 OBJ、MTL 和圖片放在一起。另做一份給切片器的 STL。OBJ 與 STL 是這次拆分的決定表。

幾個有名字的物件在 STL 裡會變成一份三角形列表。對單次列印這很方便,如果你想要分開的零件,這就是問題。零件是分開的工作,就匯出分開的 OBJ。轉換上的物件數量會告訴你合併了多少塊網格。

我們能轉換什麼,不能轉換什麼

我們轉換網格的面。四邊形和 n 邊形會三角化。點和線段會跳過。如果沒有剩下有面積的東西,頁面會說這個 OBJ 沒有三角形面。

我們不轉換 STEP 或 STP。那是邊界表示的 CAD 檔。它們不是 v 和 f 行的列表,本站也沒有 CAD 核心。從 CAD 程式匯出網格 OBJ,再回來。

我們不轉換 PNG 或 JPG。圖片有像素,沒有面。把一張圖命名成 model.obj,如果副檔名仍然是圖片副檔名,會在副檔名檢查上失敗;改了名但沒有面的檔案,會在空網格檢查上失敗。兩條路都不會變成高度圖。需要幾何就在建模軟體裡建網格,再匯出 OBJ。

已經是 STL 的檔案應該繼續是 STL。丟到這裡會被拒絕,以免你不小心把一份列印檔「轉換」成第二份列印檔。

從這份檔案到切片器

實際的順序很短。在 Blender 裡套用縮放後匯出 OBJ。把它放到 轉換 上。對齊單位。讀包圍盒和三角形數量。下載二進位 STL。在 Bambu Studio、Cura 或 PrusaSlicer 裡打開那份 STL 並確認尺寸。更長的點擊路徑是 如何 OBJ 轉 STL。最後你拿到的東西,寫在 什麼是 STL。

OBJ 是好的交換格式,卻是存放「能列印」這個承諾的壞地方。面可以是反的。外殼可以是開的。轉換仍然會寫出三角形。想快速看朝向就看預覽,長列印之前相信切片器自己的檢查。

問題

每個 .obj 都是三角形網格嗎?

不是。OBJ 可以存多邊形,有些檔案只有點或線。這個轉換需要面。解析時多邊形會被三角化。沒有面的檔案會以明確的錯誤失敗。

OBJ 旁邊的 MTL 是什麼?

MTL 是材質庫。它給顏色和貼圖檔起名字。這個轉換不讀它。如果還要算圖,就留著它。做 STL 不需要它。

OBJ 會不會是偽裝的 STEP 模型?

不會。STEP 是另一種 CAD 格式。把它改名成 .obj 不會讓它變成網格。從 CAD 應用程式匯出真正的 OBJ。

把這種 OBJ 轉成 STL