glTF ไบนารี (.glb)
ISO/IEC มาตรฐานBinary glTF (GLB) คือรูปแบบการจัดเก็บไฟล์ไบนารีแบบรวมในไฟล์เดียวของมาตรฐาน glTF 2.0 ซึ่งได้รับการยกย่องอย่างกว้างขวางว่าเป็น 'JPEG ของ 3D' สำหรับกราฟิกสามมิติบนเว็บ, ความจริงเสริม (AR) และเอนจินเกมแบบเรียลไทม์
แปลง GLTF เป็น GLB
ตัวแปลงจาก GLTF เป็น GLB ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GLB โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GLB โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
67 6C 54 46การแสดงผลรูปแบบ ASCII: glTF
มาตรฐาน: ISO/IEC 12113:2022 / Khronos Open Standard
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ส่วนหัวไบนารีขนาด 12 ไบต์ ('glTF', รุ่น, ความยาว) ตามด้วยชังก์ JSON (CHUNK 0) และชังก์บัฟเฟอร์ไบนารี (CHUNK 1) |
| การบีบอัด | การบีบอัดเรขาคณิตเมช DRACO, KHR_texture_basisu (เท็กซ์เจอร์ GPU KTX2/Basis Universal) และ ExtMeshopt |
| การจัดลำดับไบต์ | ลำดับไบต์ Little-Endian (มาตรฐาน Intel x86 / WebGL) |
| พื้นที่สี | เท็กซ์เจอร์ sRGB, ช่องสัญญาณความหยาบ/ความเป็นโลหะแบบ PBR เชิงเส้น |
| ช่องสัญญาณและโครงสร้าง | วัสดุ PBR (Metallic-Roughness), เมชโครงกระดูกที่มีสกิน, เป้าหมายมอร์ฟ, แอนิเมชัน, กล้อง และแสง |
| ขนาดสูงสุด | จำนวนจุดยอดและสามเหลี่ยมไม่จำกัด (รองรับโมเดลขนาดหลายกิกะไบต์) |
| ความโปร่งใส | การครอบคลุมอัลฟา (MASK), การผสมอัลฟา (BLEND) และการส่งผ่านเชิงปริมาตร |
| การสตรีมและแบบโปรเกรสซีฟ | ไฟล์เดี่ยวที่สมบูรณ์ในตัว พร้อมตารางออฟเซ็ตไบนารีสำหรับโหลด VBO ไปยัง GPU โดยตรง |
ตารางเปรียบเทียบทางเทคนิค: GLB กับคู่แข่ง
| คุณลักษณะทางเทคนิค | GLB (ปัจจุบัน) | GLTF | USDZ | FBX |
|---|---|---|---|---|
| รูปแบบการจัดเก็บ (Packaging Model) | ไฟล์ไบนารีที่บรรจุทุกอย่างไว้ในไฟล์เดียว | JSON + ไฟล์ .bin และพื้นผิวภายนอก | ไฟล์เก็บถาวร ZIP ของสคีมา USD และพื้นผิว | ไบนารี/ASCII แบบกรรมสิทธิ์ (Proprietary) |
| มาตรฐานเว็บและ AR | การรองรับแตกต่างกันไปตามซอฟต์แวร์ | การรองรับแตกต่างกันไปตามซอฟต์แวร์ | มาตรฐาน Apple iOS Quick Look AR | มาตรฐานการนำเข้าของเอนจินเกมเดสก์ท็อป |
| โมเดลวัสดุ | มาตรฐาน glTF PBR Metallic-Roughness | มาตรฐาน glTF PBR | การรองรับแตกต่างกันไปตามซอฟต์แวร์ | เชดเดอร์ Phong/Lambert/PBR แบบกรรมสิทธิ์ |
| ประสิทธิภาพการอ่านของ GPU | ทันที (การแมปหน่วยความจำโดยตรง) | เร็ว (คำขอเครือข่ายหลายรายการ) | เร็ว (รายการ ZIP ที่ไม่ได้บีบอัด) | ช้า (ต้องมีการแยกวิเคราะห์ที่ซับซ้อน) |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
โมเดล 3D เรนเดอร์โดยไม่มีพื้นผิวหรือแสดงเป็นพื้นผิวสีดำทึบ
สาเหตุหลัก: ส่วนข้อมูล (chunk) ของพื้นผิวฝังตัวเสียหาย หรืออ้างอิงพื้นผิว PBR metallic-roughness หายไป
การกู้คืน: ตรวจสอบและซ่อมแซมออฟเซ็ตของชังก์โดยใช้ File2File.app 3D Converter หรือ glTF-Transform
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวแยกวิเคราะห์ GLB ประมวลผลส่วนข้อมูลข้อความ JSON ร่วมกับบัฟเฟอร์ไบนารีตามอำเภอใจ ซึ่งอาจทริกเกอร์บัฟเฟอร์โอเวอร์โฟลว์หากความยาวของบัฟเฟอร์ไม่ตรงกัน
เวกเตอร์การโจมตีที่ทราบ
- การอ่านบัฟเฟอร์เกินขอบเขต (Buffer over-read) เมื่อ bufferView byteOffset + byteLength มีค่าเกินความยาวส่วนข้อมูลไบนารี
- การอ่านดัชนีจุดยอดนอกขอบเขตระหว่างการทำงานของ WebGL drawElements
- การปฏิเสธการให้บริการ (Denial of service) ผ่านลูปการคลายการบีบอัด Draco ที่ผิดปกติ
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ตรวจสอบอย่างเคร่งครัดว่าช่วงไบต์ของ accessor และ bufferView ทั้งหมดอยู่ภายในขอบเขตชังก์ไบนารีที่ระบุไว้
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- สมบูรณ์ในตัวเอง: บรรจุเรขาคณิต 3D, วัสดุ PBR, พื้นผิว (PNG/JPEG/KTX2) และแอนิเมชันโครงกระดูกไว้ในไฟล์เดียว
- อัปโหลดเข้า GPU โดยตรง: บัฟเฟอร์เรขาคณิตไบนารีมีรูปแบบหน่วยความจำตรงกับ WebGL / Vulkan โดยไม่ต้องเสียเวลา CPU ไปกับการแยกวิเคราะห์
- มาตรฐานที่ไร้ข้อกังขาสำหรับ WebGL, WebGPU, การแสดงตัวอย่างสินค้า 3D บนอีคอมเมิร์ซ และความจริงเสริมบนมือถือ
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ลักษณะที่เป็นไบนารีทำให้การตรวจสอบข้อความหรือแก้ไขด้วยตนเองทำได้ยากหากไม่มีเครื่องมือ 3D เฉพาะทาง
- ต้องใช้ไลบรารีการคลายการบีบอัด Draco หรือ Basis Universal เมื่อใช้ส่วนขยายการบีบอัดขั้นสูง
- แพลตฟอร์มของ Apple นิยมใช้ USDZ สำหรับ iOS Quick Look AR แบบเนทีฟ ซึ่งจำเป็นต้องมีการแปลงรูปแบบจาก GLB
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- 4 ไบต์แรกของทุกไฟล์ GLB คือ 0x67 0x6C 0x54 0x46 ซึ่งสะกดเป็นข้อความ ASCII ว่า 'glTF'
- เมื่อคุณดูรองเท้าผ้าใบ 3D บนเบราว์เซอร์สมาร์ทโฟน แทบจะแน่นอนว่าคุณกำลังดูโมเดล GLB แบบโต้ตอบ
- GLB ถูกออกแบบมาเป็นพิเศษเพื่อให้ฮาร์ดแวร์กราฟิกสามารถอ่านบัฟเฟอร์จุดยอด (vertex buffers) ตรงจากดิสก์เข้าสู่ VRAM ได้โดยไม่ต้องแปลงใดๆ
คำถามทางเทคนิคที่พบบ่อย
ความแตกต่างระหว่าง glTF และ GLB คืออะไร
glTF คือไฟล์ JSON ที่อ้างอิงถึงข้อมูลเรขาคณิตในไฟล์ .bin ภายนอกและไฟล์พื้นผิวรูปภาพแยกต่างหาก แต่ GLB จะนำชุดข้อมูลทั้งหมดนั้นมารวมกันไว้ในไฟล์ไบนารีขนาดกะทัดรัดไฟล์เดียว
ฉันจะแปลง GLB เป็น USDZ สำหรับ Apple AR ได้อย่างไร
คุณสามารถแปลงโมเดล GLB เป็นไฟล์ USDZ ที่พร้อมใช้งานสำหรับ Apple ได้ด้วยคลิกเดียวโดยใช้ File2File.app บนเว็บเบราว์เซอร์ของคุณ
ฉันสามารถเปิดไฟล์ GLB ใน Blender ได้หรือไม่
ได้ Blender มีเครื่องมือผู้นำเข้าและส่งออก glTF/GLB ประสิทธิภาพสูงที่ติดตั้งมาให้ในตัวซอฟต์แวร์
คู่การแปลงไฟล์ GLB ที่เกี่ยวข้อง
การแปลงไฟล์ glTF JSON เป็นคอนเทนเนอร์ glTF Binary จะรวมไฟล์รายการข้อความ บัฟเฟอร์ไบนารี และพื้นผิวที่แยกกันไว้เป็นไฟล์เดียว เพื่อให้ส่งผ่านเว็บได้รวดเร็วยิ่งขึ้น
การแปลงไฟล์ GLB เป็น GLTF จะแยกคอนเทนเนอร์ไบนารีเดี่ยวออกเป็นไฟล์ข้อความและไฟล์โมเดล 3 มิติแยกกัน เพื่อให้นักพัฒนาสามารถแก้ไขโค้ดพื้นผิวและเรขาคณิตสามมิติได้อย่างง่ายดาย