# MeshLoop(bpy_struct)

base class — `bpy_struct`

class `bpy.types.``MeshLoop`(bpy_struct)

  Loop in a Mesh data-block

  `bitangent`

    Bitangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents, use it only if really needed, slower access than bitangent_sign)

    Type: | float array of 3 items in [-1, 1], default (0.0, 0.0, 0.0), (readonly)

  `bitangent_sign`

    Sign of the bitangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents, bitangent = bitangent_sign * cross(normal, tangent))

    Type: | float in [-1, 1], default 0.0, (readonly)

  `edge_index`

    Edge index

    Type: | int in [0, inf], default 0

  `index`

    Index of this loop

    Type: | int in [0, inf], default 0, (readonly)

  `normal`

    Local space unit length split normal vector of this vertex for this polygon (must be computed beforehand using calc_normals_split or calc_tangents)

    Type: | float array of 3 items in [-1, 1], default (0.0, 0.0, 0.0)

  `tangent`

    Local space unit length tangent vector of this vertex for this polygon (must be computed beforehand using calc_tangents)

    Type: | float array of 3 items in [-1, 1], default (0.0, 0.0, 0.0), (readonly)

  `vertex_index`

    Vertex index

    Type: | int in [0, inf], default 0

Inherited Properties

`bpy_struct.id_data` |

Inherited Functions

`bpy_struct.as_pointer` `bpy_struct.driver_add` `bpy_struct.driver_remove` `bpy_struct.get` `bpy_struct.is_property_hidden` `bpy_struct.is_property_readonly` `bpy_struct.is_property_set` `bpy_struct.items` | `bpy_struct.keyframe_delete` `bpy_struct.keyframe_insert` `bpy_struct.keys` `bpy_struct.path_from_id` `bpy_struct.path_resolve` `bpy_struct.property_unset` `bpy_struct.type_recast` `bpy_struct.values`

References

`Mesh.loops` |