JPEG от мира 3D. Что такое glTF?

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


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

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 16

    +1
    Лишь бы не оказался «пятнадцатым стандартом», как в xkcd…
      0
      В трёхмерном мире слишком разнообразные требования к файлам, чтобы их охватить одним форматом. САПР-системам нужно описание детали с осями, шероховатостями, допусками, посадками, размерами и сборки. Системам трёхмерной графики нужно описание сцены, текстуры, но не нужны допуски, посадки и шероховатости. Трёхмерному принтеру не нужны шероховатости, но нужно описание заполнения объёма.
      Удастся ли все эти разнообразные требования совместить в одном формате? В двумерном мире не удалось и графических форматов несколько десятков. А в трёхмерном сколько будет?
        0
        Судя по описанию, этот формат больше предназначен для показа в web конечному пользователю, следовательно ближе к художественной трехмерной графике. В тексте хорошо сравнили формат фотошопа и jpg.
          +1
          да, данный формат, в первую очередь, преподносится как лучшее решение для передачи по интернету, хотя он должен хорошо себя чувствовать и в играх. К примеру Unreal Engine поддерживает уже этот формат без каких-либо доп. плагинов, также есть поддержка и в Unity
            0

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

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

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

                  +1
                  Первое, что приходит на ум, это стандартный 3D viewer на Windows 10.
                  Если говорить об онлайн вариантах, то я часто использую этот и вот этот
                    0
                    Относительно недавно открыл для себя удобный вьювер для данного формата: могу посоветовать Visual Studio Code. На него можно навесить GLTF плагин, благодаря нему можно легко ориентироваться в содержимом JSON файла, а также там есть функция «предпросмотра 3Д модели», благодаря которой вы сможете просматривать содержимое вашего файла.
              0
              А какие компании занимаются разработкой этого стандарта? Есть шансы, что его будут продвигать крупные игроки? В Википедии есть впечатляющий список участников Khronos Group, но Khronos Group занимается и более известными стандартами вроде OpenGL и OpenCL. Интересно, кто заинтересован в развитии и использовании glTF. Потому что проблема с отображением 3D у пользователя действительно есть.
                0
                Прямо по разработке точно не скажу, но glTF уже активно используется большими компаниями. Лично у меня был опыт использования данного формата в Facebook, Oculus (эти 2 компании сейчас отказываются от всех других форматов и, в своих требованиях, указывают GLB как единственный формат для загрузки пользователями), а также в Unreal Engine, программах Microsoft. Пример использования на Facebook уже описан хабре, а Oculus дает возможность грузить кастомные модели в Oculus Home только при помощи GLB. Sketchfab, в свою очередь, создал свой конвертер моделей в glTF, вы можете любую модель без труда скачать в этом формате прямо с сайта
                0
                О чем статья?
                  0

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

                  0
                  Спасибо за статью, очень вовремя. Прикрутил себе в для экспорта мешей в Blender, вместо PLY. В минимальном варианте формат весьма простой и делается буквально на коленке.
                    0
                    прикрутили плагин для экспорта в GLTF с Блендера?
                      0
                      Да, есть официальный плагин и он отлично работает. В отличие от встроенного экспорта PLY.
                      Кстати пишут, что в бете 2.8 он уже встроен, но у меня она не заработала, т.к. теперь требует минимум OpenGL 3.+

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое