Book Image

Python Scripting in Blender

By : Paolo Acampora
5 (1)
Book Image

Python Scripting in Blender

5 (1)
By: Paolo Acampora

Overview of this book

Blender, a powerful open source 3D software, can be extended and powered up using the Python programming language. This book teaches you how to automate laborious operations using scripts, and expand the set of available commands, graphic interfaces, tools, and event responses, which will enable you to add custom features to meet your needs and bring your creative ideas to life. The book begins by covering essential Python concepts and showing you how to create a basic add-on. You’ll then gain a solid understanding of the entities that affect the look of Blender’s objects such as modifiers, constraints, and materials. As you advance, you’ll get to grips with the animation system in Blender and learn how to set up its behavior using Python. The examples, tools, patterns, and best practices present throughout the book will familiarize you with the Python API and build your knowledge base, along with enabling you to produce valuable code that empowers the users and is ready for publishing or production. By the end of this book, you’ll be able to successfully design add-ons that integrate seamlessly with the software and its ecosystem.
Table of Contents (19 chapters)
1
Part 1: Introduction to Python
7
Part 2: Interactive Tools and Animation
13
Part 3: Delivering Output

Reloading cached modules

When a module is imported, Python caches a copy of it for future access. Since the __init__.py file is the only one to be updated by the Reload Scripts operator, we are left with two options:

  • Close and restart Blender
  • Explicitly call the reload function inside __init__.py

The latter is preferred over restarting the application as it takes less time. The reload function is part of the importlib module.

Reloading via importlib

The utilities contained in the importlib library interact with the import system, and the reload function forces the Python interpreter to reload a module from disk.

If the img_loader module has changed and needs to be reloaded, we can use the following command:

from importlib import reload
reload(img_loader)

So, to make sure that the changes to our add-on .py files are always applied, we can add these lines of code to _init_.py:

from . import img_loader
from . import panel
from importlib import reload...