Smart UI that adds elements depending on the content: for scenes with NLA animation and without logic nodes the new WebPlayer adds a Timeline control; for mobile devices, the content of the help page depends on the current camera type.

Multi-language UI - currently English and Russian versions are available.

Further support for Cycles materials.

Basic support for refraction in PrincipledBSDF has been added. IOR and Transmission sockets can now be used to configure transparent materials. Transmission controls transparency, while IOR (index of refraction) sets the intensity of refraction. Roughness impacts turbidity of the material.

Axis-aligned non-uniform scale has been supported. ApplyScale operation is not needed anymore (in most cases)!

Scaling can now be applied independently along axes.

For child objects, scale is aligned to their local axes.

Improvements in Project Manager and build system.

CustomBuildType has been added to Application Types. It allows for setting a user-defined build command. This command can contain environment variables ($NODE and $NPM will be resolved as integrated into SDK node and npm utilities).

Added script for generating externs based on the engine source code using googleclosurecompiler. This script can be used in custom build configurations that utilize googleclosurecompiler (see build scripts of the new webplayer).

Added EditorIgnoreList field to exclude unwanted files from the file list in the TextEditor.

The ability to control gravity vector in the scene has been added. Stability of the HINGE constraints has been improved. Also the set_character_vert_move_dir_angle method has been added to the physics module.

Added new nodes to the LogicEditor: DefineFunction, CallFunction, Switch

Destination field has been added to the Select node. This field specifies a variable used to contains selected object after the event of selection.

Added Object variable type to the Logic Editor.

The UI of some nodes which use object selector is extended with ability to specify a variable

Now WebGL instancing capabilities are used (provided by the ANGLE_instanced_arrays extension or WebGL 2.0) to render Object-type particles. This type of rendering is more memory efficient and, in some cases, also improves rendering performance.

Reduced input latency on mobile devices.

Now the engine ignores mouse events that represent actions that already have been handled by internal Blend4Web touch-event handlers on mobile versions of Chrome, Firefox, Safari. It reduces delays in user actions.

Audio system improvements.

Automatic audio context creation. The Audio checkbox has been removed from the addon. If necessary, scene audio context is created automatically.

Doppler effect implementation. In recent versions of WebAudio spec Doppler effect was removed. It’s now supposed that application developers should implement this effect themselves. From this release you can use in-engine implementation. A new option called EnableDoppler has been added, replacing the deprecated DisableDoppler.

Reworked audio interface. New settings have been designed to be as close as possible to the native Blender settings. This includes support for such settings as Speed, Doppler and DistanceModel.

Preliminary support for complex audio loops. Using new LoopStart and LoopEnd options as well as loop_stop API method you can create complex audio loops, which include start, loop and stop sections in one audio buffer. For example, you can create basic ADSR (attack, decay, sustain, release) envelopes using this new API.

Now color picking uses very narrow frustum and a small framebuffer size (1x1 pix).
Also, amount of pick_object calls has been reduced. This improves
performance of selection sensor.

Depth-of-field (DOF) effect improvements.

DOF effect performance has been increased.

An experimental DoF effect algorithm has been added. It varies the amount of blur depending on depth and produces bokeh effect on blurred objects. New algorithm can be enabled via Bokeh property from the camera properties panel in Blender.

Support for new WebVR API 1.0 has been added to the engine allowing the use of GearVR devices.

Support for GIF and BMP textures.

Non-animated GIF and BMP images can now be used as textures.

Resource Converter improvements.

Now many more media extensions are supported. For detailed information see the documentation.

Automatic export path determination in Blender addon.

When projects, created using Project Manager, are exported for the first time, a path to the assets directory is automatically resolved.

Support for parallel animations in the Logic Editor.

It is now possible to apply several parallel animations with the Logic Editor. Previously, only one animation per object was allowed in the Logic Editor. Now, an object can have one animation of each type. The maximum number of possible animations is 8.

Improved Viewer profiling capabilities.

Added a special mode for profiling objects' rendering time in the Viewer application.

LensFlare material property.

A new material property has been appended to the material render panel.
Note, that this works only when there is a Sun light source in a scene.

Clip Start and Clip End options for light sources.

The Clip Start and Clip End properties have been supported for the shadow settings of Point and Spot lamps.

HTML meta elements in Web Player app.

New HTML meta elements have been added into the WebPlayer HTML templates for compatibility with different social networks.

Add-on hmd_conf.js has been added. It allows users to set up HMD parameters manually. For now, this configurator has been implemented in the Viewer app and can be executed by the button located on the Stereo View panel. For more information see API documentation on the hmd_conf module.

Experimental configurator for gamepads and other game controllers.

Add-on gp_conf has been added to API. It contains two main functions: show and hide. For now it supports controllers and steering devices.

To test this configurator in the Viewer app activate the Gamepad Settings check box on the Input Devices panel.

New code snippets.

New code snippet demos have been added. Their names are Gamepad,
Webcam and Change Image. The first one can help you to integrate gamepads into
your project, the second shows you the Camera API in action and the third one
is the implementation of the new texture functions.

A new VectorTransform material node.

This node can be used to convert input data between object, world and camera coordinate spaces.

A new Empty logic node.

This node can be used to simplify rerouting complex logic node configurations.

Dynamic replacement of texture images.

A new method change_image has been added. It’s possible now to replace textures and cubemap bitmaps via API.

Batching based on a new clustering algorithm.

Batching, that is, the process of combining similar objects for performance reasons, is now based on a new clustering algorithm applied at export. This improves the whole batching process by making it "smarter" and more optimized in comparison with the old regular grid batching.

项目管理器改进。

To maintain naming consistency all command line options in project.py utility are now specified with - symbol instead of underscore, e.g --engine_type option has become --engine-type.

Added the new --assets-dest command property to project.py utility. This option allows users to specify a destination directory for storing assets in deployed projects.

New materials in Material Library

4 new materials have been added to the Pro SDK Material Library: Gold, Ribbed Glass, Silk and Velvet.

It’s possible now to use gamepads and controllers as input devices. New functions have been added to work with these devices. The first one is create_gamepad_btn_sensor. It handles gamepad buttons. The second one is create_gamepad_axes_sensor. It handles gamepad axes.

Now you can use global variables for sharing information between threads. This significantly expands the capabilities and allows to create more complex interactive applications.

