[Из песочницы] 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я версия спецификации (glTF2.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

© Habrahabr.ru