Релиз Blend4Web 15.04
2015-04-29
Представляем вашему вниманию очередной релиз Blend4Web 15.04. В этой версии: ключи деформации и морфинг, поддержка настроек цвета фона из Blender, нода гамма-коррекции, улучшения аннотаций и многое другое.
Ключи деформации
Распространенная в 3D-графике техника плавного перехода одной геометрической формы в другую (морфинг) теперь работает и в Blend4Web. В этом можно убедиться, если запустить соответствующий пример из приложения Code Snippets в составе SDK.
Крайние геометрические формы, т.н. ключи деформации (Shape Keys), создаются с помощью стандартного интерфейса пакета Blender. Для экспорта ключей деформации в Blend4Web достаточно активировать опцию Export Shape Keys.
Blend4Web поддерживает все настройки относительных (Relative) ключей, включая использование вертексных групп и выбор произвольного базового ключа. При желании для управления факторами смешивания можно использовать драйверы.
Загруженными в приложение деформационными ключами можно управлять, используя метод из модуля geometry, например:
m_geometry.apply_shape_key(my_character, "Waist Height", 0.4);
Цвет фона
По просьбам наших пользователей, мы реализовали возможность настройки фона сцены с помощью штатных средств пакета Blender. Функция включается во вкладке World на панели Blend4Web:
Цвет фона настраивается с помощью цветоподборщиков Horizon Color и Zenith Color. Также мы поддержали все режимы настроек фона, которые имеются в Blender - Paper Sky, Blend Sky и Real Sky.
Для удобства, можно включить режим отображения фона непосредственно во вьюпорте с помощью опции Display > World Background (эта опция появилась в Blender 2.73).
Узнать о других возможных способах установки фона можно в соответствующем разделе руководства пользователя.
Нода Gamma
Разработчики Blend4Web реализовали поддержку ноды Gamma в нодовых материалах пакета Blender. Соответствующий патч был включен в релиз Blender 2.74, и с сегодняшнего дня эта нода поддерживается в Blend4Web. Поддержка использовавшихся ранее для гамма-коррекции нодовых групп B4W_LINEAR_TO_SRGB и B4W_SRGB_TO_LINEAR сохранена.
Гамма-корректный рендеринг - одна из важнейших составляющих качественного 3D изображения. Опытным пользователям Blend4Web необходимо учитывать, что загружаемые ресурсы могут храниться как в линейном, так и нелинейном (sRGB) цветовом пространстве. На скриншотах ниже показаны типичные случаи преобразований цветовых пространств - распаковка sRGB -> Linear и упаковка Linear -> sRGB.
Аннотации: новые возможности
Теперь имеется возможность использовать целые текстовые файлы в качестве аннотаций. Текст может быть набран во встроенном текстовом редакторе Blender. Для экспорта достаточно переключить Description Source в режим File и указать название текстового блока в поле Description. Также появилась возможность ограничивать ширину HTML элемента аннотации (опция Max Width).
Мы приняли во внимание отзывы наших пользователей и реализовали динамическую загрузку и выгрузку «якорей» аннотаций, а также возможность их сокрытия и появления стандартными программными методами и с помощью инструмента визуального программирования NLA Script.
Новости с фронта разработки Blender
Между тем, на трекере разработки Blender ожидают рассмотрения уже шесть наших патчей:
- D810 Поддержка настроек освещения от окружающей среды (Environment Lighting) во вьюпорте. Это позволило бы наблюдать непосредственно в Blender такие же условия освещения, как после экспорта в Blend4Web. По необъяснимой причине, сейчас эти настройки работают только в рендерере.
- D846 Реализация ноды Smooth Step (смягченный переход). В настоящее время вместо этой ноды в Blend4Web используется нодовая группа B4W_SMOOTHSTEP, содержащая 9 математических операций. Нода Smooth Step соответствует стандартной встроенной функции шейдерного языка GLSL, и ее наличие позволило бы создавать более быстрые шейдеры.
- D909 Поддержка Vector Transform, ноды из состава Cycles, в нодовых материалах Blender Internal. Эта нода предназначена для преобразований между системами координат. В частности, она была бы очень полезной для преобразования нормалей из пространства камеры (в котором работает Blender), в мировое пространство. Это позволило бы создавать во вьюпорте (а значит, и в Blend4Web) эффекты, которые не зависят от направления взгляда.
- D923 Поддержка функционала ноды Geometry в нодовых материалах Blender Internal. В настоящее время в ноде Geometry отсутствуют такие важные выходы, как Incoming, Normal (в пространстве мировых координат), Tangent и другие.
- D1120 Поддержка ноды Normal Map, ноды из состава Cycles, в нодовых материалах Blender Internal. Как можно догадаться из ее названия, эта нода обеспечила бы работу карт нормалей во вьюпорте, включая тангетное, объектное и мировое пространства координат. В настоящее время пользователи Blend4Web вынуждены помещать карты нормалей внутрь вспомогательных нод Material, подключая их через ноды B4W_REPLACE.
- D1188 Поддержка нодовых материалов в специализированных рендер-движках. Чтобы собрать вместе все поддерживаемые настройки и облегчить таким образом пользователю работу с Blend4Web, нами был реализован специализированный профиль, работающий аналогично Blender Game и Cycles Render. К сожалению, выяснилось, что текущая реализация этого механизма в Blender не позволяет отображать нодовые материалы в таком профиле, в связи с чем и был подготовлен этот патч.
Попробовать весь этот функционал в действии можно, загрузив сборки Blender с ресурса GraphicAll: Linux x64, Windows x64.
Прочие улучшения
Работать со скелетной анимацией стало гораздо проще! Blend4Web теперь учитывает взаимное расположение арматуры и объекта, в результате чего больше нет необходимости размещать арматуру и анимируемый объект в одной точке и с одинаковым поворотом и масштабом.
Объектная анимация теперь позволяет анимировать независимо перемещение, поворот и масштаб. Проставлять анимационные ключи на все каналы больше не требуется, что позволяет сохранять изначальные значения в незатронутых каналах или изменять их через API.
Эффект Glow и все связанные с ним компоненты движка были переименованы в Outline. Новое имя более ясно описывает суть эффекта: подсвечивание объекта на его границах. Небольшой спойлер: "glow" будет использовано в качестве названия другого интересного эффекта, который будет представлен в недалеком будущем.
Оптимизация, оптимизация и еще раз оптимизация... Физический движок Uranium теперь состоит из двух модулей: собственно кода движка uranium.js и файла инициализации памяти uranium.js.mem (оба модуля должны находится в одной директории). При этом общий объем кода уменьшился на 20%, а скорость физических расчетов возросла.
Кроме того, серьезно переработан компилятор шейдеров. Помимо добавления новых возможностей, была улучшена производительность нодовых материалов.
Заключение
Выше были представлены наиболее заметные результаты нашей работы в прошедшем месяце. Полный список изменений, включающий добавление новых и удаление устаревших методов API, а также исправленные ошибки, содержится в замечаниях к релизу. Как обычно, оставить комментарии можно в соответствующей ветке форума.