Data-Blocks¶
The base unit for any Blender project is the data-block. Examples of data-blocks include: meshes, objects, materials, textures, node-trees, scenes, texts, brushes and even screens.
For clarity, bones, sequence strips and vertex groups are not data-blocks, they belong to armature, scene and mesh types respectively.
Some common characteristics:
- They are the primary contents of the blend-file.
- They can link to each other, for reuse and instancing. (child/parent, object/object-data, with modifiers and constraints too).
- Their names are unique.
- They can be added/removed/edited/duplicated.
- They can be linked between files (only enabled for a limited set of data-blocks).
- They can have their own animation data.
- They can have Custom Properties.
When doing more complex projects, managing data-blocks becomes more important, especially when inter-linking blend-files.
Users (Garbage Collection)¶
It is good to be aware of how Blender, handles data-blocks lifetime, when they are freed and why.
Blender follows the general rule where unused data is eventually removed.
Since it is common to add and remove a lot of data while working, this has the advantage of not having to manually manage every single data-block.
This works by skipping zero user data-blocks when writing blend-files.
In some cases, you want to save a data-block even when it is unused (typically for re-usable asset libraries). see Fake User.
Fake User¶
Since zero user data-blocks are not saved, there are times when you want to force the data to be kept irrespective of its users.
If you are building a blend-file to serve as a library of things that you intend to link to and from other files, you will need to make sure that they do not accidentally get deleted from the library file.
Do this by giving the data-blocks a Fake User, by pressing the F button next to the name of the data-block. This prevents the user count from ever becoming zero: therefore, the data-block will not be deleted. (since Blender does not keep track of how many other files link to this one.)
Users (Sharing)¶
Many data-blocks can be shared among other data-blocks,
Examples where sharing data is common:
- Sharing textures among materials.
- Sharing meshes between objects (instances).
- Sharing animated actions between objects, for example to make all the lights dim together.
You can also share data-blocks between files, see:
Make Single User¶
Reference
U
Makes the selected or all objects data-blocks a single user, that is, not shared (linked) between other objects than the current one.
- Type
These actions work on the selected objects, or on all the objects of the scene,
All, Selected Objects
- Data-blocks
Lets you, in addition to the menu predefined selection, choose the type of data-blocks individually.
Object, Object Data, Materials, Textures, Object Animation
Removing Data-Blocks¶
As covered in Users (Garbage Collection), data-blocks are typically removed when they are no longer used.
There are some exceptions to this, however.
The following data-blocks can be removed directly: Scene, Text, Group and Screen.
Other data-blocks such as groups and actions can be Unlinked from the Outliner context menu.
Tip
Some data (images especially) is hard to keep track of, especially since image views are counted as users.
For data-blocks that can be unlinked hold Shift
, while pressing on the X button.
This force clears the user-count, so the data-block will be removed on reloading.
Data-Block Types¶
For reference, here is a table of data-blocks types stored in blend-files.
Link: | Library Linking, supports being linked into other blend-files. |
---|---|
Pack: | File Packing, supports file contents being packed into the blend-file. |
Type | Link | Pack | Description |
---|---|---|---|
Action | ✓ | ✗ | Stores animation F-Curves.
Used as data-block animation data,
and the Non-Linear-Editor.
|
Armature | ✓ | ✗ | Skeleton used to deform meshes.
Used as object data & by the Armature Modifier.
|
Brush | ✓ | ✗ | Used by paint tools.
|
Camera | ✓ | ✗ | Used as object data.
|
Curve | ✓ | ✗ | Used by camera, font & surface objects.
|
Font | ✓ | ✓ | References font files.
Used by Font object-data.
|
GreasePencil | ✓ | ✗ | 2D/3D sketch data.
Used as overlay helper info, by the
3D View, Image, Sequencer & MovieClip editors.
|
Group | ✓ | ✗ | Reference object’s.
Used by dupli-groups & often library-linking.
|
Image | ✓ | ✓ | Image files.
Used by textures & shader nodes.
|
Lamp | ✓ | ✗ | Used as object-data.
|
Lattice | ✗ | ✗ | Grid based lattice deformation.
Used as object data and by the Lattice Modifier.
|
Library | ✗ | ✓ | References to external blend-files.
Access from the Outliner’s blend-file view.
|
LineStyle | ✓ | ✗ | Used by the FreeStyle render-engine.
|
Mask | ✓ | ✗ | 2D animated mask curves.
Used by compositing nodes & sequencer strip.
|
Material | ✓ | ✗ | Set shading and texturing render properties.
Used by objects, meshes & curves.
|
Mesh | ✓ | ✗ | Geometry vertices/edges/faces.
Used as object-data.
|
MetaBall | ✓ | ✗ | An isosurface in 3D space.
Used as object-data.
|
MovieClip | ✓ | ✗ | Reference to an image sequence or video file.
Used in the motion-tracking editor.
|
NodeGroup | ✓ | ✗ | Collections of re-usable nodes.
Used in the Node Editor.
|
Object | ✓ | ✗ | An entity in the scene with location,
scale, rotation.
Used by scenes & groups.
|
Particle | ✓ | ✗ | Particle settings.
Used by particle systems.
|
Palette | ✓ | ✗ | Store color presets.
Access from the paint tools.
|
Scene | ✓ | ✗ | Primary store of all data displayed and animated.
Used as top-level storage for objects & animation.
|
Screen | ✗ | ✗ | Screen layout.
Used by each window, which has its own screen.
|
ShapeKeys | ✗ | ✗ | Geometry shape storage, which can be animated.
Used by mesh, curve, and lattice objects.
|
Sounds | ✓ | ✓ | References to sound files.
Used by speaker objects and the Game Engine.
|
Speaker | ✓ | ✗ | Sound sources for a 3D scene.
Used as object-data.
|
Text | ✓ | ✗ | Text data.
Used by Python scripts and OSL shaders.
|
Texture | ✓ | ✗ | 2D/3D textures.
Used by materials, world and brushes.
|
World | ✓ | ✗ | Used by scenes for render environment settings.
|
WindowManager | ✗ | ✗ | The overarching manager for all of Blender’s UI;
this includes screens, notification system, operators, and keymaps.
|