Creating radio buttons in the Blender add-ons interface

State switches so-called “radio buttons” are used in the case to limit the choice by one value from several available ones. There are a lot of such buttons in the Blender interface, for example, switching between RGB and BW rendering modes or setting the texture mapping mode. Such buttons can be created in the Blender add-ons interface too.

Let’s create our own radio button switcher.

Continue reading “Creating radio buttons in the Blender add-ons interface”

How to programmatically check if the operator is registered in Blender API

Single add-on or script can contain several different operators, and not all of them may be registered in the API by the register() function. To verify that the required operator is registered in the Blender API, run the following command:


_operator_bl_idname_ – the text value of the bl_idname operator property.

For example for an operator:

the command will look like this:


How to programmatically check if the Blender add-on is registered

To start working every Blender add-on must be registered by setting up the checkbox before add-on name in the User Preferences window – Add-ons page.

To programmatically find out if the required add-on is registered, run the following command:


add-on_name – the name of the add-on file (without the .py extension) or the name of the add-on package, if it was installed from the package.

Debugging multifile Blender add-on by quick reinstall

It is convenient to use the following system for debugging developing multi-file Blender add-ons. But it has one drawback: modules imported in file becomes available only after the file running (after the execution of the register() function). This means that any access to the imported modules before they are registered will cause an error. This is not critical in most cases, but it will cause a problem if, for example, in one imported module is used inheritance from the class, described in the other imported module, because the classes descriptions are processed before the add-on registration.

To get more freedom working with imported modules, we can use another way to debug the add-on – do not run the add-on directly from the development directory, but install it in Blender and check its “live” work. However, manual add-on reinstallation requires a set of routine actions, which complicates such sort of debugging. This issue can be solved by reinstalling the add-on in automatic mode.

Continue reading “Debugging multifile Blender add-on by quick reinstall”

Testing my add-ons in Blender 2.79

I tested the functionality of my add-ons in new Blender 2.79.

  • BIS – Fully functional. The new Principled BSDF shader supported.
  • PartitionRender – Some code correction made. Add-on needs to reinstall. Fully function after reinstallation.
  • Wire – Fully functional.
  • Accurate Render Border – Fully functional.

Add-ons remains compatible with Blender 2.78.

Creating pop-up panels with user UI in Blender add-on

In addition to common panels (N/T/Properties) and their sub-panels, to display the user interface elements while developing Blender add-ons you can also use pop-up panels appearing on the screen when a user presses a certain key combination or perform any action. The simplest example of such panels is the panel that appears when the f6 key is pressed immediately after adding an object (shift+a) to the scene.

Blender API provides developers the ability to create such panels for their add-ons. Let’s consider the creating of a pop-up panel as an example of the “Message box” window.

Continue reading “Creating pop-up panels with user UI in Blender add-on”

BIS v.1.0.0 – Release

BIS (Blender Interplanety Storage) add-on release.

Finally, I finished it. It’s release now!


Continue reading “BIS v.1.0.0 – Release”

BIS add-on v.0.0.3

BIS (Blender Interplanety Storage) add-on intermediate update to v.0.0.3

The addon is almost in the prerelease state.

  • All Cycles nodes are supported, including script and nested groups.
  • Also added the ability to save scripts/texts from the Text Editor.

To make a release, it was left to clean up a bit the server (site) side – increase the previews size, add tags and node names editing, make a separate list for saved texts. And also test the add-on with complex materials.


Active objects access

How to access the active (selected) objects through the Blender Python API from scripts/add-ons:

  1. The active window (in which current action occurs):

  1. The active scene:

  1. The active (selected) mesh:

  1. The active (selected) material node (in the NODE_EDITOR window):

  1. The current text in TEXT_EDITOR window:

  1. The active (selected) UV-Map:

  1. Current page in the User Preferences window:


BIS development. Is it necessary?

