Blend4web что это
Перейти к содержимому

Blend4web что это

  • автор:

Полгода работы с Blend4Web. А стоит ли оно этого?

В августе прошлого года я обратил внимание на интересный WebGL-движок для разработки своих браузерных проектов. Меня подкупила его тесная интеграция с Blender и русская команда разработчиков. И вот совсем недавно на официальном сайте появился своеобразный отчет о прошедшем годе и планах на будущее. Я подумал, а почему бы и мне не высказаться на это тему, но с точки зрения своего опыта и времени работы с этим фреймворком. На хабре уже есть немало обучающих статей написанных мною о Blend4Web. Помимо всего прочего я рассказывал и о текущих проблемах. Теперь я хочу суммировать накопленные положительные и отрицательные оценки в нечто целое. Учтите, что это только личное мнение.

Мне часто задавали вопрос: “Почему именно Blend4Web?”. В то время была проблема с Unity WebGL, которого практически не существовало. Я был вынужден искать что-то иное. Blender — это моя рабочая лошадка. Модели для игр, композитинг для ТВ (где я работаю), 3D-видео на заказ и все это делалось только в Blender. К тому же я большое внимание обращал на популяризацию этого замечательного редактора. Вобщем, с Blender меня очень многое связывает. Неудивительно, что случайно прочтенная статья на хабре о Blend4Web меня заинтересовала и я решил попробовать.

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

Сильнейшей стороной фреймворка является тесная взаимосвязь с Blender. И это очень удобно. Моделирование, настройка сцены и физики — все делается в редакторе. Да я знаю, что многие успешно работают с чистыми движками, не имеющих нормального редактора сцен, но я к таким не отношусь. Наверное, долгое использование Unity наложило отпечаток на мое мнение о том, каким должен быть фреймворк для разработки игр — в первую очередь, удобным для использования.

И действительно, вся работа происходит в Blender. Причем это не ограничивается простой установкой объектов на сцене. Разработчики Blend4Web внедрили кучу своих функций на панелях редактора. Они как бы дополняют стандартные опции. Например, настройка материала происходит обычным способом и ничем не отличается от того, как если бы вы работали просто в Blender (кстати, это сильная сторона движка, практически любую модель созданную в Blender можно без проблем использовать в Blend4Web). Но вот, если присмотреться внимательнее к панели материалов, то можно увидеть дополнительные окошки: Terrain Dynamic Grass, Water, Collision и некоторые другие.

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

Еще одной крупной, но неоднозначной фишкой Blend4Web являются заготовки. Разработчики добавили немало глобальных возможностей прямиком в редактор. Я не имею в виду постэффекты, различные световые эффекты, настройки окружения — все это есть и активируются несколькими галочками в соответствующих опциях, разговор идет о другом. Например, есть панель Wind Blending. Это потрясающая штука, позволяющая создавать реалистичную анимацию деревьев, травы под воздействием ветра. И она логически закончена. Но есть и те, которые вызывают сомнения, например Character. По сути, это физические настройки поведения человекообразного персонажа: скорость ходьбы, силы прыжка, бег и… Waterline. Догадываюсь, для чего последняя опция нужна, но ведь необходимы и другие, так почему именно Waterline?

Я так понимаю, что “ларчик просто открывается”. Разработчики внедряют только те функции, которые им необходимы для решения текущих задач. Тот же Character, скорее появился из-за разрабатываемой в недрах компании игры “Сказ о Пятигоре”. Безусловно, данная заготовка очень полезна для персонажа-человека, но непригодна для персонажа-рыбки. Я общался с одним из программистов Blend4Web на эту тему и получил закономерный ответ: “Мы не ожидали такого использования заготовки Character”. А если не рыбка, а птичка, или космический корабль, или робот-многоножка?

В статье “Цели разработки на 2016 год” на официальном сайте, есть пункт (здесь и далее цитаты выделяются курсивом): “… планируется появление возможности задавать параметры персонажей и NPC непосредственно в Blender, без необходимости написания кода”. Я так понимаю, что имеющийся Character будет значительно расширен и это хорошо. Но может стоит разработчикам собрать данные, что же нужно конечным пользователям в таких заготовках, путем опросов на форуме или поднятием специальной темы. Конечно, много будет шлака, равно как и некоторых полезных замечаний.

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

