Blender In Depth

Couldn't load preview image :\

Blender is a complex and big project managed by blender studios as the official orchestrator, many collaborators and volunteers. This combination makes blender a fast evolving application that needs lots of documentation. For this reason, there are many sources we can use to try to answer What is blender?

What is Blender?

In it’s essence, blender is just a collection of Python, JavaScript, C++, HTML and Dockerfile scripts. But nothing explains better what this collection does than the official page itself:

And because the good resources are the ones that exist, we will rely in blender’s already official documentation to dive into its skeleton.

This is … in fact … overwelming.

Audaspace

Blender Data Structures

Once we have finished editing a file, it has to be stored somehow the same way it must be loaded in memory at execution time. Blender implements a read/write library that stores Data Structures and loads them back when necessary.

This building blocks are the essence of blender. They compose the building blocks of the software and we can think of them as lego pieces. Blender has developed the $2\times2$ red piece with two toppings and the $1\times1$ green piece. I, myself would like to build a bridge with this blocks so I make as many instances as I wish and build the wall. At saving the file, we just end up with a .blend file that contains a list of this objects, they’re position rotation and scale as well as any other property they may have.

It is a silly example but if I do it correctly, it will help generate intuition for less experienced users on code architecture.

Lets now deep down into a more specific example!!

A Data Structure that everyone has used without noticing is the Mesh Data Structure mesh data documentation

In this scene of blender we see three different objects, each of them has a unique mesh data associated to them. Look what happens when we use the same mesh for all the objects.

Suddenly we have the same geometry on all objects but with an additional transformation added to each one. Do you know what that is? It is called instance and is huge. Instances are the funding block of all game engines and 3D applications. But then, if the object instance is independent of the mesh instance, what is object? It is just another building block called Object Data altogether with Object.

classDiagram class Object { Vector3 position Quaternion rotation Vector3 scale ---- DataStructure data } style Object fill:#FFC55C,stroke:#EEA011,stroke-width:1 class DataStructure { Name name } style DataStructure fill:#7BC8F6,stroke:#2196F3,stroke-width:1 class Mesh { Name name Material material } style Mesh fill:#A8D8A8,stroke:#4CAF50,stroke-width:1 class Camera { Name name FocalLength 50mm } style Camera fill:#F6A8C0,stroke:#E91E8C,stroke-width:1 Object --> DataStructure : data DataStructure <|-- Mesh DataStructure <|-- Camera
Fig. 1: Blender Object Data Structure

This graph is an over simplification. In blender, each of this data structures have hundreds of attributes and they additionally rely on arrays and tensors that contain even more information (like vertices, edges and faces connections).

A better visualization of this structures shown inside blender itself. Visit Editor and Outliner for the documentation on what are editors inside blender and what is the Outliner editor specifically. We cite the page directly: