Blend4Web, открытая платформа для создания трехмерных веб-приложений

Ниже изложено содержание обзорной статьи о платформе Blend4Web, написанной мной для ресурса Mozilla Hacks, с изменениями и дополнениями.

В марте 2014 года командой российских разработчиков был представлен первый публичный релиз Blend4Web, открытой платформы для создания трехмерных веб-приложений. В этой статье рассматривается история развития платформы и перспективы ее применения.

Что такое Blend4Web?


Если коротко, Blend4Web — это открытая платформа для создания трехмерных веб-приложений. В качестве основного инструмента для создания контента в ней используется Blender — популярный пакет 3D моделирования с открытым исходным кодом. Отображение трехмерной графики осуществляется средствами технологии WebGL, также являющейся открытым стандартом. Эти два ключевых слова — Blender и Web(GL) — наиболее полно описывают назначение этой платформы.

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

3D Интернет


2 июня компания Apple представила новые операционные системы — OS X Yosemite и iOS 8 — включающие поддержку WebGL в браузере Safari. Это событие отметило конец 5-летнего цикла развития технологии WebGL, начавшегося с первых нестабильных сборок браузеров (таких как альфа-версия Firefox 3.7). В настоящее время все основные браузеры настольных и мобильных систем поддерживают этот открытый стандарт для отображения 3D графики, более не требуя установки каких-либо плагинов.

Это был долгий и сложный путь, по которому разработчики Blend4Web следовали за развитием технологии WebGL. Неработающий функционал, зависающие браузерные вкладки, предупреждения о «небезопасности» технологии от некоторых крупных игроков, недоступность технологии в публичных релизах браузеров были источниками определенных рисков. И все же уникальная возможность воспроизведения трехмерной графики (и звука) в браузерах этого стоила.

Blender


Первые версии пакета Blender 2.5x появились летом 2010 г. Именно тогда под впечатлением короткометражного фильма Синтел разработчики начали изучать основы 3D моделирования. Blender позволил организовать полностью независимый рабочий процесс на основе инструментов с открытым исходным кодом (в качестве операционной системы использовался Linux). Впоследствии к команде Blend4Web присоединились талантливые художники из сообщества Blender.

Эволюция Blend4Web на примере демо-приложений


Демонстрационные приложения, созданные на основе Blend4Web, отражали степень зрелости самой платформы. Первым из них стал «Остров», практически неинтерактивное приложение с достаточно простой графикой. Демо появилось в 2011 г и было несколько отшлифовано перед публичным релизом. В нем был впервые реализован основанный на Blender технологический процесс, в котором все ресурсы хранились в отдельных (библиотечных) файлах и подключались к главному файлу для использования в дизайне сцены и дальнейшего экспорта (по этой причине некоторые пользователи Blend4Web называют его «бесплатным Unity Pro»).



В «Показе мод» продемонстрированы техники анимации одежды. Пост-процессинговые эффекты, динамический эффект отражения и системы частиц были добавлены позднее. После того, как состоялся публичный релиз Blend4Web, приемы симуляции одежды были изложены в одном из уроков.

«Ферма» — огромная сцена, особенно с точки зрения браузерных приложений: площадью более 25 гектар, с постройками, анимированными животными и растительностью. В демо реализованы некоторые игровые моменты, такие как возможность перемещения в режиме от первого лица, взаимодействие с объектами, управление транспортным средством. В приложении задействованы позиционные источники звука (средствами Web Audio) и физическая подсистема (на основе Bullet и Asm.js). Разработчики, связанные с проектом Freedesktop, использовали это демо-приложение для отладки драйверов в составе Mesa.



Приложение «Натюрморт» продемонстрировало возможности платформы в области визуализации. В этой сцене были использованы тщательно подготовленные текстуры и материалы, а также различные графические эффекты с целью повышения реализма. Тем не менее, технологии, использованные для ее создания были простыми и несколько консервативными, поскольку на тот момент инструмент для визуального редактирования шейдеров еще не существовал.



Новая эпоха в развитии платформы наступила после реализации поддержки узловых материалов пакета Blender. Так, художники команды Blend4Web создали более 40 различных материалов для модели Спорткара: хромированное покрытие, лакированный металл, стекло, резина для покрышек, кожа сидений и т.д.

В одной из недавно выпущенных версий в Blend4Web была добавлена функция управления анимацией в зависимости от действий пользователя. В результате интерактивные приложения могут быть созданы без необходимости написания программного кода. С целью демонстрации новых открывающихся возможностей была представлена интерактивная трехмерная инфографика легкого многоцелевого вертолета Ми-34.