Есть еще одно положительное качество — быстрая реакция разработчиков на ошибки и требуемые фичи. Я уже замечал, что мои статьи на Хабре читают и создатели Blend4Web. В одной из них я жаловался на неудобную функцию отключения и включения объекта в сцене. До этого она реагировала только на один объект, а если он имел иерархию, то приходилось перебирать всю цепочку в цикле и по отдельности их отключать. Удивительное дело, буквально в ближайшем релизе разработчики улучшили функцию Show и теперь она может управлять всей иерархией в целом. Похожих примеров множество. В одной из ветки форума поднялся разговор о необходимой ноде Transform (перемещение, вращение и масштабирование объекта без написания кода). В текущем релизе (16.01) эта нода уже есть.

Все это происходит благодаря не только отзывчивости разработчиков, но и уникальным релиз-планам компании. Каждый месяц — новый билд. Хорошо это или плохо?

Вообще вопрос не однозначный. Мы все привыкли к размеренному появлению релизов различных игровых движков. Раз в квартал, в полгода или даже год, но ни как не ежемесячно. С одной стороны буксует полученный опыт работы. Ты привык видеть данную опцию в этой панели, а она прыг и появилась уже в другой. Или используемая функция API вдруг объявлена deprecated. К чести разработчиков, они стараются минимизировать возможные проблемы. Так движок в консоли предупредит об использовании deprecated-функций, а сами они физически будут удалены только через несколько месяцев. С другой стороны, происходит стремительное развитие фреймворка. Пользователи получают то, что им нужно буквально в следующим релизе.

Такая система публикации билдов сначала настораживала. Откровенно бесили переносы проектов из старой версии SDK в новую. Это достаточно трудоемкая операция, так как файлы проектов разбросаны по разным папкам (такие требования SDK), Был вполне реальный шанс что-нибудь забыть скопировать. Однако в одном из осенних релизов появился веб-менеджер, который не только решил эту проблему при обновлении движка, но и добавил множество удобных функций в управлении проектами.

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

Больной вопрос Blend4Web — это лицензирование. Мы все уже привыкли, что популярные игровые движки стали бесплатными, а их разработчики зарабатывают на обслуживании и облачных решениях. В наше время выглядит странным разделение лицензии на Free и Pro. Но опять-таки всё неоднозначно.

Если вспомнить лицензионные политики разработчиков игровых движков прошлых лет, то наиболее массовыми были два подхода: Free/Pro, где бесплатная версия была сильно урезана по сравнению с платной и модель роялти. Потом произошло невообразимое — главные игроки на этом поле, Unity и UE вдруг стали полностью бесплатными. Понятное дело, разработчики тоже есть хотят, поэтому расчет был на массовость и доход на сопутствующих опциях. Так для Unity появились подписка на версию Professional Edition с ее плюшками, а также масса сервисов. Но в целом можно скачать бесплатную версию и создать полноценную игру. Хотя в дальнейшем скорее всего придется платить деньги за подписку, ведь со временем аппетит только возрастает при работе. Всегда хочется больших удобств или свобод.

С Blend4Web все проще и сложнее одновременно. Есть четкая Open Source лицензия, которая позволяет разрабатывать некоммерческие приложения или коммерческие, но с открытием исходников. Собственно, Blend4Web позиционируется, как Open Source решение, а значит код движка доступен и во free. Это плюс и значительный, ведь можно быстро подправить нужную часть кода под свои нужды. С другой стороны, для коммерческих проектов как-то не принято раскрывать свои исходники, в том числе и файлы Blender. Разработчики оставили одну поблажку для тех, кто-бы хотел использовать бесплатную версию движка, но и не желает раскрывать исходники. На официальном сайте четко написано: “В случае воспроизведения экспортированных файлов стандартным веб-плеером Blend4Web . распространение исходных файлов сцен по GPL не обязательно.

Выход? Но не совсем. Плеер Blend4Web — это законченное программное решение и больше ориентировано для показа несложных презентаций. Создать игру на основе его будет весьма проблематично.

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

С одной стороны, сумма приличная, с другой стороны — она однократная. К тому же сейчас с рублем творится черте-что. И полторы тысячи зеленых на лицензию того же Unity Pro сейчас выльется почти в 120000 рублей. Разработчики Blend4Web базируются в России и привязаны к отечественной валюте — это серьезный аргумент. Лично меня беспокоит политическая ситуация и возможные последствия. Может я и параноик, но уже задумываюсь о переносе своего сервера из зарубежья в родные пенаты (да и дорого становится оплата в долларах в пересчете на рубли).

