Role of Attributes in Blender Geometry Nodes
This article provides an overview of how attributes function within Blender’s Geometry Nodes system. You will learn how attributes store and propagate data across geometry elements, the differences between named and anonymous attributes, and how they are utilized to control procedural modeling, instancing, and shading workflows.
What Are Attributes?
In Blender’s Geometry Nodes, attributes are data containers stored directly on the elements of a geometry, such as vertices, edges, faces, face corners, or curves. Each attribute holds specific information—like a coordinate, a color, a scalar value, or a vector—for every individual element of that geometry.
Attributes are fundamental because Geometry Nodes do not just
manipulate raw 3D shapes; they manipulate the data attached to those
shapes. For example, a mesh’s shape is determined by the built-in
position attribute stored on its vertices.
Built-In vs. Custom Attributes
Blender categorizes attributes into two primary types:
- Built-in Attributes: These are default properties
that Blender automatically generates and requires to render and display
geometry. Common examples include
position(vertex locations),normal(direction faces or vertices point),id(unique numbers for instancing), anduv_map(texture coordinates). - Custom Attributes: These are user-defined data sets
created to achieve specific procedural effects. For example, you can
create a custom attribute called
densityto control where plants are scattered on a terrain.
Named vs. Anonymous Attributes
Geometry Nodes process attributes using two distinct pipelines:
- Anonymous Attributes: Introduced to simplify node trees, anonymous attributes pass data dynamically through the node connections (represented by diamond-shaped socket wires, or “fields”). They do not require a specific text name and are automatically cleared from memory when they are no longer needed by downstream nodes.
- Named Attributes: These are explicitly saved to the geometry using the Store Named Attribute node and referenced using the Named Attribute node. Named attributes are essential when you need to share data outside of the specific Geometry Nodes modifier, such as passing vertex weights to a modifier further down the stack or sending procedural data to the Shader Editor for material rendering.
Attribute Data Types
Attributes can store several formats of data, depending on the needs of your project:
- Boolean: True or false states (e.g., selection masks).
- Integer: Whole numbers (e.g., index numbers or part counts).
- Float: Decimal numbers (e.g., scale factors or weight maps).
- Vector: Three-dimensional coordinates (e.g., 3D positions, translations, or forces).
- Color: Red, Green, Blue, and Alpha (RGBA) values used for vertex painting and shading.
How Attributes Drive Procedural Workflows
Attributes act as the nervous system of a procedural setup. By reading and modifying attribute data, you can achieve complex behaviors:
- Deformation: Modifying the
positionattribute of vertices allows you to displace, bend, or procedurally animate meshes. - Instancing Control: By generating custom attributes (like scale or rotation vectors) on a point cloud, you can precisely control how instances (like trees or rocks) are distributed, scaled, and rotated.
- Shading and Rendering: By storing attributes in Geometry Nodes and calling them in the Shader Editor via the Attribute shader node, you can drive material properties (like color, roughness, or emission) based on procedural calculations done in the geometry node tree.