Мы рады сообщить о выходе в свет очередной версии Blend4Web, открытой платформы для создания интерактивных трехмерных веб-приложений. В этом релизе: начальная поддержка WebGL 2.0, техника антиалиасинга MSAA, расширение возможностей редактора логики, а также многочисленные улучшения, нацеленные на повышение удобства пользования фреймворком.
WebGL 2.0
Прогресс не стоит на месте, в браузерах Chrome и Firefox активно идёт работа по имплементации новой версии технологии трёхмерной графики WebGL 2.0. Эта версия WebGL основана на мобильной OpenGL ES 3.0, поддержка которой активно внедряется в смартфоны с прошлого года. На стороне десктопов необходимо иметь видеокарту, поддерживающую OpenGL 3.2 (в частности, любую Nvidia/AMD не старше 5 лет, либо Intel начиная с HD 3000).
Поддержка WebGL 2.0 открывает множество новых возможностей, чтобы сделать ещё более качественную картинку, а в некоторых случаях, увеличить производительность отрисовки. В частности, среди запланированного на следующий год функционала имеется реализация физически корректной симуляции частиц, например, для создания реалистичных эффектов вроде огня, дыма, всплесков на водяной поверхности или движения листьев под действием ветра.
Стоит отметить, что планы по внедрению WebGL 2.0 никаким образом не скажутся на поддержке систем, несовместимых с новыми API. Развитие рендеринга, основанного на WebGL 1.0 не только не будет приостановлено, но будет активно продолжаться.
Антиалиасинг MSAA
В прошлом релизе мы сделали большую работу по улучшению антиалиасинга, основанного на технологии FXAA. Данный алгоритм даёт хорошие результаты в плане качества картинки, однако обладает некоторыми недостатками, в частности снижает контрастность некоторых участков изображения и даёт небольшие артефакты при движении камеры. Этих недостатков лишён алгоритм MSAA, который доступен на профилях качества ULTRA начиная с этого релиза.
Этот алгоритм даёт превосходное качество картинки, но имеет повышенные требования к производительности GPU. Это первый пример использования новых возможностей WebGL 2.0.
Сравнение FXAA Ultra и MSAA 16x.
Редактор логики
В узел Move Camera добавлена возможность плавной смены положения камеры.
Узeл Move Camera.
В узле Play Animation появилась возможность задания поведения объектной анимации по её окончании. В частности, теперь возможно останавливать, сбрасывать на начальный кадр или циклически повторять анимацию.
Узeл Play Animation.
Добавлены три новых узла Stop Animation, Stop Sound и Stop Timeline, которые, как следует из названия, позволяют останавливать объектную анимацию, проигрывание звука и анимацию глобальной шкалы времени соответственно.
Узлы Stop Animation, Stop Sound и Stop Timeline.
Упрощение использования узла Play Timeline. Теперь задавать начальный и конечный кадр нет необходимости, анимация будет начинаться с текущей позиции глобальной шкалы времени.
Работа упрощённого узла продемонстрирована на следующем примере - IQ Test.
Улучшения в программе-просмотрщике
Улучшения в интерфейсе программы-просмотрщика.
Добавлена кнопка Home, при нажатии на которую осуществляется переход на базовую сцену, указанную в URL-параметрах приложения, либо, при её отсутствии, на стандартную сцену с кубическим лого Blend4Web. Кнопка Reset вынесена в правую часть верхней панели приложения и теперь, кроме внутренних параметров, также сбрасывает и URL-параметры просмотрщика (например, загружаемую базовую сцену). Кнопка Auto View Mode для автоматического прохода всех сцен вынесена на панель Tools & Debug.
Для удобства настройки анимации в интерфейс были добавлены кнопки: Play All и Stop All, которые служат для запуска и остановки всей анимации, имеющейся на текущей сцене.
Новый интерфейс программы-просмотрщика.
Улучшения камеры
Опция, которую ждали многие из наших пользователей: новая кнопка настроек TARGET-камеры Look At Cursor, пришедшая на замену Copy Cursor Location. При нажатии на эту кнопку, камера автоматически поворачивается в сторону, где будет находится опорная точка и фиксирует эту точку в настройках.
Кнопка Look At Cursor.
Программирование поведения камеры всегда было достаточно сложным процессом, поскольку движком поддерживаются четыре различных модели поведения камеры, каждая со своими настройками и методами. В этом релизе мы сделали существенные изменения, нацеленные на упрощение использования данных API. Их общий смысл сводится к тому, чтобы выделить группы методы, ответственные за каждый из типов поведения, а также упростить назначение лимитов, ограничивающих движения камеры. Полный список произведённых изменений, а также рекомендации по обновлению приложений на новые API находится в замечаниях к релизу.
Поскольку изменений много, старые методы для управления камерой остаются, хотя и объявлены устаревшими. Мы будем поддерживать их функционал в течение нескольких релизов, чтобы дать время разработчикам на обновление своих приложений.
Прочие улучшения
Мы продолжаем работу по реструктуризации кодовой базы движка. В частности, для перемещения объектов внутри движка ранее использовались матрицы, векторы и кватернионы. В данной версии движка мы отказались от матриц и перемещаем объекты исключительно с помощью векторов/кватернионов. Данное нововведение упрощает код движка и способно в ряде случаев улучшить производительность.
В этом релизе мы также добавили новый высокоточный механизм оценки производительности рендеринга, оценивающий время, потраченное на операции GPU. При активации режима отладки в программе-просмотрщике (опция HUD Info на панели Tools & Debug) в последней колонке отладочной информации выводится время в миллисекундах, потраченное GPU на рендеринг соответствующей части сцены.
Отладка производительности рендеринга.
В этом релизе мы также обеспечили поддержку устройств на базе GPU Adreno 4xx серии (в частности, смартфонов Nexus 6), а также недавно вышедшего планшета iPad Pro.
В завершение
Представленный релиз Blend4Web совместим с Blender 2.76. Blend-файлы всех упомянутых в этой статье примеров включены в состав Blend4Web SDK. С полным списком изменений и исправленных ошибок можно ознакомиться в замечаниях к релизу.