А теперь о главном вопросе, который наверняка интересует многих: “Насколько Blend4Web готов для разработки игр?”.

Сейчас у меня в работе два проекта с использованием Blend4Web: двухмерный космосим и трехмерная аркада. Сложности есть, как в первом случае, так и во втором. Я не гуру программирования и все изучал самостоятельно, а начинал, как и многие с Бейсика и ассемблера для ZХ Spectrum. Поэтому пропущу свои потуги при изучении особенностей JavaScript — в них ничего интересного нет. Чтобы было понятнее, я суммирую плюсы и минусы создания игр в отдельных списках.

  • Вся сцена собирается в редакторе, включая настройки физики и частиц.
  • Быстрый и легкий предпросмотр сцены в браузере нажатием одной кнопки.
  • Отличная событийная модель.
  • Поддержка билбордов.
  • Заготовки на уровне сцены: вода, окружение, атмосфера, динамическая смена дня и ночи, и все в таком роде.
  • Большое количество готовых функций-заготовок в API (например, прелоадер, движение персонажа и т.д.).
  • Кто бы что не говорил, но проблем с производительности, как первой игры, так и второй я не наблюдаю. Это касается и мобильных систем.
  • Абсолютно нет поддержки спрайтовой анимации. Ее можно сделать, только воспользовавшись нодами Blender, но этот подход трудоемкий и не всегда оправдан.
  • Не всегда ты видишь в окне Blender, то, что получится. Приходится конечный результат просматривать в браузере. Это касается, например, частиц или некоторых настроек материалов.
  • Несоответствие координат в сцене Blender и в WebGl. Правда с этим похоже придется смириться. Такова уж особенность системы координат Blender.
  • Отсутствие взаимосвязи объектов в Blender и скриптами. Я вот как-то привык, что каждый объект обслуживается своим скриптом (это можно сделать вручную в коде). Но хотелось бы создать объект в Blender, присоединить к нему скрипт в панели и спокойно вызвать его на редактирование нажатием кнопки.

Опять-таки учтите, что все это применительно к индивидуальным проектам и основывается на моем личном мнении.

В начале своей статьи я упоминал о публикации планов на 2016 год на официальном сайте разработчиков. Среди прочего есть несколько интересных моментов: разработка библиотеки материалов, существенная корректировка документации про API и, разумеется, новые функции. Однако, куда интереснее звучит заявление: “Мы намерены существенно пересмотреть нашу политику в части взаимодействия с аудиторией… принять участие в большом количестве конференций и выставок, а также организовать свою собственную. ”. Это показывает, что ребята решили выйти из тени и всерьёз заняться продвижением Blend4Web в массы и развитие движка пойдет еще быстрее.

Blend4web что это

Blend4Web Banner 1

Интерактивные
3D приложения

в браузерах без плагинов

Blend4Web Banner 2

Широкий спектр
возможностей

от визуализации до игр

Blend4Web Banner 3

Комбинированное
воздействие

графики и звука

Blend4Web Banner 4

Удобная среда
разработки

на основе программы Blender

Blend4Web Banner 5

Свобода
улучшения

исходного кода

Blend4Web Banner 6

Интернет в третьем измерении

3D графика – лучший способ увеличить привлекательность ваших онлайн-решений. Технологии Blend4Web позволяют достичь этого с максимальной эффективностью.

От интернет-маркетинга до браузерных игр

Используйте передовые технологии для достижения совершенно нового уровня вовлеченности пользователей и увеличения прибыли ваших интернет-проектов.

Надежное решение на основе WebGL

Трёхмерный контент теперь доступен каждому — вашим клиентам более не потребуется устанавливать плагины. С другой стороны, максимально снижаются барьеры вхождения разработчиков в технологию WebGL.

Поддержка всех известных платформ

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

Автономия во всех аспектах

Свободное ПО с открытым исходным кодом, не связанное с какими-либо облачными сервисами, избавляет вас от рисков чрезмерной зависимости от поставщика. Приложения интегрируются в любую существующую инфраструктуру.

Полный цикл разработки контента

Отлаженный рабочий процесс на основе популярного пакета 3D моделирования Blender упрощает создание контента и освобождает вас от необходимости покупки дополнительных дорогостоящих программ (таких как 3ds Max, Maya).

