Blend4Web

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
Blend4Web
Blend4Web Logo
Screenshots of Blend4Web demos
Screenshots of Blend4Web demos
Developer(s) Triumph LLC
Stable release 16.03 / March 31, 2016; 8 years ago (2016-03-31)
Development status Active
Written in JavaScript, Python, C, C++
Type 3D engine
License GPLv3 or commercial
Website www.blend4web.com

Blend4Web is an open source framework for creating and displaying interactive 3D computer graphics in web browsers.

Overview

The Blend4Web framework leverages Blender to edit 3D scenes. Content rendering relies on WebGL, Web Audio and other web standards, without the use of plug-ins.[1]

It is dual-licensed and is distributed under an open source GPLv3 and a commercial license; the source code is hosted on GitHub.[2]

A 3D scene can be prepared in Blender and then exported as a pair of JSON and binary files to load in a web application. It can also be exported as a single, self-contained HTML file, in which exported data, the web player GUI and the engine itself are packed.[3] The HTML option is considered to be the simplest way of using Blend4Web.[4] The resulting file, which is reported to have a minimum size of 1 Mb, can be embedded in a web page using a standard iframe HTML element.[5] Blend4Web-powered web applications can be deployed on popular social networking websites such as Facebook.[6]

The Blend4Web toolchain consists of JavaScript libraries, the Blender add-on and a set of tools for tweaking 3D scene parameters, debugging and optimization.

Blend4Web development was started by a Moscow-based company called Triumph in 2010. It was first publicly released on March 28, 2014.[7]

Features

The framework has a number of components typically found in game engines, including positional audio system, physics engine (a fork of Bullet ported to JavaScript), animation system and an abstraction layer for game logic programming.[8]

Up to 8 different types of animations can be assigned to a single object, including skeletal and per-vertex animation. The speed and the direction of animation (forward/backward play), as well as particle system parameters (size, initial velocity and count) can be changed though the API.[9]

Among other supported features are scene data dynamic loading and unloading, subsurface scattering simulation and image-based lighting.[10]

Some out-of-box options exist for rendering extended outdoor environments, including foliage-wind interaction, water, atmosphere and sunlight simulation. One example demonstrating these effects is "The Farm" tech demo, which also features multiple animated NPCs and the ability to walk, interact with objects and drive a vehicle in first-person mode.[11]

Being based on the cross-browser WebGL API, Blend4Web runs in the majority[12] of web browsers, including mobile ones.[13] There are some caveats for browsers with experimental WebGL support though, such as Internet Explorer.[14]

Advanced features include draw call batching, hidden surface determination, threaded physics simulation and ocean simulation.[15]

In version 14.09, Blend4Web introduced the possibility of adding interactivity to 3D scenes using a visual programming tool.[16][17] The tool is reminiscent of the BGE's logic editor as it uses logic blocks which are placed inside Blender. It plays back animation tracks authored by an artist when the user interacts with predefined 3D objects.[18]

Since version 15.03, Blend4Web has supported attaching HTML elements (such as information windows) to 3D objects ("annotations") and copying objects in run time ("instancing").[19]

Among post-processing effects, the following features are supported: glow, bloom, depth of field, crepuscular rays, motion blur and screen space ambient occlusion.[20]

Virtual reality devices have been supported since the end of 2015. Specifically, Oculus Rift head-mounted display works over experimental WebVR API.[21]

Blender integration

The Blender add-on is written in Python and C and can be compiled for the Linux x86/x64, OS X x64 and MS Windows x86/x64 platforms.

A Blend4Web-specific profile can be activated in the add-on settings. When switching to this profile, the Blender interface changes so that it only reveals settings relevant to Blend4Web.[22]

File:Blend4Web profile.png
Menu for switching to Blend4Web mode

Blend4Web supports a set of Blender-specific features such as the node material editor (a tool for visual shader programming) and the particle system.[23] There is basic support for Blender's non-linear animation (NLA) editor for creating simple scenarios.

Blend4Web is essentially based on Blender's real-time GLSL rendering engine, which users are recommended to use in order to enable WYSIWYG editing.[24]

Comparison with relevant software

Blender Game Engine

Similar to the Blender Game Engine (BGE), Blend4Web directly loads and plays back scene data extracted from Blender scenes, without the use of an intermediate editor.[4] Being a web framework, it targets web browsers while a BGE executable must be run offline.[25][26] It provides its own JavaScript API which is different from the Python-based API of the BGE. A web development approach is proposed instead of a combination of logic blocks and Python scripting used in the BGE.

Unity

Unity has offered a WebGL build option since version 5.[27] A survey by a Unity game developer was conducted to compare these two engines.[28] Two interactive web-based presentations of a turbofan were created using Blend4Web and Unity. Although the author noted that both engines produced similar visual quality, Unity's WebGL build had a total file size of 142 Mb (uncompressed) while the Blend4Web's exported HTML file for the same scene was only 1.8 Mb (uncompressed).

According to their WebGL roadmap, Unity has no plans to support mobile devices, positional audio system and video textures in the near future.[29][30]

Three.js

The popular WebGL library, Three.js, is reported to require programming for trivial tasks, thus demanding more competence from users and offering a slow learning curve. In Blend4Web, most of the work in preparing online presentations can be done without any programming.[31][32]

Notable uses

NASA developed an interactive web application called Experience Curiosity to celebrate the 3rd anniversary of the Curiosity rover landing on Mars.[33] This Blend4Web-based app[34] makes it possible to operate the rover, control its cameras and the robotic arm and reproduces some of the prominent events of the Mars Science Laboratory mission.[35][36] The application was presented at the beginning of the WebGL section at SIGGRAPH 2015.[37]

Experience Curiosity: taking a selfie
File:Experience curiosity2.png
Experience Curiosity: learning mode
File:Experience curiosity3.png
Experience Curiosity: free drive mode

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Прахов, Андрей (Июль, 2015). "Blend4Web". Linux Format, стр. 20.
  4. 4.0 4.1 Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Cozzi, Patrick. WebGL Insights. CRC Press, 2015 ISBN 978-1-49-871607-9.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found.
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.

External links