Data API

One of the major behind-the-scenes changes in Blender 2.5 is in the way that scene data is accessed by different parts of Blender. Previously in version up to 2.49, there was no unified method for reading and writing this data, each tool did it their own independent way, with their own bugs and inconsistencies. This has been a limiting factor in more complex tool and interface development for several years, and has now been solved in version 2.5.

Blender 2.5 has a new data API (nicknamed 'RNA') for consistent data access between tools, which is used for:

  • Automatically generated user interfaces with lists of data properties
  • Access to Blender data by plugins, for example in a render API
  • Automatic python scripting access to blender data, without manually written code that might be duplicated elsewhere
  • A uniform interface for native and custom defined properties
  • Connecting properties to the animation system
  • Generating documentation

Immediate benefits to users include:

  • 'Anything is animatable' - Any property (with only a few exceptions) can be animated or driven
  • Options for keying, driving and help as consistent right-mouse-click options on property UI controls
  • Deep, complete and well documented Python scripting API - any scene data that can be accessed by the Blender UI can be accessed by Python.
  • Less bugs and incompatibilities between different sub-systems in Blender
  • Great potential for more advanced future interface/tool/scripting development

Datablocks view

In order to have a complete list of all data accessible via the Data API, there is now a new 'Datablocks' view in the outliner. It shows all blender data organised by data type, with a hierarchy of data connections beneath it, and provides UI controls to edit the properties in real time. Using this, it's clear to see how deep the data access goes, editing the locations of mesh vertices or keyframe control points, all from the same list view.

The Datablocks view can also be used to create 'Keying Sets' - groups of properties that can be keyframed together as a whole.

Technical Info