Этот простой, но эффективный инструмент (названный разработчиками NLA Script) может иметь разнообразное применение: интерактивный вебдизайн в трех измерениях, презентации товаров и услуг, наглядные обучающие материалы, мульфильмы с возможностью выбора сюжета, игры жанра point-and-click и любые другие приложения, которые ранее обычно создавались с помощью технологии Flash.

Как это работает


Порог вхождения в технологию крайне низкий — достаточно загрузить и установить аддон к программе Blender, как рассказано в следующем видео-уроке:



Одной из замечательных особенностей платформы является возможность экспорта 3D сцены в единственный HTML файл, который может быть, например, отправлен по почте, размещен на собственном сайте или в облаке — одним словом, распространен любым способом по вкусу. В этом состоит фундаментальное отличие Blend4Web от многочисленных веб-сервисов, предлагающих услуги публикации 3D контента, поскольку пользователи не принуждаются к использованию того или иного Интернет-ресурса.

Для разработчиков сложных интерактивных 3D веб-приложений предлагается комплект средств разработки (SDK). Некоторые примечательные случаи использования интерфейса прикладного программирования (API) продемонстрированы в уроках по программированию, начиная от вебдизайна и заканчивая играми.

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

var m_data = require("data");
m_data.load("example.json", load_cb);

… и описать логику, согласно которой в 3D сцене происходят изменения, заложенные художниками, например, воспроизводится анимация объекта, на который нажали мышью:

var m_scenes = require("scenes");
var m_anim = require("animation");

var myobj = m_scenes.pick_object(event.clientX, event.clientY);
m_anim.apply_def(myobj);
m_anim.play(myobj);

Как можно видеть, API структурирован в модульном стиле (в стиле CommonJS), что, по мнению разработчиков, является важным для создания компактных и быстрых веб-приложений.

Перспективы


Сложно предсказать по какому пути направится развитие Интернет-технологий (и информационных технологий вообще), однако можно утверждать, что третье измерение Сети уже имеет под собой прочные основания. Можно ожидать, что все большее количество пользователей изменит представление о том, как должен выглядеть Интернет. В свою очередь команда Blend4Web продолжает улучшать инструменты для веб-разработчиков, повышает стабильность и производительность и реализует поддержку новых графических эффектов.

Разработчики Blend4Web также с интересом следят за разработкой стандарта WebGL 2.0, который позволит кардинально увеличить возможности по отображению трехмерной графики в Сети.

Информация и поддержка