Logic node JSON has been added. It allows to parse and encode complex JSON objects.

Logic node Get Timeline has been added. It allows to get current frame from NLA or global timeline.

Logic nodes Play Animation and Stop Animation have received environment animation mode.

New option UpdateMaterialAnimation for updating animated node shaders in viewport.

This option is useful for those who often use animated shader nodes. Just turn it on to see material animation in Blender viewport.

Separate Project Manager server from Blender addon.

Starting from this release it’s possible to run the Project Manager server as a standalone application using project_server.py script.
This eliminates the requirement to start Blender to be able to run the Project Manager.

Add title/description to all Blend4Web demos.

This simplifies searching our demos in Google and other search engines.

New modules have been added.

The first new mathematical module that was added is called math. For more
information, please take a look at the API doc.

The support for the node materials that can be used to set particle shading parameters with sequences of basic blocks (including the Particle Info node). This function is available for the particle systems with the Billboard rendering type.

The shader for particles with the Halo type rendering has been rewritten. The support for the Rings, Lines and StarTips parameters has been added. Maximum particle size limit (caused by the hardware limitations on some platforms) has been removed.

Maximum number of gradient control points limit in the Ramp procedural texture (used for coloring particles) has been removed.

Extended node material support.

Two new nodes, Vector Curves and RGB Curves, have been added.

The ColorRamp node support has been added. For now, this node supports Linear and Constant type interpolation.

The Particle Info node support has been added. For now, it is fully supported by the Emitter type particle systems with the Billboard rendering type.

项目管理器改进。

An option to export multiple projects into one archive.

This function makes updating the SDK and migrating projects from one workstation to another significantly easier.

New project deploying options.

Project deployment is required for uploading finished project to the server, sending them by mail and so on. Starting with the current release, project deployment can be performed directly from the Project Manager’s graphical interface. During deployment, projects are packed into a zip archive.

Also, starting with the current release, deployment is available for any type of project (including External type).

Improvements in the Web Player HTML and Web Player JSON type projects.

Now, during the creation of these projects, you can set the Web Player application parameters such as FPS counter, automatic camera rotation, turning off social network buttons and so on.

Also, projects of these types can now be created with a bundle option which means that all application resources will be located in the same directory.

Graphical interface improvements.

An option to add and show application icons has been added to make navigation easier and to give users a quick preview of an application in development.

An option to view project info. By clicking the [info] link located at the right side of the project name, a list of detailed information regarding the project can be accessed.

For convenience, the type of a project is now indicated by the prefix at the right side of the link: player: for Web Player HTML or Web Player JSON type projects, dev: for projects under development and build: for compiled (obfuscated) version of an application.

The elements of the Project Manager interface now have pop-up tips.

The possibility to animate environment settings.

The possibility to animate environment parameters located in the Sky (HorizonColor, ZenithColor), EnvironmentLighting (Energy), and Mist (Minimum, Start, Depth, Height, FogColor) tabs has been added. These functions are also available for the NLA animation.

The Animation tab has been added to Blender’s World panel. It has ApplyDefaultAnimation and Behavior parameters.

For all exported environments, WORLD type meta-object are added to the scenes. These objects can be used to control the animation of the environment settings. You can access these objects the same way you can access any standard object in the scene.

Changes in the naming rules for the files of the projects under development.

Now, the HTML files of the projects under development (located in the apps_dev directory) do not include the _dev suffix in their names. To distinguish these projects from the compiled ones, prefixes has been added to the Project Manager.

When you open the SDK main page, presence of the local development server is checked. If it starts from the local file system, an appropriate warning is shown.

Procedurally generated line rendering is now supported. Special type of object, activated by the Line Renderer option in blender, is provided for it, as well as several API functions: draw_line, get_line_params and set_line_params.

New logic editor nodes.

The TransformObject node can be used to move an object in world, parent or local coordinate space.

The StringOperation node can be used to perform operations with string constants and variables, like the MathOperation node.

Simplified SDK installation.

Now, to install SDK, you just need to specify the path to SDK in the File->Scripts section of the User Preferences panel.

WebPlayer application improvements.

An option to turn off social network buttons located in the bottom-right corner of a loaded scene. To do this, you need to specify the no_socialattribute before the application starts.

Escape characters in the Web Player’s address bar are now processed correctly.

Rendering quality improvements for Head-Mounted Displays (HMD).

Means to correct distortion and disable chromatic aberration while using Head-Mounted Displays have been added. Use set_hmd_params() function to set up these parameters.

Callback (create_callback_sensor() method) is a sensor whose value is defined by a callback function called every frame.

Resource converter utility improvements.

The –verbose and –jobs parameters have been added to the resource converter utilityconverter.py, which can be used to output detailed information and to set maximum number of the parallel processes during conversion, respectively.

Cubic reflection is now rendered from the object’s geometric center and not from its Blender origin point. Also, flat reflection is no longer rendered when rendering cubic reflection, which caused artifacts before.

For the local development server to work on Apple macOS and Blender 2.76, you may need to install Python 3.4. This is due to a bug in Blender https://developer.blender.org/T46623. This bug has been fixed in Blender 2.76b, so updating it is advised.

Support for shadows from multiple sources has been added. This feature can be used to greatly improve the realism of scenes lit by multiple light sources. Its functions and limitations are described in the documentation.

Experimental support for the head-mounted displays with the WebVR API has been added. For now, using this technology requires a web browser with WebVR support and an Oculus Rift device. More details in the documentation.

Aligning objects with the camera in the viewport.

The new Viewport Alignment option can be used to attach objects to the camera in the viewport. This feature can be used to create UI elements attached to the center, edge or corner of the screen. Unlike parent-child alignment, the position of an aligned object will automatically change when screen resolution or aspect ratio is changed.

To make the task of setting camera limits up simpler, the Displaylimitsinviewport option has been added to the Data panel of the camera object. When enabled, it will show the limits right in the Blender viewport. Default settings of the limits has also been changed.

Anaglyph rendering improvements.

New anaglyph rendering algorithm has been implemented. It has better color rendering. Also, plane of convergence of the left and right image for a TARGET type camera will now be calculated automatically based on a point around which the camera is rotated.

New logic editor nodes.

MoveTo: Can be used to move an object to another object.

ConsolePrint: Can be used to print various information (including variables values) to the web browser console.

