UltKit

glTF 轉 GLB 轉換器

glTF 匯出的結果通常包含三種檔案:一個 .gltf JSON、一個或多個 .bin 緩衝區,以及一個貼圖資料夾。GLB 則是把同一個模型打包成單一二進位檔,上傳表單、檢視器和 AR 應用程式要的正是這種格式。

3D 模型轉換器

或將STL, OBJ, MTL … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    將 glTF 資料夾壓縮成 ZIP

    將 .gltf、其 .bin 檔案與紋理圖片放進同一個 ZIP,保留匯出時產生的資料夾結構,然後上傳。內嵌資料的獨立 .gltf 可以單獨上傳。最多 20 個檔案,每個 95 MB。

  2. 2

    模型保持原樣即可

    模型單位維持 m,向上軸維持保持原樣,因為有效的 glTF 本來就是公尺單位、Y 軸向上。保留紋理與材質已開啟,所有圖片都會嵌入。

  3. 3

    轉換為 GLB

    按下轉換為 GLB,每個模型下載一個檔案。上傳的檔案與結果會在 30 分鐘後刪除。

解答

glTF 與 GLB 有什麼差別?

兩者儲存的是同一個 glTF 2.0 模型。.gltf 是可讀的 JSON,指向另外的 .bin 與圖片檔;GLB 則把 JSON、緩衝區與圖片打包成一個二進位檔案。

為什麼要把 glTF 打包成 GLB

Khronos Group 在 2017 年發布 glTF 2.0,把它設計為傳輸格式:位於 3D 工具與顯示模型的一方之間的最後一步。JSON 形式對開發者很友善,因為可以閱讀與編輯,但實際上相當脆弱。只要改了紋理名稱、上傳 .gltf 卻沒帶 .bin,或讓 CMS 去掉資料夾結構,模型載入時就會缺少幾何或出現白色表面。

GLB 把所有東西放進一個容器,解決了這個問題。Shopify 商品媒體、Android 的 Scene Viewer、Google 的 model-viewer 與多數素材市集都因此要求 GLB。轉換是無損的:轉換器讀取 JSON,載入它引用的每個緩衝區與圖片,寫入同一個二進位區塊,並把參照改為指向檔案內部。

GLB 檔案的結構

標頭:魔術字 glTF、版本 2 與總長度
12 位元組
先是 JSON,再是含緩衝區與圖片的一個 BIN 區塊
2 個區塊
每個區塊填補對齊的單位
4 位元組
取代 .gltf + .bin + 紋理
1 個檔案

GLTF

GL Transmission Format

glTF 是 Khronos Group 於 2015 年首度發佈的開放 3D 格式,常被稱為「3D 界的 JPEG」。.gltf 檔案是描述場景的 JSON,通常搭配另外的 .bin 幾何檔和貼圖圖片檔。它支援 PBR 材質、動畫和蒙皮,專為高效率的即時算圖而設計。分享時這些分開的檔案可能遺失,因此常偏好使用單一檔案的 GLB 形式。

壓縮方式
–
透明度
–
動畫
支援
推出年份
2015 · Khronos Group
GLTF 轉檔工具

GLB

glTF Binary (GLB)

GLB 是 glTF 2.0 的二進位形式,而 glTF 是 Khronos Group 於 2017 年發佈的 3D 傳輸格式。它把幾何、PBR 材質、貼圖和動畫打包成單一精簡檔案,專為快速載入而設計。GLB 廣泛用於網頁 3D、AR 檢視器、Android Scene Viewer 和線上模型市集。部分較舊的桌面 3D 工具和 CAD 程式無法匯入。

壓縮方式
–
透明度
–
動畫
支援
推出年份
2017 · Khronos Group
GLB 轉檔工具

glTF 轉 GLB 是封裝步驟:上傳表單、Android AR 與網頁檢視器都需要單一的獨立模型,所以大家會把 .gltf、其 .bin 緩衝區與紋理打包成一個檔案。

解決找不到 .bin 與貼圖的錯誤

  • GLB 沒有幾何,或轉換失敗

    沒有上傳 .bin 緩衝區。請與 .gltf 一起壓成 ZIP,並保持 JSON 所引用的相同檔名。

  • 表面是白色或灰色

    紋理遺失。用文字編輯器開啟 .gltf,檢查圖片的 uri 項目,並把這些檔案以相同的相對路徑放進 ZIP。

  • 紋理路徑以 C:\ 或 /Users 開頭

    匯出器寫入了絕對路徑。請改用相對路徑重新匯出,或把圖片移到 .gltf 旁邊,並將 uri 改成單純的檔名。

  • 紋理是 KTX2 或 WebP

    這些需要 KHR_texture_basisu 或 EXT_texture_webp 擴充,部分檢視器並不支援。請改用 PNG 或 JPEG 重新匯出,以獲得最廣泛的支援。

glTF 轉 GLB 常見問題

glTF 轉 GLB 會改變模型嗎?

不會。網格、材質、節點名稱、動畫與蒙皮都會原樣複製,只有封裝方式改變。JSON 會移到 GLB 的第一個區塊,緩衝區與圖片則放進二進位區塊。

為什麼要上傳 ZIP,而不是只上傳 .gltf?

分開檔案的 glTF 只是以相對路徑指向 .bin 與紋理。單獨上傳時,這些連結無處可指,GLB 會缺少幾何或圖片。把資料夾壓成 ZIP,就能讓所有被引用的檔案都在 .gltf 旁邊;我們的在任何裝置上解壓縮檔案指南也介紹了反向的操作。

GLB 會比原本的 glTF 小嗎?

和把所有內容以 base64 文字內嵌的 .gltf 相比,是的,大約小四分之一,因為 base64 會讓二進位資料膨脹約三分之一。和 .gltf 加 .bin 與圖片相比,總大小差不多;好處是只剩一個檔案。

支援 Draco 壓縮的 glTF 檔案嗎?

使用 KHR_draco_mesh_compression 擴充的 glTF 會被讀取,幾何也會保留。如果需要最小的網頁檔案,請用 glTF-Transform 等工具對完成的 GLB 套用 Draco 或 meshopt 壓縮。

可以把 GLB 轉回分開的 glTF 檔案嗎?

可以。上傳 GLB,並在3D 模型格式轉換的轉換為中選擇 glTF。當您想手動編輯 JSON,或不重新匯出就更換紋理時很實用。

哪些軟體匯出的 glTF 可以用這種方式打包?

Blender 的 glTF 匯出器可以直接輸出 glTF Separate 或 GLB,Sketchfab 下載、Substance 工具與多數遊戲引擎的匯出器也可以。如果您的工具只提供分開的形式,這個頁面能幫您得到單一檔案。