В блоге разработчиков Blend4Web регулярно публикуются новости и обучающие материалы, о чем можно также прочитать Вконтакте и Google+. На канале YouTube публикуются видео-версии демо-приложений и видео-уроки. Задать вопрос можно на форуме.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 33

    +3
    некоторые пользователи Blend4Web называют его «бесплатным Unity Pro»

    Глядя на прайс лист компании, это утверждение выглядит сильно маркетинговым)
    Ибо цена для одного разработчика в 35 900 руб как-то не очень тянет на «бесплатно».
    А свободная версия имеет серьезные ограничения, собственно как и бесплатная Unity.
      +1
      Не увидел в прайсе ограничение на одного разработчика, я что-то пропустил?

      Так же не увидел политики по обновлениям: обычно вендоры вынуждают обновляться на мажорные версии за отдельные деньги либо на подписке, либо разовыми платежами.
        –3
        Здравствуйте,

        Коммерческая лицензия приобретается на одного разработчика. В течение 1 года с момента приобретения лицензии предоставляется т.н. базовая техническая поддержка, включающая обновления кодовой базы и демо-сцен.

        Поскольку код также распространяется под лицензией GPL, фактически это означает отсутствие дополнительной платы за обновления функционала.
          0
          Спасибо. Вы не думали добавить эту информацию в прайс было бы сильно меньше вопросов. Хотя, возможно, и привлекательность предложения сразу станет не такой интересной.

          И просто совет: назовите раздел «Услуги» более понятно: «Прайслист» или «Цены», например, т.к. в вашем случае услуги — это неосновная часть деятельности.
            –2
            Мы подумаем об этом. Спасибо за интерес к нашей платформе.
        –1
        Здравствуйте,

        В действительности версия, распространяющаяся по лицензии GPL, имеет точно такой же функционал, что и коммерческая версия. В этом плане ограничений нет. В целях стимулирования продаж в состав коммерческого дистрибутива включен дополнительный контент — исходные файлы демонстрационных приложений.

        Юрий
          0
          Здравствуйте,

          В действительности, ограничения есть ограничения, и вовсе не обязательно им быть именно по функционалу.
          Необходимость открывать свой код, уже само по себе сильное ограничение для коммерческого применения.
          Ведь для больших проектов WebGL сейчас не очень подходит, а для маленьких проектов, в гейм деве, проблема клонирования очень актуальна.
            0
            Совершенно верно, именно поэтому наряду с открытой лицензией, принуждающей к открытию кода производных продуктов, мы предлагаем коммерческую, не содержащую такого требования.
        +1
        Сам время от времени занимаюсь WebGL, но серьезной каши с ним не сваришь. Недавно наткнулся на вот такое приложение, которое на неслабом железе за 5 минут вынудило Chrome экстренно закрыться. Видимо, сейчас у технологии применение — только небольшие демки
          –4
          Здравствуйте,

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

          Юрий
            +6
            Вы долбанулись в каждом комментарии писать «здравствуйте» и ваше имя? Твою Люсю, Бурум, ты куда смотришь? Пацаны, ну научите уже корпоративных клиентов быть рассказчиками, а не тупоголовыми маркетологами.
              –7
              «Здравствуйте» я говорю только людям, которым отвечаю в первый раз. Свое имя ставлю, так как считаю, что при переписке важно знать имя собеседника.
                +2
                Вообще да, но сейчас нет. Это Хабра, захотят узнать имя — зайдут в профиль, «здравствуйте» подразумевается автоматом. Тут даже простое «спасибо» говорят редко, чтобы не быть похожими на массу англоязычных тредов, превращающихся в thank-you полотна. Кратко, лаконично, по существу, никто не обидится, все будут только рады.
                  0
                  Приму Ваши замечания к сведению.
          +1
          Кому нибудь удалось экспортировать из блендера что-нибудь сложнее кубика?
            0
            Blend4Web я, к сожалению, не пользовался, но в Babylon.js экспортировал (только модель), там есть отличный конвертер в json и импорт легко сделать
              –3
              Здравствуйте,

              Трехмерная инфографика вертолета Ми-34 целиком экспортирована из Blender'а, при этом не было необходимости в написании какого-либо программного кода.

              Юрий
                0
                А где можно почитать про требования к сцене, а то у меня постоянно ошибки сыпятся.
            +3
            Простите, просто хочу переспросить.

            Мой топик habrahabr.ru/post/183358/ послали в раздел «я пиарюсь», хотя он посвящен исключительно свободным технологиям и я никогда не просил с кого-либо денег, ни под каким предлогом.

            Этот пост в открытых разделах, хотя и содержит ссылки на негосударственные (а следовательно — личные сайты), в которых открыто просят денег. Если кто-то понимает, можете хотя бы в личку мне объяснить, почему?

            За последний год примерно 10 постов по этой причине не дошли до публикации.
            • UFO just landed and posted this here
                0
                Не сочтите за рекламу, у платформы Blend4Web имеется ряд привлекательных преимуществ.

                1. Открытый исходный код, отсутствие привязки к облачным сервисам. Подлинная независимость от поставщика.
                2. Интеграция с пакетом Blender. Пользователи этой популярной программы фактически уже умеют работать с Blend4Web. Прямой экспорт в браузер, минуя промежуточную стадию сборки сцены в специальном редакторе.
                3. Гибкое лицензирование. GPL и коммерческая лицензия на выбор пользователя. Открытая и коммерческая версии имеют идентичный функционал.
                4. Страна происхождения — Россия (имеет значение для русскоязычных разработчиков). Документация и поддержка на русском языке. Находится в тренде импортозамещения.
                  0
                  Ой, а я вспомнил, где видел этот остров (в зачаточном состоянии), корову, ферму и показ мод! :) Даже знаю, кто придумывал, кто делал, кто финансировал. Хотя, тут все переделано, поэтому с авторскими правами никаких вопросов нет. Но все равно интересно, почему, например, Дмитрия нет в титрах на сайте? Это же его работы?

                  Если интересно обсуждать — давайте в ЛС, вопрос тонкий.
                  0
                  Ферму и вертолет когда крутил радовался словно подросток которому приставку подарили. Возможно для многих не так удивительно, но возможность бесплатного экспорта своих проектов в веб для юзеров блендера многого стоит.
                    0
                    Babylon.js не пробовали?

                    А three.js?
                      0
                      Отлично, спасибо.

                  Only users with full accounts can post comments. Log in, please.