---
title: ARFaceGeometry
framework: arkit
role: symbol
role_heading: Class
path: arkit/arfacegeometry
---

# ARFaceGeometry

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

## Declaration

```swift
class ARFaceGeometry
```

## Overview

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 class.) When you obtain a face geometry from an 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 ARFaceGeometry instances. That is, the values of the vertexCount, textureCoordinateCount, and triangleCount properties never change, the triangleIndices buffer always describes the same arrangement of vertices, and the textureCoordinates buffer always maps the same vertex indices to the same texture coordinates. Only the vertices 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](arkit/arfacegeometry/vertices-7qq1y.md)
- [textureCoordinates](arkit/arfacegeometry/texturecoordinates-u42d.md)
- [triangleCount](arkit/arfacegeometry/trianglecount.md)
- [triangleIndices](arkit/arfacegeometry/triangleindices-8isy8.md)

### Creating a Mesh from Blend Shapes

- [init(blendShapes:)](arkit/arfacegeometry/init(blendshapes:).md)

### Initializers

- [init(coder:)](arkit/arfacegeometry/init(coder:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Face Data

- [Tracking and visualizing faces](arkit/tracking-and-visualizing-faces.md)
- [Combining user face-tracking and world tracking](arkit/combining-user-face-tracking-and-world-tracking.md)
- [ARSCNFaceGeometry](arkit/arscnfacegeometry.md)