A Stereo View button has been added to the Web Player.

Can be used to switch to the HMD mode (if the web browser supports this technology) or to anaglyph mode.

The option to choose an annotation of an object based on the canvas coordinates has been added.

The pick_object function now returns the object’s annotation, if the object is present in the sent coordinates.

A new method to initialize media resources for mobile devices has been added.

Before, forced canvas block was used as a workaround of the mobile browsers restriction of loading media resources (video and audio), and a user had to click a popup icon to start the application. Now, you can manually initialize media resources by using activate_media method. This function can be useful if the application already have elements that require user input, such as Start button, sound mute button and so on.

New sensor manifold type - CT_POSITIVE

The new CT_POSITIVE sensor manifold type activates event handler if the logic function result isn’t zero.

For the local development server to work on Apple macOS and Blender 2.76, you may need to install Python 3.4. This is due to a bug in Blender https://developer.blender.org/T46623. This bug has been fixed in Blender 2.76b, so updating it is advised.

New API features are automatically provided with compatible browser and hardware

New Logic Editor Features:

Camera animation.

The option to smoothly change camera’s position has been added to the MoveCamera node.

New: behavior animation.

The PlayAnimation node can now add Behavior animation to an object.

New StopAnimation node

Can be used to stop object’s animation

New StopSound node

Can be used to stop a speaker’s sound playback

New StopTimeline node

Can be used to stop NLA animation

MSAA support

This antialiasing algorithm is used in systems compatible with WebGL 2.0. For now, it allows the highest image quality on the ULTRA settings by using 16x MSAA algorithm.

Viewer interface improvements.

A Home button has been added. When pushed, it will open the basic scene specified in the application’s URL parameters, or, if there isn’t any, a placeholder scene with Blend4Web cubic logo will be opened.

The Reset button has been moved to the right side of the application’s upper panel and will now reset not only internal but also URL parameters (such as loaded basic scene) of the Viewer.

The AutoViewMode button used for automatic walkthrough of all scenes has been moved to the Tools&Debug panel.

High precision rendering performance measure mechanic.

Using the WebGL extension EXT_disjoint_timer_query allows high precision timers to be created, which can be used to measure the performance of GPU operations. With the activation of the debug mode in the Viewer (''HUD Info`` option in the Tools&Debug panel), the time (in milliseconds) the GPU needs to render part of the scene (subscene) is shown in the last column of the debug information.

Now the hide_object and show_object functions will, by default, change the visibility of an object and all its children. To change only the current object’s visibility, ignore_children parameter with true value should be sent.

The following method has been declared deprecated and will be removed in further releases: create_sep() (tsr module). tsr module’s set_sep() method should be used instead of it.

In the Viewer, PlayAll and StopAll buttons have been added for playing and stopping all animations, respectively.

Logic editor changes:

Select node and Select&PlayAnimation and Select&PlayTimeline nodes based on it, have been declared deprecated. As a replacement, using the combination of SwitchSelect, PlayAnimation and PlayTimeline nodes is recommended.

SDK examples, which were using aforementioned deprecated nodes, have been updated.

For the logic nodes behavior transparency, CyclicNLA option has been switched off.

Behavior of the HOVER camera in the absence of limits has been changed.

HOVER camera will now be hanging over pivot point at a fixed distance and fixed angle.

Glow effect changes.

Light sources will now influence glow effect, if Material or ExtendedMaterial nodes are present.

It is now possible to export/import projects. This simplifies updating projects to newer versions of the SDK and also allows users to run and debug projects on various platforms. You can also share your projects with other developers in an efficient way.

You can now create WebPlayerJSON and WebPlayerHTML projects. Such options allow you to create projects specifically for WebPlayer app which do not require writing any additional code.

To simplify navigation between your projects, two features have been added. The first one is the possibility to sort projects by name, and the second one is the possibility to show/hide SDK’s stock projects.

It is now possible to remove projects from the SDK.

Improved Windows support. We now provide a Windows version of Java with the SDK, so you are no longer required to install any additional dependencies in order to build projects.

Anti-aliasing improvements.

A new option AAQuality has been added to the Render>Anti-Aliasing panel in Blender. This option allows you to select quality level of anti-aliasing. Also, the anti-aliasing algorithm is now based on FXAA 3.11, which increases both quality and performance especially for HIGH and ULTRA quality profiles.

Node Logic Editor improvements.

MoveCamera node.

Allows you to specify the camera’s location and target.

PlaySound node.

Allows you to play back sound from a selected speaker.

SwitchSelect node.

This node works the same way as Select but allows you to select multiple objects in more flexible and convenient way.

Support for random numbers generation has been added to the MathOperation node.

Support for POST requests in the SendRequest node.

Repeat mapping type for non-power-of-two textures is now supported.

Repeat mapping type is now supported for non-power-of-two textures (i.e. textures whose dimensions are not 256, 512, 1024, etc). Also the mipmapping technique (trilinear filtering) is also supported for such textures.

Automatic rescaling of textures is now performed if their dimensions exceed platform limits.

In the cases when texture dimensions exceed platform limits, textures will be automatically downscaled. The only exception is compressed textures.

New button FastPreview to perform fast scene previews.

The button is located on the Render>DevelopmentServer panel.

Support for Intensity and Color animation of lamp objects.

It is now possible to animate intensity and color of lamp objects, both when using conventional and NLA animation.

Improved UI, added DevelopmentServer>ProjectManager button to run the Project Manager in the default browser.

Speakers functioning has been improved.

The is_play() method now correctly notifies about finishing sound playback, with a minimal delay.

Some new export warnings have been added.

Upon exporting some objects, their type will be changed to EMPTY in case of empty geometry or in the case when the sound file for the SPEAKER object does not exist. Messages on such facts are now displayed in the browser console.

automatically reexport all application scenes including json and html files

There are two methods to manage projects: by using project.py utility which has a simple self-documented command line interface, or using a GUI web application, which is run on the developer server. This server does not require any additional configuration and as before is executed by the OpenSDK button in Blender.

The project management system works on all operating systems, however, some operations may require additional dependencies. To find out more about the configuration of this system check out the following topic in documentation.

Controlling armature bones.

Enhanced features to control armature objects.