Blender Interplanety Storage (BIS) add-on is still under development, but I decided to open early access to it.

This add-on is the first, which I planned to do at least somehow commercially justified. Is it really possible to write a commercial add-on for Blender? In any case, it is necessary to have at least some support for the add-on, because it is not local and without any justification, it makes no sense to keep the web server for it. The first idea of commercialization was about the monthly subscription. I was going to do it after finally finish the addon development (full support of all kinds of nodes and solvation of the most of emerging issues). Only after the completion of all this work I was going to open the add-on for users.

The reason of the early access was the discussion in Blender’s VK group. It was suggested that add-on with a commercial basis is not needed with the presence of Blender Cloud or VX Matlib add-on. Users will not pay for anything that can be obtained another way for free.

So the first, and most important, question – are users need such add-on? In the subscripted version or only for free? Or maybe most of the existing solutions are enough?

Continue reading “BIS development. Is it necessary?”

BIS – Online Blender material storage

Blender Interplanety Storage (BIS) – the online material (shader) storage add-on for Blender 3D creation. With the BIS add-on, you can save materials (groups of nodes) to the online personal library and then convenient search and upload them. Saved materials are available from any computer through the add-on installed in Blender.


Add-on is a free and open source. If you want to support it – you can buy the add-on for a convenient price, or set the price to 0 to download it for free.

Continue reading “BIS – Online Blender material storage”

Working with MySQL database from Blender

Storing data in a remote database has become common practice in the development of software products. Blender is no exception. Writing scripts and add-ons, the developer may need to access the database to retrieve from it or write to it the necessary information. MySQL today is one of the most common and widely available databases and is well suited for working with Blender.

The interaction between Blender and MySQL database through the Blender Python API is not difficult, but it needs some preparation before stating:

Continue reading “Working with MySQL database from Blender”

PartitionRender add-on v.0.0.5

Add-on PartitionRender v.0.0.5 update.

  • Added “SaveMultilayer” checkbox

If the checkbox is on – temporary render results saved in OpenEXR Multilayer format including all layers and passes for future use. Only finished image compiles automatically, different passes need to compile manually.

PartitonRender v.0.05

PartitionRender add-on

Blender add-on allowing to interrupt the rendering process and resume it from the interrupted place. For those who are not able to have the powered-on computer for render for a long time.

For example, the whole image render takes 12 hours. And there is no way to have the computer powered on all the time, but it is possible to power it on for 5 hours with breaks. If you interrupt the standard rendering process to turn off the computer – next time render starts from the beginning, and all progress is lost. PartitionRender add-on allows dividing the image into several blocks – partitions, each of them is rendered separately. Choosing division by X and Y in 2 parts, the image is divided into 4 blocks. Each of them will be rendered about 3 hours that fit in the time to work. Each partition after rendering saves to file. The next time (after rebooting the computer) PartitionRender automatically continues with the partition on which the break occurred. After finishing all partitions renders, partitions automatically compile to the whole image in compositing.


Add-on is a free and open source. If you want to support it – you can buy the add-on for a convenient price, or set the price to 0 to download it for free.

Continue reading “PartitionRender add-on”

Deleting nodes from compositing via script

To clear compositing window (completely remove all nodes from it), run the following code:


Blender add-ons development code reuse with symbolic links

In the development of add-ons, their modules should be abstracted as much as possible. For a very simple reason – functional, created for a current add-on, will likely need in the next add-on, and possibly not even in one. In the add-on release, the problem of accessing to such common functionality modules is easily solved – all the necessary modules are included in a single package and distributed together. However, during the add-ons development, such modules are much easier to store separately, in one instance, without associating them with any particular package, and import if necessary the desired modules to the desired add-on.

Using symbolic links in the add-ons development
Using symbolic links in the add-ons development

In accordance with the packages import rules, Python allows to refer modules in the following ways:

Continue reading “Blender add-ons development code reuse with symbolic links”