Какво е GLTF файл?
glTF (GL Transmission Format) е 3D файлов формат, който съхранява информация за 3D модел във формат JSON. Използването на JSON минимизира както размера на 3D активите, така и обработката по време на изпълнение, необходима за разопаковане и използване на тези активи. Той е приет за ефективно предаване и зареждане на 3D сцени и модели от приложения. glTF е разработен от работната група за 3D формати на Khronos Group и също така е описан като JPEG на 3D от неговите създатели.
Файловият формат GLTF дефинира разширяем общ формат за публикуване за инструменти и услуги за 3D съдържание, който рационализира работните потоци за авторство и позволява оперативно съвместимо използване на съдържание в цялата индустрия. Намерението зад създаването на файловия формат glTF беше да се дефинира разширяем, общ формат за публикуване за инструменти и услуги за 3D съдържание, които трябва да рационализират работните потоци за авторство и да позволят оперативно съвместимо използване на съдържание в цялата индустрия. Минимизира обработката по време на изпълнение от приложения, използващи WebGL и други API.
Кратка история на файла GLTF
Първите спецификации за glTF файлов формат 1.0 бяха обявени през октомври 2015 г. Това беше поредица от усилия, които започнаха през март 2012 г. от Khronos. Целта на тези усилия беше да се оценят възможностите около сцеплението на WebGL. В резултат на това първата демонстрация на формат glTF, базиран на формата JSON, беше представена на срещата на WebGl през 2012 г. Форматът беше възприет от време на време от няколко компании, включително Cesium, 3D Tiles, Oculus, Microsoft, Archilogic и други.
glTF 2.0 беше публикуван на 5 юни 2017 г. на конференцията Web3D 2017. Има дълъг списък от компании, които са приели файловия формат glTF след това.
GLTF файлов формат
Спецификациите на файловия формат за glTF 2.0 са достъпни онлайн за справка и трябва да бъдат консултирани при всяко изпълнение, свързано с четене/запис за поддръжка на glTF файлов формат.
glTF дефинира активи като JSON файлове с поддържащи външни данни. Представя 3D модели с помощта на:
- Пълно описание на сцена, съдържащо се в JSON-форматиран .glTF файл, който включва информация за йерархия на възли, материали, камери, както и информация за дескриптори за мрежи, анимации и други конструкции
- Двоични файлове (.bin), съдържащи данни за геометрия и анимация, както и други базирани на буфер данни
- Файлове с изображения (.jpg, .png) за текстури
Всички външни активи, като например изображения, се съхраняват във външни файлове, които са посочени чрез URI. Тези URI се съхраняват заедно с GLB контейнера или се вграждат директно в JSON с помощта на URI на данни. Всеки валиден glTF трябва да посочва своята версия.
glTF е проектиран да постигне малък размер на файла, бързо зареждане, пълно представяне на 3D сцена и разширяемост. Тези уникални дизайнерски цели са основните причини за популярността на файловия формат glTF в 3D домейна. Следват типовете mime, поддържани от файловия формат glTF за различни типове файлове:
- .gltf файловете използват model/gltf+json
- .bin файловете използват приложение/октет-поток
- Текстурните файлове използват официалния тип изображение/* въз основа на конкретния формат на изображението. За съвместимост със съвременните уеб браузъри се поддържат следните формати на изображения: 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 пътища: или path-noscheme, както е дефинирано от RFC 3986, Раздел 4.2 — без схема, пълномощия или параметри. Запазените символи трябва да бъдат процентно кодирани, съгласно RFC 3986, раздел 2.2.