Как проще всего начать работу с Blend4Web:

ИзображениеИзображениеИзображение

ИзображениеИзображениеИзображение

Итак, вот он новый релиз отечественного WebGL фреймворка Blend4Web 17.06. В этот раз разработчики преподнесли сюрприз в виде доступа к AR-технологии. Что такое AR? Это Дополненная Реальность, т.е. возможность симбиоза компьютерной картинки с реальным изображением, передаваемым видеокамерой. К примеру, известная игра Pokemon Go использует тот же принцип. Правда, для браузерных приложений AR пока слишком крут, и я реально еще не видел нормального инструментария в этой области.

Разработчики движка подготовили специальное демо, где этот самый режим AR представлен во всей красе (метка здесь). Особенно здорово, что можно изучить исходники демки и, возможно, создать что-то свое. По традиции, все исходники доступны в SDK.

А это пример работы AR в Blend4Web.

Запустить видео по клику - Как делать игры

Еще одна очень важная особенность релиза — это поддержка ограничителей Blender. Фишка в том, что Blender позволяет задавать движение объектов, используя специальные правила —ограничители. Например, можно скопировать данные о вращении с одного объекта на другой или заставить один объект «следить» за целью. Пока только четыре ограничителя Blender доступны для использования: Copy Location, Copy Rotation, Copy Transforms и Track To.

Есть небольшая демонстрация, где представлена работа ограничителя Copy Rotation. Именно он заставляет колесики механизма вращаться в нужных направлениях, в зависимости от движения рукояти. Обратите внимания, что здесь не используется физика, а только эксплуатируется возможность ограничителя Blender.

Запустить видео по клику - Как делать игры

Также в новой версии появился экспериментальный алгоритм освещения, который задействуется при использовании материалов рендера Cycles. Это позволяет более полно использовать возможности нод BSDF Glossy and BSDF Diffuse.

Более полно о релизе можно узнать здесь.

Случилось то, о чем просили многие. В новой версии Blend4Web научился понимать ноды Cycles, а также предоставил API для создания FPS. Вобщем, смотрим видеообзор:

Запустить видео по клику - Как делать игры

ris1_1 | Blend4Web обзавелся встроенным поиском пути

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

Однако в этот раз есть кое-что интересное. Был добавлен полноценный механизм поиска пути по алгоритму A* с использованием навигационных мешей. Причем меши можно автоматически создавать в Blender, с помощью встроенной утилиты или же делать вручную. Как это работает, можно увидеть в специальном демо, а также изучить внутренний код.

ris2 | Blend4Web обзавелся встроенным поиском пути

Еще была добавлена логическая нода Set Camera Move Style, позволяющая контролировать поведение камеры. О создании этого узла буквально молились разработчики приложений, которые используют систему визуального программирования. Дело в том, что в Blend4Web давно встроенны несколько различных пресетов поведения камеры, которые можно выбрать на этапе проектирования сцены. И это, конечно же, значительно упрощает жизнь разработчиков. Но вот корректировать их работу было возможно только из JavaScript. Теперь это доступно и для нодового редактора логики.

Чтобы понять получаемые преимущества использования новой ноды — запустите следующее демо.

Более подробно о других интересных фичах нового релиза ищите на официальном сайте разработчиков.

Разработчики Blend4Web продолжают радовать оптимизацией движка. Кажется совсем недавно был посрамлен посрамлен вездесущий Unity, но новый релиз b4w принес еще некоторые неожиданности.

ferma2 | Быстрее на 40%. Тестируем и отписываемся!

Разработчики уверяют, что проведенная оптимизация графической части значительно повысила производительность системы. В целом были переписаны шейдеры, уменьшено количество отправляемых директив (куда и зачем я не понял — главное работает), улучшен алгоритм теней.

Так, по словам разработчиков, на тяжелой и объемной демо «Ферма» производительность выросла на 30-40%! А это очень тяжелый проект для веба. Большое пространство, сотни объектов, анимации и т.д.

И это правда. Я не преминул проверить такое заявление на весьма слабой машине с видеочипом от Intel. Действительно, визуально сцена стала значительно шустрее. По словам других энтузиастов движка, эта сцена пошла на слабых мобильных устройствах, что ранее не было.

