События

Релиз Blend4Web 18.05

2018-06-06

Представляем новый релиз Blend4Web - открытой платформы для создания трёхмерных веб-приложений. В новом релизе 18.05 мы подготовили важные изменения и доработки платформы.
Новая версия веб-плеера 3.0

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

Новый Webplayer в действии (нажмите чтобы открыть в новом окне)

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

Панель управления теперь не мешает просмотру и убирается при взаимодейтвии со сценой. На панели пересмотрены кнопки и добавлена подсказка по работе с плеером.

Новые визуальные эффекты

Рефракция

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

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

Стоит отметить, что эффект рефракции в движке можно было создавать и ранее. Для этого использовалась нода Refraction. Однако алгоритм, используемый в этой ноде симулирует эффект рефракции очень приближенно и при этом не позволяет передавать преломление на шероховатых поверхностях. Новый же алгоритм использует более точную физическую модель, использующую параметры PBR — Index of Refraction (IOR), Transmission, Roughness.

Масштабирование

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

Отражение при динамической загрузке

При добавлении объектов на сцену поддерживается эффект отражения, что позволяет максимально подстраивать объекты под особенности сцены. Если загружаемый объект и объекты на сцене обладают зеркальными поверхностями, либо имеют свойство "отражаемости", то происходит корректное отражение таких объектов друг в друге. Поддерживаются как плоские, так и кубические отражения. Доступна загрузка как отражающих (флаг Reflective), так и отражаемых (флаг Reflexible) объектов.

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

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

Однако каждое приложение имеет свои собственные утилиты сборки. Понимая это, мы добавили в Project Manager возможность конфигурировать пользовательскую команду сборки проекта. Первый сконфигурированный таким образом проект – новый WebPlayer. Он имеет более простую структуру исходников, чем старый и таким образом создать свой собственный брэндовый WebPlayer на основе стандартного стало намного проще! Blend4Web при сборке своих приложений использует google-closure-compiler. Этот компилятор генерирует хорошо оптимизированный и маловесный код. Его же мы подключили и в новом WebPlayer.

Для генерации исключений (externs) компилятора мы разработали специальный скрипт, который вы можете использовать при сборке своих собственных проектов. Сгенерированный файл с исключениями мы также поместили в каталог dist\misc\closure_externs\ npm-пакета, чтобы пользователи NPM также без проблем могли использовать google-closure-compiler.

Возможности для программистов

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

Прочие улучшения

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

  • Функции для создания и копирования Empty-объектов
  • Обновлен код WebVR в соответствии с последними изменениями в браузерах
  • Исправлено множество багов

Полный список изменений смотрите в Замечаниях к Релизу.

Планы развития платформы

Рефакторинг движка

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

Мы решили последовательно производить рефакторинг результатом которого должны стать следующие улучшения: более гибкий менеджмент сцен, 3D объектов, материалов и других сущностей, заключающийся в возможности динамического создания и изменения каждой такой сущности. Как следствие удастся упорядочить внутреннюю структуру движка и реализовать более четкую модульность. Это даст возможность создавать приложения, имеющие значительно меньший размер. А в конечном итоге станет возможной реализация нового API, более удобного и высокоуровневого.

Новые пайплайны разработки Blend4Web-приложений

Мы уже не раз говорили о NPM и его преимуществах. Но все это – «программистские штучки». А как же быть художникам? Чего им ждать в будущем? Что изменится?

Выйдет Blender 2.8 с богатейшим обновлением вьюпорта. Вьюпорт получит новый современный реалтаймовый движок Eevee. И Blend4Web будет также стремиться воспроизвести близкую к Eevee картинку.

Но мы не будем останавливаться на одном лишь Blender и в данный момент работаем на реализацией альтернативных пайплайнов, основанных на формате glTF.

Blend4Web Studio

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

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

Все перечисленные наработки мы планируем представить уже скоро, под брэндом Blend4Web Studio. Отдельно работающая программа поможет устанавливать инструменты раздельно и существенно упростит работу с нашими технологиями широкому кругу специалистов.

Среди задач студии:

  • Управление проектами и сборка приложений
  • Магазин модулей и ассетов
  • Визуальный редактор логики и материалов
  • Разработка конфигураторов с импортом glTF объектов
  • Проектирование одежды по параметрическим чертежам
  • Расчет поведения тканей в реальном времени
  • Проектирование визуальных панелей и логики для систем автоматики

Студия позволит пользователям других 3D-пакетов воспользоваться всей мощью движка и разрабатывать WebGL-приложения используя свой любимый редактор - 3Ds Max, Cinema4D или ... да в общем любой 3D-редактор, поддерживающий glTF.

Как всегда, мы будем рады вашим откликам в комментариях к этой статье и на нашем форуме!

Комментарии
08 июн. 2018 23:12
Спасибо за релиз :)
А получается, если поставить сцену на паузу, например с бегемотом, то ползунки времени анимации уже нельзя вращать. Только в процессе самой анимации? И когда стоит на паузе покрутить объект тоже не получится
11 июн. 2018 20:13
с дождиком красивая дкмка . правда на ФФ х64 девелопер запустилась с 5го раза ! на Хроме сразу !

еще такая ругать в ФФ
"Error: WebGL warning: drawElementsInstanced: This operation requires zeroing texture data. This is slow. rain1.html:701:270"
13 июн. 2018 13:51
с дождиком красивая дкмка . правда на ФФ х64 девелопер запустилась с 5го раза ! на Хроме сразу !

еще такая ругать в ФФ
"Error: WebGL warning: drawElementsInstanced: This operation requires zeroing texture data. This is slow. rain1.html:701:270"
А на какой системе пробовали?
13 июн. 2018 13:52
А получается, если поставить сцену на паузу, например с бегемотом, то ползунки времени анимации уже нельзя вращать. Только в процессе самой анимации? И когда стоит на паузе покрутить объект тоже не получится

Да, на данный момент поведение именно такое. В будущем сделаем так, чтобы пауза останавливала лишь анимацию.
14 июн. 2018 12:51
ПРОБЛЕМА с "Длинными путями " в 10 винде НЕ ИСПРАВИЛАСЬ !
14 июн. 2018 13:47
Распаковка стандартным архиватором должна срабатывать без ошибок.
Если пытаться копировать SDK, на котором хотя бы раз была запущена сборка, то ошибка возможно будет появляться. Это связано с оригинальным дистрибутивом node.js. У него внутри длинные пути.
Как у вас проявляется проблема? После каких действий?
14 июн. 2018 14:22
Ответ на сообщение пользователя Александр Романов
Распаковка стандартным архиватором должна срабатывать без ошибок.
Если пытаться копировать SDK, на котором хотя бы раз была запущена сборка, то ошибка возможно будет появляться. Это связано с оригинальным дистрибутивом node.js. У него внутри длинные пути.
Как у вас проявляется проблема? После каких действий?

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

Дополню:
в тестовом варианте испльзуем проект без сборки а сразу все подключаем из основного файла
в прошлом релизе все работало, обновил , переэкспортил все сцены все заменил ан хостинге и все пресатло заргужаться.. с сообщением о поиске папки с шейдерами которой отродясь в проекте не было ? ПОЧЕМУ?
"
B4W ERROR: 404 when trying to get
http://maindomain.com/myapp/shaders/anchors.glslf?v=14062018153832
"
и все зависает на :
"
TypeError: shader is null b4w.js:25317:13 …. "
14 июн. 2018 19:08
я для себя как решение использую FAR и пара рег файлов и все копирует, но это не совсем верное решение
Это ужасно неудобное ограничение windows и даже разработчики nodejs решили ее лишь частично, немного укоротив вложенность модулей. Для некоторых windows можно отключить это ограничение, например вот инструкция.
Подумаем, как еще можно упростить жизнь наших пользователей.


Дополню:
в тестовом варианте испльзуем проект без сборки а сразу все подключаем из основного файла
в прошлом релизе все работало, обновил , переэкспортил все сцены все заменил ан хостинге и все пресатло заргужаться.. с сообщением о поиске папки с шейдерами которой отродясь в проекте не было ? ПОЧЕМУ?
Вы нашли баг.
Попробуйте использовать минифицированные версии движка:
b4w.min.js, b4w.simple.min.js или b4w.whitespace.min.js
14 июн. 2018 23:20
Ответ на сообщение пользователя Александр Романов
Вы нашли баг.
Попробуйте использовать минифицированные версии движка:
b4w.min.js, b4w.simple.min.js или b4w.whitespace.min.js

не то чтоб помогло (( стало сразу выпадать
"
22:14:21.951 B4W ERROR: 404 when trying to get
http://mydomain.com/myapp/js/../../../projects/..//assets/main.json?v=_b4w_ver_17_10_1_ b4w.whitespace.min.js:992:242
22:14:21.952 b4w load failure
"
15 июн. 2018 11:24
Вы точно подключили корректную версию движка? Строка _b4w_ver_17_10_1_ указывает на то, что это не 18.05
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.