Релиз Blend4Web 16.12
2016-12-22
Представляем новую версию Blend4Web — открытой платформы для создания интерактивных веб-приложений. В завершающем на этот год релизе мы усовершенствовали Менеджер проектов, добавили поддержку ноды Emission из системы рендеринга Cycles и возможность выбирать объекты взглядом в шлеме виртуальной реальности, а также внедрили несколько алгоритмов оптимизации для ускорения загрузки и рендеринга крупных трёхмерных сцен.
Менеджер проектов
Работа над Менеджером проектов продолжается. Текстовый редактор, который появился в предыдущем релизе, пришелся по душе пользователям. Теперь, в соответствии с высказанными пожеланиями, мы добавляем возможность создавать новые файлы с помощью кнопки New File, а также сохранять файлы под другими именами с помощью кнопки Save As. Кроме того, теперь редактор подсвечивает имя открытого файла.
Важно! В новом релизе произошли изменения, затрагивающие структуру файлов приложения (эти изменения широко обсуждались на форумах нашего сообщества). Теперь все файлы вновь созданных приложений Blend4Web будут располагаться в отдельной папке projects/ внутри SDK. Это относится как к файлам Blender, так и к экспортированным сценам, внешним ресурсам, коду HTML/CSS/JS и файлам, которые создаются при сборке приложения.
Старая система продолжает работать, так что вы можете продолжать разработку своих приложений без каких-либо проблем. Однако если вы захотите перевести их на новую систему, сделать это будет несложно: достаточно нажать update file structure справа от проекта. Эта операция создаёт новый проект с тем же именем, старый же можно удалить, предварительно удостоверившись, что новый работает без проблем. Однако имейте в виду, что в приложениях, использующих программный код, потребуется вручную заменить метод m_config.get_std_assets_path() на m_config.get_assets_path("имя_проекта"), поскольку медиаресурсы теперь находятся внутри директории проекта.
И последнее: теперь при сборке проекта Менеджер уменьшает размеры не только CSS- и JavaScript-файлов, но и файлов HTML, что делает приложение еще немного компактней.
Cycles
В предыдущем релизе появилась предварительная поддержка системы рендеринга Cycles, а теперь к списку поддерживаемых нод Cycles добавилась нода Emission, которая может использоваться, например, для создания поверхностей, излучающих свет, как в этой сцене:
Вы можете самостоятельно загрузить исходный .blend-файл с Blend Swap и проверить, как он работает в Blend4Web.
Библиотека материалов
В связи с наступлением холодной зимы библиотека пополнилась двумя новыми материалами: снегом и льдом. Эти замечательные материалы входят как в PRO-дистрибутив Blend4Web, так и в CE-версию, так что каждый может использовать их при создании интерактивной рождественской открытки для своих друзей и близких!
Выбор объектов в VR
Появилась возможность выбирать объекты, просто смотря на них, что особенно полезно для приложений WebVR. Новый метод API pick_center() из модуля scenes помогает определить объект, находящийся в центре экрана.
Батчинг, отсечение поверхностей и уровни детализации
Если вы разрабатываете приложения с большими открытыми сценами и множеством объектов (такие, как Ферма, заставка «Сказа о Пятигоре» или грядущий «Капри»), этот функционал будет вам особенно интересен.
Возможно, вы помните, как некоторое время назад мы усовершенствовали алгоритм батчинга, внедрив поддержку т.н. кластеров. На практике это означает, что все объекты сцены объединяются в группы в зависимости от их местоположения, так что объекты, не попадающие в поле зрения камеры, отсекаются более эффективно.
В этом месяце алгоритм объединения объектов в кластеры был усовершенствован и теперь принимает во внимание новый параметр, а именно, расстояния LOD (уровней детализации). Хотя эта методика увеличивает количество батчей (и потенциально количество запросов отрисовки WebGL), она позволяет более эффективно отсекать батчи с помощью стандартных механизмов LOD и в целом приводит к росту производительности.
Обратите внимание, что по умолчанию в сцене кластеры не генерируются. Для того чтобы использовать этот приём, следует установить ненулевое значение параметра Cluster Size на вкладке Scene (размер измеряется в единицах Blender). Для более тонкой настройки LOD-компоненты появился параметр LOD Cluster Size Multiplier, помогающий достичь наилучшей производительности.
Прочие улучшения
Повысилась эффективность загрузки текстур: теперь движок проверяет URL-адреса и игнорирует уже загруженные файлы. Это снижает как время загрузки, так и расход памяти, в случаях если приложение динамически загружает сцены с повторяющимися текстурами, применяет метод change_image() на нескольких объектах или если текстура используется на нескольких объектах сцены.
Помимо этого появились методы API prefetch() и unfetch(). Они используются для загрузки дополнительных медиаресурсов в фоновом режиме во время работы приложения.
И, наконец, источники света с неподдерживаемым типом AREA теперь работают как источники типа SUN, а в консоли браузера выводится соответствующее сообщение об ошибке.
Заключение
В этом релизе также исправлено несколько багов. В частности, нодовая логика теперь нормально работает с графическими планшетами Wacom. То же относится к видеотекстурам, сломавшимся в результате недавнего обновления Chrome на Android. С полным списком изменений и исправлений можно ознакомиться в замечаниях к релизам.
И хотя на эту тему будет отдельное сообщение, мы также хотели бы поздравить всех вас с наступающими праздниками. Желаем удачной 3D веб-разработки в новом году!