ไฟล์ GLTF คืออะไร??
glTF (GL Transmission Format) เป็นรูปแบบไฟล์ 3 มิติที่เก็บข้อมูลโมเดล 3 มิติในรูปแบบ JSON การใช้ JSON ช่วยลดทั้งขนาดของเนื้อหา 3 มิติและการประมวลผลรันไทม์ที่จำเป็นในการคลายแพ็กและใช้เนื้อหาเหล่านั้น ถูกนำมาใช้สำหรับการส่งและการโหลดฉากและโมเดล 3 มิติอย่างมีประสิทธิภาพโดยแอปพลิเคชัน glTF ได้รับการพัฒนาโดย Khronos Group 3D Formats Working Group และยังได้รับการอธิบายว่าเป็น JPEG ของ 3D โดยผู้สร้าง
รูปแบบไฟล์ GLTF กำหนดรูปแบบการเผยแพร่ทั่วไปที่ขยายได้สำหรับเครื่องมือและบริการเนื้อหา 3 มิติที่ปรับปรุงเวิร์กโฟลว์การเขียนและเปิดใช้งานการใช้เนื้อหาร่วมกันทั่วทั้งอุตสาหกรรม ความตั้งใจเบื้องหลังการสร้างรูปแบบไฟล์ glTF คือการกำหนดรูปแบบการเผยแพร่ทั่วไปที่ขยายได้สำหรับเครื่องมือและบริการเนื้อหา 3 มิติ ซึ่งควรปรับปรุงขั้นตอนการทำงานในการเขียนและทำให้สามารถใช้เนื้อหาร่วมกันทั่วทั้งอุตสาหกรรมได้ ลดการประมวลผลรันไทม์โดยแอปพลิเคชันโดยใช้ WebGL และ API อื่นๆ
ประวัติโดยย่อของไฟล์ GLTF
ข้อมูลจำเพาะแรกสำหรับรูปแบบไฟล์ glTF 1.0 ได้รับการประกาศในเดือนตุลาคม 2558 นี่เป็นความพยายามหลายชุดที่เริ่มต้นในเดือนมีนาคม 2555 โดย Khronos เป้าหมายของความพยายามเหล่านี้คือเพื่อประเมินโอกาสรอบ ๆ แรงฉุดของ WebGL ผลลัพธ์ที่ได้คือ การสาธิตครั้งแรกของรูปแบบ glTF ซึ่งอิงตามรูปแบบ JSON ได้ถูกนำเสนอในงานมีตติ้ง WebGl ในปี 2012 หลายบริษัทนำรูปแบบนี้มาใช้เป็นครั้งคราว เช่น Cesium, 3D Tiles, Oculus, Microsoft, Archilogic และอื่นๆ
glTF 2.0 เผยแพร่เมื่อวันที่ 5 มิถุนายน 2017 ที่งาน Web3D 2017 Conference มีรายชื่อบริษัทจำนวนมากที่นำรูปแบบไฟล์ glTF ไปใช้หลังจากนั้น
รูปแบบไฟล์ GLTF
ข้อกำหนดรูปแบบไฟล์สำหรับ glTF 2.0 มีให้ ออนไลน์ สำหรับการอ้างอิง และควรปรึกษาในการใช้งานที่เกี่ยวข้องกับการอ่าน/การเขียนสำหรับการสนับสนุน รูปแบบไฟล์ glTF
glTF กำหนดเนื้อหาเป็นไฟล์ JSON พร้อมรองรับข้อมูลภายนอก มันแสดงถึงโมเดล 3 มิติด้วยความช่วยเหลือของ:
- คำอธิบายฉากแบบเต็มมีอยู่ในไฟล์ .glTF รูปแบบ JSON ซึ่งมีข้อมูลเกี่ยวกับลำดับชั้นของโหนด วัสดุ กล้อง ตลอดจนข้อมูลคำอธิบายสำหรับตาข่าย ภาพเคลื่อนไหว และโครงสร้างอื่นๆ
- ไฟล์ไบนารี (.bin) ที่มีข้อมูลเรขาคณิตและแอนิเมชัน และข้อมูลอื่นๆ ที่ใช้บัฟเฟอร์
- ไฟล์รูปภาพ (.jpg, .png) สำหรับพื้นผิว
เนื้อหาภายนอกใดๆ เช่น รูปภาพจะถูกจัดเก็บไว้ในไฟล์ภายนอกที่อ้างอิงผ่าน URI URI เหล่านี้ถูกเก็บไว้ข้างคอนเทนเนอร์ GLB หรือฝังลงใน JSON โดยตรงโดยใช้ URI ข้อมูล แต่ละ glTF ที่ถูกต้องต้องระบุเวอร์ชัน
glTF ได้รับการออกแบบมาเพื่อให้ได้ไฟล์ขนาดเล็ก โหลดเร็ว การแสดงฉาก 3 มิติที่สมบูรณ์และความสามารถในการขยาย เป้าหมายการออกแบบที่ไม่เหมือนใครเหล่านี้เป็นสาเหตุหลักที่ทำให้รูปแบบไฟล์ glTF เป็นที่นิยมในโดเมน 3 มิติ ต่อไปนี้เป็นประเภท mime ที่สนับสนุนโดยรูปแบบไฟล์ glTF สำหรับไฟล์ประเภทต่างๆ:
- ไฟล์ .gltf ใช้ model/gltf+json
- ไฟล์ .bin ใช้แอปพลิเคชัน/octet-stream
- ไฟล์พื้นผิวใช้ภาพทางการ/* ประเภทตามรูปแบบภาพเฉพาะ รองรับรูปแบบภาพต่อไปนี้: image/jpeg, image/png เพื่อให้เข้ากันได้กับเว็บเบราว์เซอร์สมัยใหม่
การเข้ารหัส JSON
glTF กำหนดตามข้อจำกัดเพิ่มเติมเกี่ยวกับรูปแบบไฟล์ JSON
เพื่อลดความซับซ้อนของการใช้งานฝั่งไคลเอ็นต์ glTF มีข้อจำกัดเพิ่มเติมเกี่ยวกับรูปแบบ JSON และการเข้ารหัส
- JSON ต้องใช้การเข้ารหัส UTF-8 โดยไม่มี BOM
- สตริงทั้งหมดที่กำหนดในข้อมูลจำเพาะนี้ (ชื่อคุณสมบัติ, enums) ใช้ชุดอักขระ ASCII เท่านั้น และต้องเขียนเป็นข้อความล้วน เช่น “buffer” แทน
"\u0062\u0075\u0066\u0066\u0065\u0072"
- ชื่อ (คีย์) ภายในวัตถุ JSON จะต้องไม่ซ้ำกัน กล่าวคือ ไม่อนุญาตให้ใช้คีย์ที่ซ้ำกัน
URI
ทรัพยากรบัฟเฟอร์และรูปภาพอ้างอิงผ่าน URI ไคลเอนต์ต้องรองรับ URI สองประเภทต่อไปนี้
URI ข้อมูล: URI ข้อมูลเป็นไปตามที่กำหนดโดย RFC 2397 และถูกใช้โดย glTF เพื่อฝังทรัพยากรใน JSON
เส้นทาง URI สัมพัทธ์: หรือเส้นทาง-noscheme ตามที่กำหนดโดย RFC 3986, ส่วน 4.2 — ไม่มีแบบแผน สิทธิ์ หรือพารามิเตอร์ อักขระที่สงวนไว้ต้องเข้ารหัสเป็นเปอร์เซ็นต์ตาม RFC 3986 ส่วนที่ 2.2