<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARFaceGeometry/triangleIndices-3tb1o",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(cs)ARFaceGeometry(py)triangleIndices"
  },
  "title" : "triangleIndices"
}
-->

# triangleIndices

A buffer of indices describing the triangle mesh formed by the face geometry’s vertex data.

```
@property (nonatomic, readonly) const int16_t * triangleIndices;
```

## Discussion

Each 16-bit integer value in this buffer represents an index into the [`vertices`](/documentation/ARKit/ARFaceGeometry/vertices-fhdb) and [`textureCoordinates`](/documentation/ARKit/ARFaceGeometry/textureCoordinates-8ahq1) buffers. Each set of three indices identifies the vertices that form a single triangle in the mesh. (That is, this buffer is appropriate for use as an index buffer for a triangle mesh in GPU-based rendering or creating 3D model asset files.)

Each set of three indices forms a triangle, so the number of indices in the [`triangleIndices`](/documentation/ARKit/ARFaceGeometry/triangleIndices-3tb1o) buffer is three times the [`triangleCount`](/documentation/ARKit/ARFaceGeometry/triangleCount) value.

Face mesh topology is constant across [`ARFaceGeometry`](/documentation/ARKit/ARFaceGeometry) instances, so this buffer always describes the same arrangement of vertices. Only the [`vertices`](/documentation/ARKit/ARFaceGeometry/vertices-fhdb) buffer changes between face meshes provided by an AR session, indicating the change in vertex positions as ARKit adapts the mesh to the shape and expression of the user’s face.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)