Added a new armature module which includes methods to get or assign bone positions both in armature coordinate space (get_bone_tsr(), set_bone_tsr()) and in bone-relative coordinate space (get_bone_tsr_rel(), set_bone_tsr_rel()). By using these methods, it’s possible to program armature behavior. For example, animate interactive characters or create sophisticated armature-based objects with multiple moving parts.

Support for COPY_TRANSFORMS constraints on bones. This allows bones to follow movements of any objects located on the scene, e.g create physically simulated "Ragdoll" objects.

New logic editor nodes.

Play Animation: play animation of an object.

Send Request: send HTTP GET request to a server and parse its response.

Inherit Material: copy material properties from one object to another.

Set Shader Node Param: change outputs of Value and RGB shader nodes.

Delay: delay program execution for a given amount of time.

Apply Shape Key: change shape key value for an object.

Outline: control object outlining effect.

New AllowNLA settings for video textures, which enables/disables NLA-animation for a given texture.

The get_object_by_dupli_name_list method now returns null, if the name_list parameter is given incorrectly. The get_object_name_hierarchy method for receiving the full list of names with respect to object duplication was added. The value returned by this method is a valid input for the get_object_by_dupli_name_list function.

This new logic editor allows to add interactivity to your apps more easily by using a tree of connected nodes. The NLA Script tool which was previously used for this purpose has been removed, the old scripts are automatically converted to the newer format during blend file loading.

Support for various shading models inside MATERIAL and MATERIAL_EXT nodes.

Now the diffuse and specular shading models are selected based on materials inside such nodes. This is different from the previous behavior when the shading was the same for all nodes and was assigned by node material itself. This feature allows mixing different basic materials (non-textured) inside node-based ones.

Support for OS Windows in resource converter. Now Windows users can create cross-browser applications which use media resources in different formats. Also the application builder app can also be run in Windows.

Support for the Microsoft Edge browser.

Support for physics simulation in the main (non-worker) browser process.

This feature is useful for eliminating delays in physics calculations in some mobile browsers. Earlier, all simulations took place in separate Worker threads. The feature is controlled by physics_use_worker parameter of the engine’s initialization.

Support for bounding box recalculation.

A new method update_boundings() has been added to the objects module. This method performs recalculations of the object’s boundings such as box, sphere, ellipsoid, cylinder, cone and capsule.

Documentation improvements.

A new theme has been selected for the user manual. This theme improves documentation readability on displays with different screen resolutions.

It is now possible to specify a transparency mask for AlphaClip materials using node logic.

Support for soft particles.

The new property SoftParticles has been added to the Render panel of the Emitter particle system. When activated, this property renders smooth edges near opaque objects located on the scene. This effect is available only for materials with AlphaSort, AlphaBlend or Add type of transparency.

New preprocessor for shader instructions.

This new preprocessor has more straightforward architecture and works faster, which, in turn, greatly reduces overall scene loading time, especially in cases with many different shaders.

Improved Viewer app performance.

Performance problems caused by event handling in jQuery Mobile library have been fixed.

Zero level property for HOVER cameras.

This property represents a Z coordinate of the reference plane in which the camera’s pivot point is located.

New sensor manifold type: CT_CHANGE.

Along with CT_CONTINOUS, CT_TRIGGER, CT_SHOT and CT_LEVEL manifold types the new CT_CHANGE type can now be used. This type allows to execute a manifold’s callback right after any of the sensors' values in the manifold has been changed.

It is now possible to omit specifying the reflection normal by leaving the ReflectionPlane option empty. In this case, local Z axis will be used instead.

New SSAO behavior.

Now there is no need to have shadow casters in the scene to use the SSAO effect.

New texture anisotropic filtering settings.

There is a new Default value for anisotropic filtering option assigned to textures. By selecting this value you can use the anisotropic filtering specified on the scene. If you need to disable anisotropic filtering on all textures, again, use the setting from the scene.

New specular alpha shading behavior to match Blender’s.

The physics mask/group, assigned for collision materials, has been extended from 8 to 16 bits.

Please update your Chrome browser to Beta or wait until the next Chrome update.

Fixed issues with the BackgroundMusic speakers in the scenes exported to html.

Currently, there is a bug in Google Chrome (Issue 511251), related to an error with audio file origin. Currently, this issue is partially resolved by our workaround with forced crossOrigin attribute on audio sources.

Changed texture filtering on some platforms.

An incorrect texture filtering was disabled on iPad and Internet Explorer for materials with Alpha Clip type of transparency.

Add-on interface has been redesigned. It is now activated by the new rendering profile, Blend4Web, which only contains panels and options explicitly supported by the engine. To simplify navigation, the old multi-line Blend4Web panels have been re-grouped into the smaller ones, based on functionality.

Also, there is a new feature to automatically assign graphic effects required for a scene. In particular, shadows, refraction, Glow and Outline effects acquired the new AUTO property which automatically activates them if some objects or materials located on the scene require such effects.

New normal editor.

The normal editor has been substantially upgraded. Now it is fully compatible with the native Blender datablock used to store normals. This new editor has more efficient UI and also allows to edit split normals.

Support for new material nodes.

Orco and Local outputs of Geometry node are now supported. There are also some preliminary steps to support RGB Curves, Vector Curves, ColorRamp and Cycles nodes.

New shading models.

Minnaert/Toon diffuse shaders and Blinn specular shader have been implemented. Thus, starting from this release the engine supports all shading models of Blender.

Support for Blender 2.75

Multiple physics improvements.

Code for collision detection has been rewritten. Now it is possible to determine colliding objects, and also the coordinates and the normal at the collision point.

Improved ray casting API. In particular, one can specify an option to perform an automatic cleanup of the ray test object and also another option to cast a ray through multiple objects. As in the case of collision detection, this new API allows to determine the target object and the position/normal of the hit point. There is also a new possibility to cast rays from point to point in global space, without requirement to specify a source object.

Extended possibilities of Collision and Ray sensors.

Support for deleting physics objects and automatic recalculation of collision/ray tests after physics objects have been added/removed.

A new tool for reexporting multiple scenes.

A new Mass Reexporter tool has been added to addon. This tool allows to automatically reexport all scenes from the specified list of directories.

Possibility to check for updates.

You can now enable a CheckforUpdatesonStartup option in addon settings to perform automatic checks for the new versions of Blend4Web.

API to control Motion Blur postprocessing effect.

New methods to control Motion Blur effect get_mb_params() and set_mb_params() has been added to scenes.js module.

Support for Timeline markers.

To extract frame numbers from timeline markers a new method marker_frame() has been implemented in scenes.js module.

New NLA APIs.

A new set of methods: set_range(), reset_range(), set_cyclic() and clear_callback() has been added to nla.js module. Also, it’s now possible to specify callback in play() method.

New API to change Canvas resolution.

To change Canvas resolution it’s sufficient to execute method set() from config.js module with the following parameters: canvas_resolution_factor and value, where value is the new resolution of Canvas. This feature is particularly useful for creating high-definition screenshots.

Support for VertexGroups->Length option in Hair particle system.

New API documentation.

To document types used by Blend4Web applications we developed a new formal type system. For example, in our old API docs 3D vectors had Float32Array type. Now they have formal Vec3 type. This solution allows us to formulate more clear and intelligible descriptions for API and, more importantly, helps our users to develop more readable and reliable applications.

New colors API.

To work with colors in efficient way two new modules: rgb and rgba have been created. They include APIs to create new color vectors and convert them between different profiles.

Automatic determination of path to SDK.

Addon option Blend4WebSDKDirectory is filled up automatically, if the addon is located in default blender_scripts directory inside SDK.

Details about calculation and use cases of such coordinates are described in the separate topic.

To support this feature the following methods have been added to engine’s APIs: client_to_canvas_coords(), set_canvas_offsets(), update_canvas_offsets() and force_offsets_updating(). Also, there is a new configuration option: track_container_position.

API to change smooth factors of the camera’s movement.

To change smooth factors of the camera’s movement the following APIs have been implemented: set_plock_smooth_factor() and get_plock_smooth_factor() in mouse.js module (for Pointer Lock mode) and also set_camera_smooth_factor() and get_camera_smooth_factor() in app.js addon (for general use cases).

Methods append_collision_test() and append_ray_test(), as well as create_collision_sensor() and create_ray_sensor() now have new spec, which is incompatible with the previous versions of Blend4Web engine. All developers should consider upgrading their applications to match this new behavior.

Rendering to texture changes.

It’s now possible to render scene into texture cyclically, e.g. when two scenes render one into another. The main constraint here is the requirement to have at least one scene, into which is nothing is being rendered.

The option ApplyDefaultAnimation is now disabled if an object already have an NLA animation attached.

In cases when the object already have an NLA animation attached, the option ApplyDefaultAnimation is disabled to eliminate possible animation conflicts.

Changed Hemi lamp behavior.

If the object is being illuminated by the Hemi lamp, the Lambert shading model will always be applied to its materials. This is done to match the Blender’s behavior.

Support for exported-to-HTML video textures in Firefox browser.

Since Firefox 38 an error with video textures exported to base64 was fixed, so it’s now possible to use them in such browsers.

Supported an effect which occurs when the light scatters in the atmosphere and inside of the human eye and looks like a halo around glowing objects.

The local development server runs automatically.

A new option has been added to the addon settings. This option turns on automatic start of local development server upon opening Blender. With the help of this functional web applications in development can be run without any preparations.

Cube reflections.

Apart from plane reflections, there are now cube reflections available. There is a new ReflectionType option available when Reflective flag is set on the object. Setting it to Cube turns this feature on.

More NLA options supported.

Added support of Blender’s NLA tools: Scale, Muted, Reversed and Repeat. The support of these tools broadens capabilities of interactive scene developers.

Furthermore, to control NLA through API a new nla.js module was added. This module contains methods like play(), stop(), get_frame(), set_frame() that can play/stop NLA and get/set the current frame. New methods have been involved in implementing control panel interface in the Viewer app.

In node materials, the engine now correctly processes connections between inputs and outputs of different types.

It is now possible to connect outputs of one type with inputs of another type (Non-critical error). Now Blender’s native behavior is supported by the engine.

For Hair particles the options on the Rotation panel are now supported.

Now the engine fully supports the state of particles set in Blender. In particular not only location and scale are supported now, but rotation as well.

Some demos for postprocessing effects demonstration were added.

Examples were prepared for the following effects: Bloom, Depth of Field, God Rays, Motion Blur and SSAO.

Added a new module container.js.

DOM tree elements can be added with a specific depth relative to the depth of the canvas element with the help of container.js’s insert_to_container() method. This method replaces CSS property z-index because location depth of elements is now determined by their position in the container element.

Improvements in the physical engine.

Margin property of physical elements and materials is now supported. This option allows for improved stability of object collision simulation. Bullet engine was updated to version 2.83.

API for changing camera controls mode.

Added methods of changing movement style of the camera. The control mode switch example can be found in Code Snippets app in the "Camera Move Styles" section. Also has been added set_hover_pivot() method. This method allows to shift the control point of HOVER camera.

Previously, gestures usage (Windows Touch Gestures) was leading to unnecessary HTML-elements scaling and movement on such configurations. It is expected that correct gestures' behavior will be supported in further browser releases.

Vertex animation with animated armature bake error was fixed.

The error with rendering billboard objects on the iPad has been fixed.

Added support for object’s Morph targets (known as Shape Keys in Blender). To apply such keys, use the set_shape_key_value method of the geometry.js module. Simple example of how to use such functionality is given in the Code Snippets app.

Support for Horizon Color and Zenith Color background settings.

It’s now possible to tweak scene background by using the HorizonColor and ZenithColor properties as well as the PaperSky, BlendSky and RealSky options directly from Blender.

Support for the Gamma node.

We have implemented the Gamma node back in Blender v2.74. Now this node is finally supported by Blend4Web.

Various improvements in the Anchors tool.

It’s now possible to limit the pixel size of an annotation. Added support for dynamic loading/unloading of Anchors. Implemented the possibility to hide and show Anchors by using the show()/hide() API functions and/or by the NLA Script tool.

To save the load time, the physics modules are now loaded only when explicitly required. Overall size of the modules has been decreased by 20%.

Extended tools for physics debugging.

The new physics_stat() method has been added to the debug module. This method returns physics statistics such as the number of physics objects (separated by type), amount of geometry and other info. It is now also possible to display the number of physics iterations per second aka Physics FPS (activated in the config module).

The new API method to attach objects to the camera independently from the camera’s aspect ratio or the field of view.

Implemented in the append_stiff_viewport() method of the constraints module.

The new module to perform transformations: "tsr.js".

This new module makes it possible to apply a variety of transformations to objects by using versatile TSR vectors. Each TSR vector combines translation, scale and rotation (hence the name). These vectors may be used instead of matrices as a more convenient and effective way to apply transformations.

The possibility to exclude any directories from being converted by the resource converter.

To exclude some directory from being converted by the resource converter, it is enough to place a file named .b4w_no_conv to this directory.

The API documentation has changed its appearance. Links for quick access to methods and properties were added.

Skeletal animation now takes into account the relative translation of an armature and a skinned object.

Native Blender’s behavior is now supported. There is now no need to position an armature and an animated object in the same place and with the same rotation and scale.

Independent translation, rotation and scale animations are now supported.

The animation system no more forces keyframes to be present in every channel, which makes it possible to save original values in unused channels or change them with API.

World background support.

Background and sky can be enabled with the SkySettings>RenderSky option under the World tab. It is turned off by default.

The Uranium physics engine now consists of two modules.

There are now two physics modules instead of one: uranium.js - the engine’s code and uranium.js.mem - the file for memory initialization. Both modules must be placed in the same directory.

The glow effect together with its related components was renamed to Outline.

The new name better describes the principle of this effect: highlighting objects' edges.

Limiting the camera translation using the "append_semi_stiff_cam" method of the "constraints.js" module is now possible only for the "EYE" type.

Local Development Server in Blender changes.

Now, instead of the standard Python SimpleHTTPServer, the Tornado web server is used as the local development server. The new server has greater performance and it also offers more options to disable browser cache.

Keyboard controls for sliders in the Viewer application were added.

You can now control sliders with < and > keys.

Changes in the "update_object_animation" method of the "animation.js" module.

The optional "force_update" parameter was added. It forces animated objects to be updated even when their animation is not being played back.

API changes in the mouse.js module.

The enable_mouse_hover_outline and disable_mouse_hover_outline methods were added.

The following methods were declared deprecated and will be removed in the next releases: enable_mouse_hover_glow and disable_mouse_hover_glow.

The following methods were declared deprecated and will be removed in the next releases: set_glow_intensity, get_glow_intensity, apply_glow_anim, apply_glow_anim_def, clear_glow_anim, set_glow_color and get_glow_color.

Some settings were changed in the Object > Blend4Web panel.

The Enable Outline option was added to enable using the outline effect on the given object. Also, the Outline on Select option was added to activate glow animation when the object is selected (previously this behavior was defined by the Selectable flag).

New settings were added to the Scene > Blend4Web panel.

The Enable Object Outlining option was added to control the overall possibility of outlining. Similarly, the new Enable Object Selectable option controls the overall possibility of objects' selection.

Fixed a bug in the "anchors.js" module which caused objects' descriptions to disappear.

Fixed a bug in the Animation Baker script that occurred when there were armature objects in hidden layers.

Fixed the camera’s behavior while using "append_semi_stiff_cam" method of the "constraints.js" module.

Fixed correction of the camera’s vertical axis relative to the parent object. Also the original camera orientation is now being taken into account. This can require some adjustments of the camera’s rotation limits that are passed to this function.

Fixed a bug with reloading of the playlist when it was empty.

Fixed the buggy behavior of physical objects that occurred after deleting at least one of them from the scene.

Fixed a bug that occurred when there were zero-scaled objects instanced through DupliGroups.

Fixed a compilation error of the water shader occurred on Windows and some mobile devices.

Fixed a bug that occurred when there were duplicates of animation keyframes.

Actions from different files sharing one name can be now used for NLA animation.

Fixed duplication of event listeners that occurred when the "pointerlock" function was repeatedly called.

Now it is possible to assign anchors to empty objects. These anchors can be of three different types: "Annotations" - information from object’s meta-tags is used, "Custom Element" - a custom HTML-element from the current web-page can be used as annotation, "Generic" - an invisible anchor with coordinates calculated using anchors.js module API.

Animation and API methods for Value and RGB nodes in node materials.

Now it is possible to animate not only Value nodes but also RGB nodes. Also, the corresponding API methods for changing such nodes were added in the objects.js module.

New "Code Snippets" application.

This application was created to simplify access to the examples of engine’s functionality. It is also possible to look at the examples' scripts. This application can be launched from the index.html file located in the Blend4Web SDK’s root directory.

New control functions for the Glow effect.

New APIs were added in the scenes module: get_glow_intensity() and get_glow_color().

Improvements in the Scene Viewer.

Design of the "Home" button was changed. A new button "All objects selectable" was added. It allows to turn off automatic "Selectable" option assignment for all scene objects. Also, it is now possible to see the total number of shaders on the loaded scene.

Dynamic copying of scene objects (instancing).

Now it is possible to dynamically copy and remove scene objects (to create and remove instances).

There are now new options in the application builder: -j and -c. They add scripts and styles correspondingly to the exceptions in order to be not compiled.

Experimental Blend4Web render engine.

It can be turned on in the addon settings using the "Register Blend4Web render engine (Experimental)" flag. This mode is designed to simplify customization of scene properties. Also, it simplifies the interface by removing unsupported panels. At the moment, it is not possible to edit shader node tree in the Blend4Web render mode.

Setting camera movement limits via API now perfectly corresponds to values measured in the engine’s coordinate system. Setting horizontal limits for the TARGET camera in the Blender’s world space has been changed. Thus, it may require changeovers for old scenes.

Documentation update for the camera settings.

Horizontal and vertical limits of the camera rotation are completely independent from each other.

The following methods were declared as deprecated and will be removed in the next releases: rotate_pivot, rotate_hover_cam, rotate, set_eye_params, get_angles, translate_hover_cam_v, set_hover_cam_angle.

The set_ortho_scale and get_ortho_scale methods now print error message when they are applied to the Orthographic camera. The behavior of the get_hover_angle_limits method was also changed. This method now returns angle limits for the HOVER camera in the [down, up] format instead of [up, down] as it was before.

The lighting system was significantly optimized.

Many of the lamp props are calculated at the compile time now. Now, there is no 4 lamp restriction is imposed for some mobile devices.

The HTML layout method was changed for apps using the app module.

Now, upon initializing an application using the app.js module, the dimensions of the created <canvas> element are completely determined by the size of the container element. Thus, if a <div> element is used as a container, the size of <canvas> will be zero by default since div’s default size is zero. You can set correct parameters for the container with CSS and inline-style. Also, you have to use resize_to_container() method from the app module when the container is changed. The same effect may be achieved if the autoresize option is set upon initializing the application (in the app.init() function). The low level method for changing the element’s dimensions with main.resize() function is still supported.

Now, the enable_controls() function from the app module should be called without any parameters.

Fixed an error related to the determination of the camera’s angular coordinates in some positions.

Fixed an error with camera autorotation if the horizontal limits are enabled.

Fixed an error when Blend4Web-specific nodes were being added multiple times to a .blend file.

Fixed a bug with replacing materials by using the "inherit_material" function from the "material.js" module.

Fixed an error occurred while rendering reflections on an object which has been changed through the "material.js" module APIs.

Fixed generation of the debugging wireframe spheres.

Fixed optimization of the TEXTURE nodes in node materials.

Fixed "Clamp" option behavior in the MixRGB (Linear Light) node.

Fixed an export error occurred when an object shares its mesh with another object and one of the following flags is set to true: "Apply Scale", "Apply Modifiers", "Export Vertex Animation" or "Export Edited Normals".

Fixed an error with "Blend4Web > Preserve Global Orientation and Scale" option on some mobile devices.

Fixed fog rendering error in some versions of Chrome/Firefox under Windows.

Now it is possible to add options with the same names via browser address bar.

A new optional parameter allow_param_array is added to get_url_params() function of app module. It is set to false by default. Setting this parameter to true leads to a merge of identical functions into a massive, other way the last one will be used.

Improved ``Background Music`` speaker.

Now the user can specify parameters of delay and playback time.

Blend-file now includes special Blend4Web nodes by default.

Now there’s no need to add Blend4Web special nodes into a file. It is available in both SDK and addon versions of Blend4Web.

Changed export of empty "Mesh" objects.

Now Mesh objects without polygons are exported as Empty.

Changes in the "light.js" module.

Added function get_light_type; functions get_light_params and set_light_params now get object LAMP instead of objects name. Also the user now can change spot_blend, spot_size and distance properties of the SPOT light source through those functions.

Improved refractions on LOW quality settings.

New simplified (without distortion) refraction model is now used when LOW quality is chosen.

Shader nodes optimization.

Now automatic camera rotation can be turned off by touching touch screen.

Panning is performed by swiping two fingers on the surface of the screen.

Support for "Text" objects.

These objects are now automatically converted to meshes during export.

Extended support for the NLA Script tool.

Added new logic slots: ShowObject and HideObject used for hiding and showing the objects, PageRedirect - for redirecting to other webpages , PageParam - for storing any webpage parameter in given numerical register. Simplified usage of Select&Jump and Select&Play slots. Now it’s not required to specify Selectable property on selectable objects.

Support for high definition displays (HIDPI, Retina).

The HIDPI mode allows to achieve considerable improvement of picture quality on devices with high resolution. This mode is activated automatically upon application startup if ULTRA quality profile has been selected. If necessary, high resolution can be turned on for other quality profiles.

Support orthographic camera scaling.

An API to change the Orthographic camera scale has been added (Orthographicscale in Blender).

"autorotate" option has been added to the webplayer.

The option autorotate is used to turn on the automatic camera rotation as soon as the scene loads.

Simplified keyboard control mode has been added to function "enable_camera_controls.

The mode is enabled by passing the optional parameter disable_letter_controls Thus, the keyboard controls with letter keys (WASD and so on) will be turned off. This feature can be used in cases when you need to use the letter keys for purposes other than moving the camera.

Support for gyroscope on mobile devices.

To work with gyroscope on mobile devices the two sensors was implemented. The first sensor allows to operate with current device position compared with the previous one (position delta). It’s created by using the function create_gyro_delta_sensor from "controls.js" module. The second sensor returns current device angle and created by create_gyro_angles_sensor from "controls.js" module. It’s worth to mention that all angles are given in radians. Also the special addon "gyroscope.js" was created. This addon implements simple camera movements due to device rotation. You can find an example of using such feature in our Viewer application by selecting the "Gyroscope" menu option.

New ``Do not Render`` property has been added to material settings.

Enabling the property allows to hide parts of the scene objects which use such material.

Support for video-textures on IE 11 and iPhone.

The support is achieved by creating a new video-sequence format, *.seq. For more info check the following topic in documentation.

Support for "title" tag in Web Player.

The Web Player’s title (shown as web browser header) is now extracted from JSON file of the loaded scene. For more info about this feature check the following topic in documentation.

Support for meta tags in Blender.

It’s now possible to append meta tag information to scenes and objects in Blender. Possible tags for scenes are "title" and "description". Possible tags for objects are "title", "description" and "category".

Added support for execution of user-defined functions every frame.

To help users to create sophisticated application the new function append_loop_cb has been added to "main.js" module. This function allows to execute given callback every frame. This callback has two parameters: time since the application start and time delta between current and previous frame. Both parameters are in seconds. To cancel the callback execution every frame you should remove it by using the remove_loop_cb function from the module "main.js".

Added support for simple preloader screen animation.

To create an application with animated preloader pass an option "preloader_fadeout" with the value "true" to the function create_simple_preloader from "preloader.js" module.

Added support to export converted media files to HTML file.

Now then you export HTML files it’s possible to store converted files in them. To do so you need to enable "Export Converted Media" option in the export options.

Added support for using min50 and dds textures in Web Player.

To enable this feature pass "compressed_textures" parameter to Web Player.

The external directory was removed, all its content was moved to the upper level - in the root directory of the SDK. The file with the list of the scenes used by the Viewer application is now located in apps_dev/viewer directory.

Changed camera autorotation behavior (experimental).

If the camera limits are present, the camera smoothly slows down when approaching the limits, then moves in the opposite direction.

The usage of ``Special: Collision`` property was changed.

Earlier, enabling the option automatically resulted in objects' hiding. Now, to do the same thing, you have to specify DonotRender property in the material settings.

Changed suffix for converted media files.

Old *.lossconv.* suffix was replaced by *.altconv.*.

Behavior of "Do not render" object property was changed.

Now, when the option is activated, an object’s physics is not disabled. The object simply becomes invisible.

Improved the SDK structure.

Free and Pro SDK now come with the new and more polished examples; old and arid examples were dropped.

