เครื่องมือแปลงไฟล์ glTF Binary เป็น glTF JSON
การแปลงไฟล์ GLB เป็น GLTF จะแยกคอนเทนเนอร์ไบนารีเดี่ยวออกเป็นไฟล์ข้อความและไฟล์แอสเซทแยกกัน เพื่อให้นักพัฒนาสามารถแก้ไขโค้ดเนื้อผิวและเรขาคณิตสามมิติได้อย่างง่ายดาย
การเปรียบเทียบรูปแบบและข้อกำหนดทางเทคนิค
| ข้อกำหนด | GLB | GLTF |
|---|---|---|
| ประเภท MIME | model/gltf-binary | model/gltf+json |
| ประเภท | self-contained binary 3D container | runtime 3D asset transmission |
| การบีบอัด | binary packaged JSON, buffers, and textures | lossless JSON manifest + external binary buffers |
| ข้อกำหนดมาตรฐาน | Khronos glTF 2.0 Binary Container | Khronos glTF 2.0 Specification |
| ส่วนหัว Magic Bytes | 67 6C 54 46 02 00 00 00 (glTF version 2 binary container) | 7B 22 61 73 73 65 74 22 ({"asset" JSON root) |
ภาพรวมรูปแบบและการใช้งาน
รูปแบบ GLB บรรจุฉากสามมิติ ภาพเคลื่อนไหว วัสดุ และเนื้อผิวไว้ในแพ็กเกจไบนารีเดียวที่จัดระเบียบมาอย่างเรียบร้อย แม้ว่าสิ่งนี้จะยอดเยี่ยมสำหรับการโหลดวัตถุเข้าสู่หน้าเว็บและเกมอย่างรวดเร็ว แต่กลับทำให้การแก้ไขข้อมูลดิบทำได้ยาก นักพัฒนาจึงมักจำเป็นต้องแยกไฟล์ GLB ออกเป็นรูปแบบ GLTF เมื่อต้องการตรวจสอบโครงสร้างฉาก ปรับแต่งคุณสมบัติวัสดุในโปรแกรมแก้ไขข้อความ หรือแก้ไขพารามิเตอร์ของเชดเดอร์ที่ฝังอยู่ การทำงานกับแอสเซท GLTF ที่ถูกแยกออกช่วยให้ทีมวิศวกรสามารถควบคุมเวอร์ชันของคอมเพเนนต์ตาข่ายสามมิติเฉพาะได้โดยใช้เวิร์กโฟลว์ Git มาตรฐาน แทนที่จะติดตามไบนารีบล็อกขนาดใหญ่ นักพัฒนาสามารถคอมมิตการเปลี่ยนแปลงข้อความขนาดเล็กไปยังไฟล์ Manifest ของ JSON ในขณะเดียวกันก็จัดการไฟล์บัฟเฟอร์ไบนารีแยกต่างหาก กระบวนการแปลงนี้รองรับไปป์ไลน์การพัฒนาเว็บขั้นสูงที่แอสเซทสามมิติ่ต้องการการแทรกเชดเดอร์แบบกำหนดเองหรือการสลับเนื้อผิวแบบไดนามิกก่อนการปรับใช้งานจริง
ข้อมูลทางเทคนิคและรายละเอียดตัวแปลงสัญญาณ (Codec)
GLB ใช้ประเภท MIME เป็น model/gltf-binary และเริ่มต้นด้วยส่วนหัวขนาด 12 ไบต์ซึ่งประกอบด้วยตัวเลขเวทมนตร์ 4 ไบต์ (0x46546C67) จำนวนเต็มระบุเวอร์ชัน 4 ไบต์ และความยาวไฟล์รวม 4 ไบต์ ส่วนหัวนี้ตามด้วยบล็อกที่บรรจุไฟล์ Manifest ของ JSON และบัฟเฟอร์ไบนารี การแปลงเป็น GLTF ซึ่งใช้ประเภท MIME เป็น model/gltf+json จะแยกไฟล์ Manifest ออกเป็นไฟล์ข้อความที่มนุษย์อ่านได้ซึ่งมีนามสกุล .gltf ข้อมูลเรขาคณิตและแผนผังพิกเซลจะถูกเขียนลงในไฟล์ภายนอกแยกต่างหาก เช่น .bin และ .png รูปแบบทั้งสองไม่ได้ใช้การบีบอัดแบบสูญเสียข้อมูลโดยค่าเริ่มต้น ทั้งคู่ยังคงรักษาตำแหน่งจุดยอด เวกเตอร์ตั้งฉาก และพิกัด UV ไว้ด้วยความแม่นยำทางคณิตศาสตร์อย่างครบถ้วน
ความเข้ากันได้ของระบบปฏิบัติการและเบราว์เซอร์
ไฟล์ GLTF ที่แยกออกแล้วสามารถทำงานได้อย่างราบรื่นบนเว็บเบราว์เซอร์สมัยใหม่ทั้งหมด รวมถึง Google Chrome, Mozilla Firefox, Apple Safari และ Microsoft Edge โดยใช้ตัวเรนเดอร์ WebGL และ WebGPU ระบบปฏิบัติการเดสก์ท็อปอย่าง Windows 10 และ 11, macOS และ Linux รองรับการดูไฟล์ GLTF ผ่านเครื่องมือดั้งเดิม เช่น Windows 3D Viewer และ Blender ระบบปฏิบัติการมือถือบน iOS และ Android จะเรนเดอร์แอสเซท GLTF ภายในสภาพแวดล้อม AR ดั้งเดิมและแอปพลิเคชันเว็บ แม้ว่านักพัฒนาจะต้องโฮสต์ไฟล์ .bin และ .gltf แยกต่างหากบนเซิร์ฟเวอร์ของตนให้ถูกต้องเพื่อหลีกเลี่ยงข้อผิดพลาดในการแชร์ทรัพยากรข้ามต้นทาง (CORS)
💡 ข้อมูลที่เป็นประโยชน์
ควรเก็บแผนผังเนื้อผิวของคุณไว้ในโฟลเดอร์เดียวกับไฟล์ .gltf หลักหลังจากการแปลงเสมอ เพื่อให้ไฟล์ Manifest ของ JSON สามารถค้นหาไฟล์ภายนอกที่ต้องพึ่งพากันได้โดยไม่มีข้อผิดพลาดเรื่องเส้นทางที่เสียหาย
การเปรียบเทียบรูปแบบและข้อกำหนดทางเทคนิค
โมเดลตัวละครสามมิติที่ซับซ้อนขนาด 15 เมกะไบต์ในรูปแบบ GLB จะให้ขนาดข้อมูลรวมที่ใกล้เคียงกันเมื่อแบ่งออกเป็นไฟล์ Manifest .gltf และไฟล์ .bin ภายนอก บนการเชื่อมต่อ 4G มาตรฐานที่ความเร็ว 30 เมกะบิตต่อวินาที การดาวน์โหลดแอสเซทนี้ใช้เวลาประมาณ 4 วินาที การอัปเกรดเป็นเครือข่าย 5G หรือการเชื่อมต่อไฟเบอร์ 300 เมกะบิตจะช่วยลดเวลาในการถ่ายโอนเหลือเพียงเศษเสี้ยวของวินาที ทำให้การโหลดเว็บที่มีหลายไฟล์เกือบจะเกิดขึ้นได้ในทันที
คำถามที่พบบ่อย
คุณจะแปลง glTF Binary เป็น glTF JSON โดยไม่สูญเสียคุณภาพได้อย่างไร
การแปลงจาก GLB เป็น GLTF จะไม่มีการสูญเสียข้อมูลเลยเนื่องจากรูปแบบทั้งสองใช้โครงสร้างทางคณิตศาสตร์พื้นฐานเดียวกัน กระบวนการนี้ทำหน้าที่เพียงแค่ดึงข้อมูลส่วน JSON และบัฟเฟอร์ไบนารีออกจากคอนเทนเนอร์ไบนารีเดี่ยวแล้วเขียนออกมาเป็นไฟล์แยกต่างหากบนดิสก์ของคุณโดยไม่มีการเปลี่ยนแปลงข้อมูลจุดยอดหรือการบีบอัดพิกเซล
ความแตกต่างระหว่าง glTF Binary และ glTF JSON คืออะไร
GLB เป็นไฟล์ไบนารีในตัวที่บรรจุคำอธิบายฉาก เรขาคณิต และเนื้อผิวไว้ในการดาวน์โหลดครั้งเดียว ส่วน GLTF จะแยกองค์ประกอบเหล่านี้โดยจัดเก็บกราฟฉากไว้ในไฟล์ข้อความที่อ่านได้ ในขณะเดียวกันก็เก็บบันทึกเรขาคณิตและเนื้อผิวไว้ในไฟล์ไบนารีและไฟล์ภาพภายนอก