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

# ARFaceGeometry

A 3D mesh describing face topology for use in face-tracking AR sessions.

```
class ARFaceGeometry
```

## Overview

This class provides a general model for the detailed topology of a face, in the form of a 3D mesh appropriate for use with various rendering technologies or for exporting 3D assets. (For a quick way to visualize a face geometry using SceneKit, see the [`ARSCNFaceGeometry`](/documentation/ARKit/ARSCNFaceGeometry) class.)

When you obtain a face geometry from an [`ARFaceAnchor`](/documentation/ARKit/ARFaceAnchor) object in a face-tracking AR session, the model conforms to match the dimensions, shape, and current expression of the detected face. You can also create a face mesh using a dictionary of named blend shape coefficients, which provides a detailed, but more efficient, description of the face’s current expression.

In an AR session, you can use this model as the basis for overlaying content that follows the shape of the user’s face—for example, to apply virtual makeup or tattoos. You can also use this model to create occlusion geometry, which hides other virtual content behind the 3D shape of the detected face in the camera image.

> Note:
> Face mesh topology is constant across ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry`` instances. That is, the values of the ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry/vertexCount``, ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry/textureCoordinateCount``, and ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry/triangleCount`` properties never change, the ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry/triangleIndices-3tb1o`` buffer always describes the same arrangement of vertices, and the ``doc://com.apple.arkit/documentation/ARKit/ARFaceGeometry/textureCoordinates-8ahq1`` buffer always maps the same vertex indices to the same texture coordinates.
> 
> Only the ``doc://com.apple.arkit/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.

## Topics

### Accessing Mesh Data

[`vertices`](/documentation/ARKit/ARFaceGeometry/vertices-7qq1y)

An array of vertex positions for each point in the face mesh.

[`textureCoordinates`](/documentation/ARKit/ARFaceGeometry/textureCoordinates-u42d)

An array of texture coordinate values for each point in the face mesh.

[`vertexCount`](/documentation/ARKit/ARFaceGeometry/vertexCount)

The number of elements in the [`vertices`](/documentation/ARKit/ARFaceGeometry/vertices-fhdb) buffer.

[`vertices`](/documentation/ARKit/ARFaceGeometry/vertices-fhdb)

A buffer of vertex positions for each point in the face mesh.

[`textureCoordinateCount`](/documentation/ARKit/ARFaceGeometry/textureCoordinateCount)

The number of elements in the [`textureCoordinates`](/documentation/ARKit/ARFaceGeometry/textureCoordinates-8ahq1) buffer.

[`textureCoordinates`](/documentation/ARKit/ARFaceGeometry/textureCoordinates-8ahq1)

A buffer of texture coordinate values for each point in the face mesh.

[`triangleCount`](/documentation/ARKit/ARFaceGeometry/triangleCount)

The number of triangles described by the [`triangleIndices`](/documentation/ARKit/ARFaceGeometry/triangleIndices-3tb1o) buffer.

[`triangleIndices`](/documentation/ARKit/ARFaceGeometry/triangleIndices-8isy8)

An array of indices describing the triangle mesh formed by the face geometry’s vertex data.

[`triangleIndices`](/documentation/ARKit/ARFaceGeometry/triangleIndices-3tb1o)

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

### Creating a Mesh from Blend Shapes

[`-  initWithBlendShapes:`](/documentation/ARKit/ARFaceGeometry/init(blendShapes:))

Creates a face geometry matching the facial expression described in the specified dictionary.

## Relationships

### Conforms To

[`NSCopying`](/documentation/Foundation/NSCopying)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

[`Sendable`](/documentation/Swift/Sendable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSCoding`](/documentation/Foundation/NSCoding)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)