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.

../../_images/modeling_geometry-nodes_attribute-reference_search.png

Attribute Search.

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.