What is the difference between datablock and object?

In the Materials tab, I find the top two rows (in Blender 2.34) very confusing, especially the OB and ME buttons. I have read the online manual and reference guide and seen the tool tip help, but I am still confused. Can someone explain this and also the difference between a datablock and object? Thanks for any help.

Okay, Blender is based on an Object Oriented design, which is mainly a programing term, but it means that you can reuse objects all over your Blender project. Datablocks are part of this object orientedness. Everything in your project, weither it’s a mesh, light, material, anything bit of data is called a datablock. You link an object to a datablock. For example, an object is literally a point in space with a rotation. That object is linked to a datablock which happens to be a mesh, and that is what gives it it’s shape. So you can have a number of different object linked to the same mesh datablock to use it in more than one place.

For materials it works the same way. Most of the time material datablock will be linked to the mesh (ME). If you want to link the material to the actual object (OB), click on that, select the material from the drop down menu, and there you have it. The (OB) and (ME) buttons allow you to see what material datablocks are linked to either the object or the mesh.

The OB: field = Object and the Me: field = Mesh

The object is the primitive you add eg; Mesh, Armature, curve, empty etc
The Mesh applies only to meshes, those in the list of choices under Add >> Mesh.

The Datablocks apply to the function they relate to eg; Object Datablock keeps track of what object is added, what has been added to it (Materials etc) and how those are manipulated (Global and rotations, Scale and Grabs) and the Mesh Datablock keeps track of things like Extrusions (ie; number of verts and their relation to the Object center), Joins, Links etc.

So, materials and textures also have theit datablocks, as do Curves, Armatures etc.

Think of datablocks as the list of info that the undo function has to look at to retrace (or redo) its steps.

%<

It even goes farther than just objects and their data. In fact, pretty much everything in Blender is a datablock. Material and Textures are datablocks (of course), but also Scenes, Screens, Images, Actions, …

Anything that can be linked to something else is a datablock (whether you have control on that link or not).

Just think of datablocks at the building blocks of Blender as a whole.

Martin

Thanks for your great responses. I think I have it now. When I add a cube, for example, I am actually adding two things, an object (basically a named point in space, rotation, scale, etc.) and a cube mesh, and these are initially linked. Later on, if I wish, I may replace the mesh with something else, but this is still the original object.

Thanks again. This has been bugging me for a while.