Attributes¶
An attribute is a generic term to describe data stored per-element in a geometry data-block. For example, every vertex can have an associated number or vector. Attributes can be altered by the nodes in the Attribute category, but also some other nodes can change the values of specific attributes.
Note
Attribute data types are converted implicitly where possible, just like node sockets.
Attribute Sockets¶
The blue attribute sockets are just string sockets, used to define which attribute in the geometry to use. When a node part of the evaluated node tree (connected to the root group input and output), the string input allows you to search and choose existing attributes.
The attribute search gives a bit of context about each attribute. To the left of the menu, the attribute domain is shown followed by the attribute name. To the right of the menu, the attribute data type is shown.
Attribute Domains¶
All attributes have a domain and type associated with them. Knowing the domain of an attribute is important because it defines which parts of the geometry the attribute can affect. You can use the Spreadsheet Editor to determine the domains of attributes.
Point domain attributes are associated with the vertices of the mesh or the points in a point cloud.
Edge domain attributes are associated with the edges of the mesh.
Face domain attributes are associated with the faces of the mesh.
Face Corner domain attributes are associated with the corners of the faces of the mesh. An example is the UVMap attribute.
Note
For point cloud objects, every attribute has the point domain.
Tip
Use the Attribute Convert node to change the domain and type of attributes.
Built-In Attributes¶
Built-in attributes always exist, and cannot be removed. Their data type and domain can not be changed.
Name |
Type |
Domain |
Notes |
---|---|---|---|
position |
Vector |
Point |
Built-in attribute describing vertex or point locations, in the modifier object’s transform space. Any node that changes the location of points will adjust this attribute, like the Transform and Point Translate nodes. |
radius |
Float |
Point |
A built-in attribute on point cloud data created by the Point Distribute Node Used to set the size for the points in the viewport. |
material_index |
Integer |
Face |
Used to specify the material slot for every face in a mesh. |
crease |
Float |
Edge |
Edge attribute used by the Subdivision Surface node and modifier. The values are limited to a range of 0 and 1. |
normal |
Vector |
Face |
Normal of a face. This is a bit different from the other builtin attributes in that it cannot be modified. It is automatically derived from the mesh. If this attribute is accessed on non-point domains, it might not be normalized, because it is interpolated from normals of neighboring faces. |
shade_smooth |
Boolean |
Face |
Attribute determining if a face should have smooth shading enabled. |
Naming Conventions¶
These attributes do not exist by default, but are used implicitly by certain nodes. The data type of these attributes can be changed, just like any attribute besides the built-in attributes.
If the attributes don’t exist yet, a default value is used, which can depend on the situation. For example, in the Point Instance Node, the default value for scale is a unit scale of (1, 1, 1), but the default value for new attributes in the “attribute” nodes is zero.
Name |
Type |
Notes |
---|---|---|
rotation |
Vector |
Used in the Point Instance Node to control the rotation of instanced objects or collections. Adjusted by the Point Rotate Node and the Align Rotation to Vector Node. |
scale |
Vector |
Used in the Point Distribute Node to control the scale of instances. Adjusted by the Point Scale Node or other attribute nodes. |
id |
Integer |
Created by the Point Distribute Node to provide stability when the shape of the input mesh changes. The values are large, with no order. The attribute values are used by nodes that generate randomness, like the Attribute Randomize Node. |
Custom Attributes¶
Vertex groups, UV maps and vertex colors are available as attributes in geometry nodes. They are referred to by their name. Naming collisions (e.g. a vertex group and a UV map with the same name) should be avoided. If there is a naming collision, only one of the attributes is accessible in geometry nodes.
Attributes with any other name can also be created by nodes, when the name is used for the first time.
Note that geometry nodes does not always produce e.g. vertex groups if a node like Join Geometry is used. Similarly, if the data type of a vertex group attribute is changed from the initial “Float” type, the attribute will no longer be a vertex group.