Похоже, Blend4Web становится лидирующей платформой для 3D WebGL. Тестируем и отписываемся на форуме разработчиков. Чем больше отзывов, тем лучше станет движок!

ris1_2 | Экономия памяти в 80 раз!

Разработчики фреймворка Blend4Web умудрились значительно уменьшить расход памяти при использовании множества копий объектов. Технология отнюдь не нова и многим известна, как инстансинг геометрии. Для WebGL 1.0 это возможно при использовании специального расширения ANGLE_instanced_arrays. Теперь есть возможность создавать большие территории, насыщенные деревьями, травой и т.п. с относительно скромным расходом памяти, что очень важно для браузерных приложений (особенно на мобильных девайсах).

Для теста была создана несложная сценка, тем не менее насыщенная, подобными объектами. При использовании инстансинга, расход памяти уменьшался с 160 до 2 Мб!

Сам инстансинг пока доступен для системы частиц типа HAIR. Вполне вероятно, разработчики создадут нечто подобное и для других типов объектов. Для тестирования или использовании в своих проектах скачивайте новую версию Blend4Web 16.07. Подробности релиза здесь.

Итак, разработчики отечественного WebGL-фреймворка Blend4Web внедрили новую релизную ветку длительного обслуживания LTS. Предполагается, что она станет популярной для тех проектов, где нужна стабильность. В течение года будут выходить критические обновления, но основные функции системы останутся без изменений. Релиз LTS не отменяет ежемесячные выпуски стандартных версий Free и Pro. Кстати, Blend4Web Free «канул в Лета», а вместо него появился Blend4Web CE (Community Edition).

free_ce | Первый релиз Blend4Web LTS!

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

space_disaster | Первый релиз Blend4Web LTS!

Разработчики опубликовали небольшую Open Source игру Space Disaster. В последнее время они серьезные усилия вкладывают в поддержку устройств виртуальной реальности. В этой версии движка появилась поддержка спецификации WebVR 1.0,которая требуется для запуска девайсов типа Samsung GearVR. Space Disaster как раз является демонстрацией проведенных работ. Не забудьте надеть наушники для получения максимального эффекта!

Также этот релиз получил множество мелких, но важных обновлений:
• Добавился эффект Lens Flare.
• Предпросмотр сцены в браузере (кнопка Fast Preview) теперь работает даже для проектов не сохраненных в SDK. Отличная вещь! Вы можете создать сцену и, не раздумывая, сразу отправить её в браузер.
• Обновилась библиотека материалов, а также были добавлены объекты для демонстрации. Материалы действительно очень качественные. Смотри демо.
• Новые форматы видео и картинок.
• Освещение в мировом пространстве. Функция появилась, но в Blender она станет поддерживаться только в будущей версии 2.78

Подробности о релизе на официальном сайте..

thumb16_04 | Новый релиз, первая конференция, конкурс

Итак, конец апреля ознаменовался выходом нового релиза Blend4Web. На первый взгляд — ничего интересного, на второй и последующий выцарапывается очень любопытная новость. Разработчики движка предоставили возможность объединения визуального кода с JavaScript. Ранее визуальный редактор логики было оптимально использовать для несложных логических последовательностей. Хотя некоторые индивидуумы умудрялись создавать поистине мощные приложения только с использованием нод. Теперь можно использовать комбинацию кода и нод, причем в любой последовательности:

1. Логика на нодах и небольшие вставки JavaScript.
2. Основной код на JavaScript и вызов из него логических блоков.

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

Новшество номер 2. Поддержка геймпадов. В API появились соответствующие вызовы. Всё чудесно работает, проверял сам. А как это выглядит в живую — посмотрите небольшое видео.

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

confer | Новый релиз, первая конференция, конкурс

1 мая в Москве состоялась конференция, опять-таки первая, разработчиков Blend4Web. Я там был, мёд, пиво пил. Вобщем мною было выпито немало кофе, чая, съедено ватрушек, но главное — это общение. Были гости из России, были из дальнего зарубежья, много интересных докладов и презентаций. Создатели конференции потрудились на славу. Всё это дело транслировалось в прямом эфире и в данный момент доступно в виде записи на сервисе YouTube. Будьте готовы к массированному английскому, ибо рабочим языком был именно English.

Запустить видео по клику - Как делать игры

