18.12.2020

Blend4Web — открытый фреймворк, предназначенный для создания и отображения интерактивной трёхмерной графики в браузерах. Blend4Web использует открытый пакет 3D-моделирования Blender для подготовки контента.

Разработан и выпущен в 2014 году российской фирмой «Триумф», которая также предоставляет коммерческую лицензию продукта (включающую примеры готовых приложений) и услуги по технической поддержке.

Обзор

Подготовка аудио-визуального контента для Blend4Web осуществляется в пакете 3D-моделирования и анимации Blender. Контент воспроизводится посредством WebGL, Web Audio и других стандартных браузерных технологий, без использования каких-либо расширений.

Фреймворк распространяется на условиях двойного лицензирования, под открытой GPLv3 и коммерческой лицензиями. Исходный код находится в репозитории на GitHub.

3D-сцена создаётся в Blender и экспортируется в виде файла в формате JSON и двоичного файла для последующей загрузки веб-приложением. Сцена может быть также экспортирована в виде единственного самодостаточного HTML-файла, в который упаковываются экспортируемые данные, пользовательский интерфейс веб-плеера и исполняемый код. Экспорт в HTML-формате рассматривается как наиболее простой способ работы с Blend4Web. Итоговый файл с минимальным размером порядка 1 МБ может быть размещен на веб-странице с помощью стандартного элемента <iframe>. Веб-приложения на основе Blend4Web могут быть развёрнуты в популярных социальных сетях, таких как Facebook и ВКонтакте.

В состав программных компонентов Blend4Web входят библиотеки JavaScript, дополнение к Blender и набор инструментов для настройки параметров 3D-сцен, отладки и оптимизации.

Разработка Blend4Web начата московской компанией «Триумф» в 2010 году. Первый публичный релиз состоялся 28 марта 2014 года.

Особенности

Фреймворк содержит ряд компонентов, обычно присутствующих в игровых движках, включая систему позиционирования источников звука, физический движок (форк физического движка Bullet, портированный на JavaScript), систему анимации и слой абстракции для программирования игровой логики.

На каждый объект может быть назначено до 8 анимаций различного типа, включая скелетную и вершинную анимацию. Скорость и направление анимации, а также параметры систем частиц (размер, начальная скорость и количество) могут быть заданы посредством API.

Поддерживаются динамическая загрузка и выгрузка данных, карты освещения, имеется возможность симуляции подповерхностного рассеивания.

Имеются решения для рендеринга наружных сцен, включая симуляцию воздействия ветра, симуляцию воды, атмосферные эффекты. Работа указанного функционала продемонстрирована в демо-ролике «Ферма», в котором также присутствуют многочисленные анимированные неигровые персонажи, реализована возможность перемещения по локации с видом от первого лица, реализовано взаимодействие с объектами и управление транспортным средством.

Ввиду использования кроссбраузерной технологии WebGL, Blend4Web работает во всех основных браузерах, в том числе на мобильных устройствах. Тем не менее, в браузерах с экспериментальной реализацией стандарта WebGL, таких как Internet Explorer, возможности Blend4Web поддерживаются не полностью. Существуют приложения, способные работать в операционной системе Tizen, в частности, на «умных» часах Samsung Gear S2.

Среди нетривиальных для браузерных фреймворков особенностей называются следующие: оптимизация методом комбинирования вызовов отрисовки, оптимизация методом отсечения скрытых объектов, вынесение физических расчетов в отдельный поток выполнения, симуляция поведения морских волн.

В версии 14.09 в Blend4Web реализована возможность реализации интерактивности в 3D-сценах посредством инструмента для визуального программирования. Инструмент напоминает редактор логики встроенного игрового движка Blender, в частности, в нём, как и в BGE, используются выстраиваемые в интерфейсе Blender визуальные логические блоки. Анимационные последовательности, созданные художником, проигрываются в ответ на взаимодействие пользователя с теми или иными трёхмерными объектами.

Начиная с версии 15.03 Blend4Web поддерживает присоединение двумерных HTML-элементов (например, информационных окон) к 3D-объектам (так называемые аннотации), а также копирование объектов во время работы приложения («инстанцирование», англ. instancing).

Среди эффектов на основе постобработки поддерживаются светящиеся поверхности (англ. glow), засветка ярким светом (bloom), глубина резкости камеры, сумеречные лучи, размытие при движении и взаимное затенение (SSAO).

Поддержка устройств виртуальной реальности была реализована в конце 2015 г. Работа шлема Oculus Rift обеспечивается экспериментальным API WebVR.

Интеграция с Blender

Дополнение для Blender написано на Python и Си, и может быть скомпилировано для платформ Linux x86/x64, OS X x64 и MS Windows x86/x64.

Профиль настроек Blend4Web активируется в настройках аддона. При переключении в профиль происходит перестраивание интерфейса Blender с одновременным удалением всех неподдерживаемых настроек.

Blend4Web поддерживает ряд специфичных для Blender функций, таких как узловой редактор материалов (инструмент для визуального программирования шейдеров) и система частиц. Также имеется начальная поддержка редактора нелинейной анимации (NLA) в составе пакета Blender, предназначенного для создания простых сценариев.

Для получения схожего визуального результата в редакторе и в браузере (WYSIWYG) пользователям рекомендуется переключаться в режим рендеринга GLSL, имеющегося в Blender.

Сравнение с аналогами

Blender Game Engine

Как и встроенный игровой движок Blender (Blender Game Engine, BGE), Blend4Web загружает подготовленные в Blender данные сцен без использования какого-либо промежуточного редактора. Приложения на основе Blend4Web предназначены для работы в браузерах, в то время как исполняемые файлы BGE запускаются вне браузеров. API Blend4Web реализованы на JavaScript, в отличие от основанных на Python API встроенного движка Blender. Вместо визуального редактора логики BGE, неподдерживаемого в Blend4Web, в последнем предполагается использование стандартных подходов, принятых в веб-разработке.

Unity

В Unity возможность экспорта в WebGL имеется с версии 5. Реализация поддержки WebGL, тем не менее, носит экспериментальный характер, в частности, в WebGL-версии в ближайшей перспективе не планируется поддержка мобильных устройств, системы позиционирования источников звука, видеотекстур.

Three.js

WebGL-библиотека Three.js требует написания программного кода для выполнения тривиальных задач, что повышает порог вхождения и удлиняет обучение; в Blend4Web большая часть работ по подготовке онлайн-презентаций не требует программирования.

Известные случаи использования

НАСА разработало интерактивное веб-приложение к третьей годовщине со дня посадки марсохода Кьюриосити. В приложении, созданном на основе Blend4Web, реализовано движение ровера, управление камерами и манипулятором, а также воспроизведены некоторые известные события миссии. Приложение было представлено в начале секции WebGL на конференции SIGGRAPH 2015.


Имя:*
E-Mail:
Комментарий: