События

Релиз 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.

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

Типичный случай использования упаковывающей ноды Gamma: текстура используется в качестве маски. Маски - это набор чисел, а не цвет, и гамма-коррекция к ним применяться не должна. Тем не менее, нода Texture в Blender всегда распаковывает изображения. Поэтому в случае текстуры-маски необходимо осуществить обратную коррекцию в 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, а также исправленные ошибки, содержится в замечаниях к релизу. Как обычно, оставить комментарии можно в соответствующей ветке форума.

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