И не забудьте, что конкурс о панде все еще продолжается! Загляните на его [url= https://www.blend4web.com/ru/contest/3/] страницу [/url] для большей информации.

1 мая в Москве состоится первая международная конференция, посвященная Blend4Web. Это мероприятие от отечественных разработчиков WebGL-фреймворка. Оно будет интересно всем, кто занимается браузерной платформой. Вход свободный, но необходимо зарегистрироваться на странице мероприятия во избежание всяких досадных заморочек.

Конференция состоится в отеле Holiday Inn. Она начнется в 10:00 с приветственного слова организаторов мероприятия. К слову, на официальной странице конференции уже можно ознакомиться с темами выступлений и именами докладчиков. 1 мая в Москве соберутся единомышленники со всего мира для того, чтобы показать себя и посмотреть на других.

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

Список докладов:
Creating the Intro scene to Petigor’s Tale Mikhail Luzyanin (Blend4Web)
VR and Web API with Blend4Web Kirill Osipov, Roman Sementsov (Blend4Web)
Browsing cultural heritage through interactive environments in Blend4Web (some case studies Luigi Verri, Daniele De Luca Cineca)
Wantenger: 3D Websites, shops and showrooms Alexey Butuzov (Triumph LLC)
Using Blend4Web in teaching basics of Photogrammetry Alexander Govorov (Moscow State University of Geodesy and Cartography)
Logic Nodes: Techniques in Blend4Web Konstantin Khomyakov (Blend4Web)
Our role in Blender development Alexander Romanov (Blend4Web)
Cultural Heritage Digital Protection Lijun Ma (Tsinghua University)
Optimize your Blend4Web applications Evgeny Rodygin (Blend4Web)
Creating multiplayer online games with Blend4Web Kirill Petryaev
3D scenes in Web Layout Alexander Chistoedov (Blend4Web)
Think outside the box: Visual Effects Pavel Kotov (Blend4Web)
Blend4Web: What the future holds Alexander Kovelenov, Ivan Lyubovnkiov (Blend4Web)

Общие сведения¶

Blend4Web — это программная среда для подготовки и интерактивного отображения трехмерного аудиовизуального контента в браузерах, т.е. трехмерный «движок» (жаргонизм от англ. «engine»).

Платформа предназначена для создания визуализаций, презентаций, интернет-магазинов, игр и других “насыщенных” web-приложений.

Фреймворк Blend4Web имеет тесную интеграцию с пакетом 3D моделирования и анимации Blender (отсюда название). Отображение контента осуществляется средствами WebGL и других браузерных технологий без использования плагинов.

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

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

“Движок”¶

Движок — это обособленная часть программного кода, используемая внешними приложениями для реализации нужного им функционала.

Типы движков: сайтовый движок, блоговый движок, движок интернет-магазина, wiki-движок, поисковый движок, игровой движок и т.д. Экономический смысл существования программных движков заключается в многократном использовании одного и того же функционала. Например, используя тот или иной движок, разработчики могут относительно дешево создавать интернет-магазины или игры.

Графический движок, трехмерный движок¶

Графический движок выполняет специализированные функции по отображению графики. Он является промежуточным звеном между:

  • высокоуровневой прикладной частью (игровой логикой, бизнес-логикой) и
  • низкоуровневой системной частью (например, графической библиотекой WebGL и нижележащими драйверами ).

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

Что такое WebGL¶

WebGL (Web Graphics Library, т.е. графическая библиотека для использования в веб-приложениях) — одна из современных браузерных технологий, позволяющая создавать трехмерные графические веб-приложения. Другими словами, WebGL — это “3D в браузере”.

Поддержка WebGL в браузерах¶

В настоящий момент технология WebGL в той или иной степени поддерживается во всех браузерах.

Браузеры¶

Мобильные платформы¶

  • Android
  • BlackBerry
  • Firefox OS
  • iOS 8
  • Sailfish OS
  • Tizen
  • Ubuntu Touch

Более подробно поддержка WebGL описана в соответствующем разделе главы “Проблемы и решения”.

Преимущества WebGL¶

  • работает в браузерах без установки дополнительных программ (плагинов)
  • кроссплатформенный, предназначен для работы во всех стационарных и мобильных системах
  • является открытым стандартом, не требует лицензионных отчислений
  • поддерживается ведущими участниками рынка IT (Google, Apple, Microsoft, Nvidia, Samsung, Adobe и др.)
  • основан на знакомой разработчикам технологии OpenGL
  • интегрируется с другими браузерными технологиями

Что такое Blender¶

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

3D моделирование¶

Создание графических ресурсов требует наличия подготовленных специалистов — 3D-художников.

Типичный рабочий процесс может состоять из следующих этапов:

  • подбор фотографий и/или создание концепта и скетчей (“спереди”-“сбоку”-“сверху”) будущей модели или сцены
  • моделирование — создается трехмерная модель, состоящая из многоугольников (полигонов)
  • текстурная развертка — на модели создается разметка для последующего наложения текстур (плоских изображений)
  • текстурирование — на 3D-модель накладываются текстуры
  • подбор материалов — назначение различным частям модели материалов и их настройка (например, деревянная дверь с металлической ручкой)
  • риггинг (от англ. rigging, т.е. “оснастка”) — к модели прикрепляются управляющие элементы (“кости” “скелета”) с целью дальнейшей анимации
  • анимация — модель приводится в движение с целью визуализации действий (например, для персонажей)
  • экспорт — выполняется на любом этапе с целью отображения 3D-модели в ее конечном виде, например, на веб-странице

Кроме того, в процессе создания 3D-моделей часто используются техники повышения реализма, требующие отдельных этапов:

  • создание высокополигональной модели — создается детализированная версия модели
  • “запекание” карты нормалей — детали из высокополигональной модели переносятся на основную модель в виде специальной текстуры (карты нормалей)
  • создание карты отражения — различным частям модели назначается различный цвет и степень отражения света
  • запекание карт окружения — производится с целью реализации эффекта отражения окружающей среды на поверхности модели
  • настройка камеры и источников света на сцене
  • настройка параметров физической симуляции — частицы, ткань

Затраты времени при изготовлении 3D-моделей и анимации зависят от их сложности и требуемого качества, и могут изменяться от 1-2 дней (например, игровой предмет) до 1-2 недель (например, детализованная модель самолета) и даже нескольких месяцев (реалистичные персонажи с наборами одежды, волос, лиц, с анимацией и настройкой пропорций фигуры).

Браузерные технологии¶

Браузер (от англ. “browser”, т.е. “просмотрщик”) — программа для воспроизведения содержимого сети Интернет. На заре развития интернет-технологий роль браузера сводилась к просмотру текстовых страниц с включениями статических изображений (“гипер-текст”). Современные браузеры представляют собой полнофункциональные платформы для создания мультимедийных веб-приложений.

Среди реализованных в браузерах перспективных возможностей, используемых в Blend4Web , можно отметить следующие технологии:

  • трехмерная графика, WebGL
  • типизированные массивы, Typed Array
  • временной контроль анимации (requestAnimationFrame), Timing control for script-based animations
  • двухмерная графика, HTML Canvas 2D Context
  • обработка звука, Web Audio API
  • загрузка бинарных данных, XMLHttpRequest Level 2
  • полноэкранный режим, Fullscreen
  • захват курсора мыши, Pointer Lock
  • многопоточные вычисления, Web Workers
  • ориентация и перемещение мобильных устройств, Device Orientation

Другие перспективные технологии:

  • векторная графика, Scalable Vector Graphics (SVG)
  • безопасный доступ к файлам, File API, File API: Directories and System
  • потоковое соединение между браузерами, WebRTC
  • постоянное сетевое подключение, The WebSocket API
  • игровые пульты, Gamepad

Интерактивная графика¶

Термин “интерактивный” в приложении к компьютерной графике означает, что пользователь имеет возможность взаимодействовать с постоянно меняющимся изображением. Например, пользователь может изменять направление взгляда в 3D сцене, перемещать объекты, инициировать анимацию и выполнять другие действия, обычно ассоциирующиеся с компьютерными играми.

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

Близким по смыслу термином является также “графика реального времени”, или “рендеринг реального времени” (от англ. rendering, т.е. “отображение”).

Видео-карты и драйверы¶

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

Основные производители графических процессоров (в скобках указаны их торговые марки), для настольных компьютеров — Nvidia (GeForce, Quadro), AMD (Radeon), Intel (HD), для мобильных устройств — ARM (Mali), PowerVR (SGX), Nvidia (Tegra), Qualcomm (Adreno).

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

© Copyright 2014-2017, Триумф. Обновлено: 2019-04-16.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *