ไฟล์ GLB คืออะไร??
GLB คือการแสดงรูปแบบไฟล์ไบนารีของโมเดล 3 มิติที่บันทึกไว้ใน GL Transmission Format (glTF) ข้อมูลเกี่ยวกับโมเดล 3 มิติ เช่น ลำดับชั้นของโหนด กล้อง วัสดุ ภาพเคลื่อนไหว และเมชในรูปแบบไบนารี รูปแบบไบนารีนี้เก็บเนื้อหา glTF (JSON, .bin และรูปภาพ) ไว้ในไบนารีบล็อบ นอกจากนี้ยังหลีกเลี่ยงปัญหาการเพิ่มขนาดไฟล์ซึ่งเกิดขึ้นในกรณีของ glTF รูปแบบไฟล์ GLB มีขนาดไฟล์ที่กะทัดรัด โหลดเร็ว การแสดงฉาก 3 มิติที่สมบูรณ์ และความสามารถในการขยายสำหรับการพัฒนาต่อไป รูปแบบนี้ใช้ model/gltf-binary เป็นประเภท MIME
รูปแบบไฟล์ GLB - ข้อมูลเพิ่มเติม
วิธีการจัดส่งเนื้อหาที่ใช้โดย glTF ทำให้เกิดการประมวลผลเพิ่มเติมเพื่อถอดรหัสข้อมูลไบนารีที่เข้ารหัสฐาน 64 และเพิ่มขนาดไฟล์ขึ้น 33% วิธีการจัดส่งเหล่านี้มีส่วนทำให้เกิดรูปแบบไฟล์ GLB รวมถึง:
- glTF JSON ชี้ไปที่ข้อมูลไบนารีภายนอก (เรขาคณิต คีย์เฟรม สกิน) และรูปภาพ
- glTF JSON ฝังข้อมูลไบนารีที่เข้ารหัส base64 และรูปภาพแบบอินไลน์โดยใช้ data URI
GLB เป็นรูปแบบคอนเทนเนอร์ถูกนำมาใช้เป็นรูปแบบไฟล์ไบนารีสำหรับการแสดงเนื้อหา glTF ใน binary blob เพื่อหลีกเลี่ยงปัญหาที่เกิดจาก glTF รูปแบบไฟล์ GLB ข้อมูลจำเพาะ ควรได้รับการอ้างอิงสำหรับผู้อ่าน/ผู้เขียนใดๆ ก็ตามที่นำไปใช้ในการพัฒนาแอปพลิเคชัน .
โครงสร้างไฟล์ GLB
รูปแบบไฟล์ GLB ขึ้นอยู่กับ endian น้อยและโครงสร้างแสดงให้เห็นว่าประกอบด้วย:
- คำปรารภขนาด 12 ไบต์ ใช้ชื่อส่วนหัว
- หนึ่งชิ้นขึ้นไปที่มีเนื้อหา JSON และข้อมูลไบนารี
ส่วนหัว GLB
ส่วนหัวของรูปแบบไฟล์ GLB ประกอบด้วยรายการ 4 ไบต์สามรายการ:
- มายากล uint32 - มายากล เท่ากับ 0x46546C67 เป็นสตริง ASCII glTF และสามารถใช้เพื่อระบุข้อมูลเป็น Binary glTF
- เวอร์ชัน uint32 - ระบุเวอร์ชันของรูปแบบคอนเทนเนอร์ Binary glTF
- uin32 length - ความยาวรวมของ Binary glTF รวมถึง Header และ chunks ทั้งหมดเป็นไบต์
####ก้อน
แต่ละอันในไฟล์ GLB มีโครงสร้างดังต่อไปนี้:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- ความยาวของ chunkData หน่วยเป็นไบต์chunkType
- บ่งชี้ถึงประเภทของก้อนchunkData
- เพย์โหลดไบนารีของก้อน
โดยที่ประเภทก้อนคือ:
# | Chunk Type | ASCII | Description | Occurrences |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | เนื้อหา JSON ที่มีโครงสร้าง | 1 |
2. | 0x004E4942 | BIN | บัฟเฟอร์ไบนารี | 0 หรือ 1 |
จุดเริ่มต้นและจุดสิ้นสุดของแต่ละอันต้องสอดคล้องกับขอบเขต 4 ไบต์ และควรใช้ช่องว่างภายในเพื่อจุดประสงค์นี้
เนื้อหา JSON ที่มีโครงสร้าง
นี่ควรเป็นส่วนแรกของเนื้อหา Binary glTF และเปิดใช้งานการดำเนินการเพื่อดึงทรัพยากรจากส่วนต่อ ๆ ไป นอกจากนี้ยังให้ความสามารถในการอ่านเฉพาะชุดทรัพยากรย่อยที่เลือกจากสินทรัพย์ไบนารี glTF เช่น LOD ที่หยาบที่สุดของตาข่าย เพื่อให้เป็นไปตามข้อกำหนดการจัดตำแหน่ง ส่วนนี้ต้องเสริมด้วย Space chars ต่อท้าย (0x20)
บัฟเฟอร์ไบนารี
ส่วนนี้มีเพย์โหลดไบนารีสำหรับรูปทรงเรขาคณิต คีย์เฟรมแอนิเมชัน สกิน และรูปภาพ ควรเป็นส่วนที่สองของสินทรัพย์ไบนารี glTF และต้องเสริมด้วยศูนย์ต่อท้าย (0x00) เพื่อให้เป็นไปตามข้อกำหนดการจัดตำแหน่ง