Определение и краткая история


GLTF (GL Transmission Format) — это формат файла для хранения 3Д сцен и моделей, который является крайне простым в понимании (структура записана в стандарте JSON), расширяемым и легко взаимодействующим с современными веб-технологиями. Данный формат хорошо сжимает трёхмерные сцены и минимизирует обработку во во время выполнения приложений, использующих WebGL и другие API. glTF сейчас активно продвигается Khronos Group как JPEG от мира 3D.


Предполагается, что glTF будет эффективным, совместимым форматом доставки активов, который сжимает размер трехмерных сцен и минимизирует обработку во время выполнения приложениями, использующими WebGL и другие API. glTF также определяет общий формат публикации для инструментов и сервисов 3D-контента.


Первые упоминания о glTF датируются 2012м годом, но в обиход он вошел с 19 октября 2015 года, вместе с анонсом спецификации glTF 1.0. На данный момент используется 2я версия спецификации (glTF 2.0), которая вышла 3 марта 2017. Далее речь будет идти только про glTF 2.0.


Основа glTF и его плюсы


glTF базируется на 2х файлах: JSON для описания структуры всей 3D сцены и бинарного файла, для хранения всех данных из сцены, включая текстурные карты, которые можно "вшивать" в бинарный файл или хранить внешними файлами. Существует и бинарная версия glTF, которая называется GLB, единственное различие которого в том, что все хранится в 1м файле с расширением GLB.
В качестве дополнительных плюсов в glTF можно выделить:


  • Четкая иерархия объектов в структуре 3Д сцены
  • Хранения такой информации о сцене, как источники света и камеры
  • Поддержка скелетной анимации (joints animation)
  • Более надежные материалы и шейдеры

Если сравнивать glTF и COLLADA, то поддерживаемые ими функции очень схожи, но, вспоминая о том, что glTF это, в первую очередь, "формат передачи", то его неоспоримым плюсом будет хорошая совместимость с веб-технологиями. Если приводить аналогию, то я бы использовал .PSD (Adobe Photoshop) и .JPG форматы. Первый хорош для редактирования исходного материала, но для хранения и использования в интернете используют, всё же, JPG.


На сегодняшний день 3D приходит к клиенту из абсолютно разных источников, каждый со своим форматом. Далеко не вся информацию нужна пользователю, не все форматы могут быть открыты в его приложении. Структура сцены должна быть проанализирована, данные трехмерной геометрии преобразованы в формат, требуемый графическим API. 3D данные должны быть переданы в память видеокарты, затем процесс рендеринга может быть описан с помощью последовательных вызовов графического API. Как итог, каждое исполняемое приложение должно создавать свои импортеры, загрузчики или конвертеры для всех форматов файлов, которые оно будет поддерживать, как показано на слайде.


image


GLTF формат определяет стандарт для представления 3D контента в форме, подходящей для использования в приложении во время выполнения (runtime). Существующие форматы плохо подходят для передачи через интернет: некоторые содержат лишь информацию о геометрии, некоторые содержат в себе абсолютно все и получаются слишком громоздкими по размеру и трудными для анализа, не говоря уже о запуске в режиме реального времени (runtime).


GLTF был разработан как раз для того, чтобы решить эту проблему. Это не «еще один формат файла», коих и так уже очень много, это определение формата передачи 3Д сцен!


Структура сцены, описываемая JSON может легко быть проанализирована, 3Д данные хранятся в форме, легко читаемой и используемой напрямую графическими API-интерфейсами, в связи с чем нету необходимости в декодировании или предварительной обработке 3Д данных. Таким образом GLTF может помочь преодолеть разрыв между созданием контента и рендерингом.


image

Комментарии (12)


  1. Vindicar
    19.01.2019 17:44

    Лишь бы не оказался «пятнадцатым стандартом», как в xkcd…


  1. Stepan555
    19.01.2019 22:47

    В трёхмерном мире слишком разнообразные требования к файлам, чтобы их охватить одним форматом. САПР-системам нужно описание детали с осями, шероховатостями, допусками, посадками, размерами и сборки. Системам трёхмерной графики нужно описание сцены, текстуры, но не нужны допуски, посадки и шероховатости. Трёхмерному принтеру не нужны шероховатости, но нужно описание заполнения объёма.
    Удастся ли все эти разнообразные требования совместить в одном формате? В двумерном мире не удалось и графических форматов несколько десятков. А в трёхмерном сколько будет?


    1. Jenyay
      19.01.2019 23:51

      Судя по описанию, этот формат больше предназначен для показа в web конечному пользователю, следовательно ближе к художественной трехмерной графике. В тексте хорошо сравнили формат фотошопа и jpg.


      1. BloodyPoSTaL Автор
        20.01.2019 01:03
        +1

        да, данный формат, в первую очередь, преподносится как лучшее решение для передачи по интернету, хотя он должен хорошо себя чувствовать и в играх. К примеру Unreal Engine поддерживает уже этот формат без каких-либо доп. плагинов, также есть поддержка и в Unity


      1. Insane11
        20.01.2019 12:40

        Это скорее .pdf получается. )


        1. Jenyay
          20.01.2019 12:41

          Если это действительно так, то это было бы вообще идеально. Но нужна смотрелка, которую мог бы установить простой пользователь. Кстати, есть такие?


          1. Insane11
            20.01.2019 12:55

            Гугл говорит, что тысячи их, включая утилиту для MS Hololens. )


          1. BloodyPoSTaL Автор
            20.01.2019 22:37

            Первое, что приходит на ум, это стандартный 3D viewer на Windows 10.
            Если говорить об онлайн вариантах, то я часто использую этот и вот этот


  1. Jenyay
    19.01.2019 23:56

    А какие компании занимаются разработкой этого стандарта? Есть шансы, что его будут продвигать крупные игроки? В Википедии есть впечатляющий список участников Khronos Group, но Khronos Group занимается и более известными стандартами вроде OpenGL и OpenCL. Интересно, кто заинтересован в развитии и использовании glTF. Потому что проблема с отображением 3D у пользователя действительно есть.


    1. BloodyPoSTaL Автор
      20.01.2019 00:57

      Прямо по разработке точно не скажу, но glTF уже активно используется большими компаниями. Лично у меня был опыт использования данного формата в Facebook, Oculus (эти 2 компании сейчас отказываются от всех других форматов и, в своих требованиях, указывают GLB как единственный формат для загрузки пользователями), а также в Unreal Engine, программах Microsoft. Пример использования на Facebook уже описан хабре, а Oculus дает возможность грузить кастомные модели в Oculus Home только при помощи GLB. Sketchfab, в свою очередь, создал свой конвертер моделей в glTF, вы можете любую модель без труда скачать в этом формате прямо с сайта


  1. customtema
    20.01.2019 21:53

    О чем статья?


    1. Insane11
      20.01.2019 22:20

      О том, что существует такой формат, как glTF. Я вот не знал, теперь знаю.