It’s strongly advised to restart Blender after installing a newer version of Addon/SDK.

Video textures do not work in Firefox for scenes exported as HTML files.

Slow and unstable rendering of depth textures in Firefox 35.

In various scenes the FPS is degraded when shadows are turned on. There is also an incorrect rendering of transparent materials. The issue is reported here and is to be fixed in the future browser updates.

Now camera movement velocity can be set up, including translation, rotation and zooming. Velocity for all camera types (Target, Hover, Eye) can be tweaked both using Blender UI and through Blend4Web API.

Now all Vectortype options available for the MAPPING node are supported, including Texture, Point, Vector and Normal.

Glow on mouse over.

API in the mouse.js module were created for the effect of outlining the objects under the mouse pointer. Also, for purposes of controlling this effect, enable_mouse_hover_glow() and disable_mouse_hover_glow() methods were added. The objects should have Object>Blend4Web>Selectable checkbox enabled.

A brand new app building system.

Now, the users can develop their apps right in the SDK thanks to the new project.py utility. This script makes it possible to build the apps together with the engine, to minify JavaScript and CSS files and to export the final apps to be deployed on a server.

Frame rate for animation and video textures can now be changed through the Scene>Dimensions>Framerate option.

Canvas textures support.

A canvas HTML element can be now used as a texture. The workflow is described in the manual.

Camera panning.

In the mode when the camera is rotating around a single point (Target) the users now have the ability to move the pivot point within the view plane (so called camera panning) while the right or middle mouse buttons are pressed. This function is turned on by default and can be turned off in Blender settings at need.

New camera control mode - Hover.

The Hover mode is now available when the camera is gliding over the horizontal plane (including zooming in and out). This camera mode makes it possible to realize scenarios for a convenient viewing of scenes which are spread in two dimensions (rooms, game levels).

The SDK now contains a root index HTML webpage for simplifying navigation within the distribution.

The resource converter now has the ability to convert videos.

We have added a build system which was absent in previous public SDK distributions.

The export Strict mode is implemented in the add-on.

Activating Strictmode gives the possibility to display all possible errors and warnings connected with incorrect scene settings. The option is useful for final scene debugging for getting the most correct and optimized resource files.

The new minimalistic Web Player design blends perfectly with any 3D scenes. It has a simplified user interface and build-in help. The Web Player works on all devices including mobile ones.

Improved shadows.

It’s now possible to choose a non-cascaded shadow model, based on a single optimized shadow map. Such model is easier to configure and suits well for relatively small scenes. For more info see the docs.

Many NLA system improvements.

It’s now possible to create a complex logic using the ConditionalJump, RegisterStore, MathOperation NLA Script logic blocks and register-stored variables.

It’s now possible to use all types of supported animations in the NLA, including sound playback, vertex animation and particle emission. It’s now possible to play different animation types simultaneously.

Supported objects billboarding.

The objects received the new set of options, allowing to configure billboarding.

The "XYZ Euler" mode is supported for animating rotations.

Object and skeletal animations now support the XYZEuler mode for rotations.

Support for the GENERATED texture coordinates.

Support for Cross-origin resource sharing (CORS).

Scene export process simplified.

The range of material export errors are now not blocking the export. Instead, this material will be highlighted pink at scene loading. Detailed error descriptions can be found in the manual.

It’s now needed to set the SDK path setting for HTML export to SDK root directory. Earlier it was required to provide the full path to embed application. Pay attention, the old behavior is not supported anymore.

The rendering result for a certain stage can be now output above the main picture. This can be set up in the config.js module through the debug_subs options.

The logic for controlling Blender’s NLA animation using a visual editor has been implemented.

The NLA Script tool has been added to Blender’s interface to allow the implementing of simple scenarios using visual blocks, for example playing an animation in response to the user actions.

Multiple sensor system improvements.

It is now permitted to register sensor manifolds globally using a controls module method with no connection to any object. To do this null should be passed into the corresponding API. The sensor logic is processed in a more predictable and robust way according to the sequence in which their manifolds are created. Callbacks of the user action events are now assigned using the register_<input_type>_events() functions. To these functions it is now possible to pass the prevent_default flag which allows to unblock the standard browser behavior for the corresponding events.

The Web Player now supports physics.

Works only in the Web Player version where JSON files are loaded separately. Physics still not supported in the single HTML files.

Skeletal animation mixing is now supported.

The animation.js module now contains API for smooth transitions between skeletal animations: get_skel_mix_factor() - for getting the current mixing factor value and set_skel_mix_factor() - for setting it.

The Value node can now be animated in node materials.

The functionality is similar to other animation types. Working in NLA is also supported.

Diffuse and Specular lamp’s properties are now supported.

The possibility to render a transparent object above other objects on the scene.

Activated with the Renderaboveall checkbox for transparent materials (i.e. not Opaque).

Scale is applied automatically to the object mesh.

Activated by enabling the Applyscale checkbox in the object settings.

High quality profile (including shadows, dynamic reflections and anti-aliasing) has been implemented for iOS.

Shadow rendering system is significantly changed: it is now based on the StableCascadedShadowMaps technique. This technique allows to greatly diminish the flickering of shadow edges when the camera moves. Smoothing is implemented between cascades. Also shadows of the last cascade fade out at distancing. Softened shadows are rendered using the PercentageCloserShadows technique. The shadows' user settings are reworked and simplified. Now its possible to tweak the size of shadow maps, blur ratio and the setting for removing self-shadowing artifacts. The new settings are documented in detail.

In the Web Player graphics quality settings are now saved independently for each scene.

The behavior of the app configuration parameters has been changed: physics_uranium_path, smaa_search_texture_path and smaa_area_texture_path.

These parameters are now calculated automatically depending on the running HTML files location, if they haven’t been overridden during the app’s initialization.

Transition is completed to the system of modules which are linked via b4w.require() call.

This also means that starting form the current version its impossible to call modules in the engine’s release version using the old b4w.<module> namespaces. For compatibility purposes the ns_compat.js add-on has been implemented, the linking of which allows to restore the old behavior.

The Web Player’s control panel can now be hidden.

Skeletal animation is now applied to armature objects only.

There is no need to apply skeletal animation to MESH objects. If they are linked to some animated armature, their skinning will be automatic.

Demos and tutorials are updated according to the newly implemented features.