Each (x, y, z) is a unit vector of the normal to the surface at each vertex. There is exactly one normal vector for each vertex. These normals are relative to center transform of the face.
A buffer of triangles' indices in consecutive (i0, i1, i2) triplets.
Every three consecutive values are indices that represent a triangle. The front face of each triangle is defined by the face where the vertices are in counter clockwise winding order.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-07-14 UTC."],[[["\u003cp\u003e\u003ccode\u003eGARAugmentedFaceMesh\u003c/code\u003e provides face mesh and transform data for detected faces, including 3D vertex locations, normals, and texture coordinates.\u003c/p\u003e\n"],["\u003cp\u003eIt uses a triangle mesh representation with a fixed number of vertices and triangles, currently 468 vertices.\u003c/p\u003e\n"],["\u003cp\u003eThe mesh data is accessible through properties like \u003ccode\u003evertices\u003c/code\u003e, \u003ccode\u003enormals\u003c/code\u003e, \u003ccode\u003etextureCoordinates\u003c/code\u003e, \u003ccode\u003etriangleIndices\u003c/code\u003e, and \u003ccode\u003etriangleCount\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eVertex locations are relative to the center transform of the face and expressed in meters.\u003c/p\u003e\n"],["\u003cp\u003eThe mesh topology, defined by \u003ccode\u003etriangleIndices\u003c/code\u003e, remains constant, while vertex positions may change with each frame.\u003c/p\u003e\n"]]],["`GARAugmentedFaceMesh` provides data for a detected face mesh. It contains properties for: `normals` (3D surface normal vectors per vertex), `textureCoordinates` (UV texture coordinates per vertex), `triangleCount` (number of triangles), `triangleIndices` (triangle vertex index triplets), `vertexCount` (number of vertices, currently 468), and `vertices` (3D vertex locations). Triangles are defined by counter-clockwise winding order, normals and vertices are relative to the face's center transform, and the `triangleIndices`, `textureCoordinates` and `vertexCount` do not change.\n"],null,["GARAugmentedFaceMesh\n\nObject that holds face mesh and transform data for a detected face.\n\nSummary\n\nInheritanceInherits from: `NSObject`\n\n| Properties ||\n|-------------------------------------------|-------------------------------------------------------------------------------------------|\n| [normals](#normals) | `const simd_float3 *` A buffer of 3D normals in `(x, y, z)` packing. |\n| [textureCoordinates](#texturecoordinates) | `const simd_float2 *` A float buffer of UV texture coordinates in `(u, v)` packing. |\n| [triangleCount](#trianglecount) | `NSUInteger` Number of triangles in the face mesh. |\n| [triangleIndices](#triangleindices) | `const uint16_t *` A buffer of triangles' indices in consecutive `(i0, i1, i2)` triplets. |\n| [vertexCount](#vertexcount) | `NSUInteger` Number of vertices in the Augmented Faces mesh. |\n| [vertices](#vertices) | `const simd_float3 *` A float buffer of 3D vertex locations in `(x, y, z)` packing. |\n\nProperties \n\nnormals \n\n```gdscript\n@property(nonatomic, readonly) const simd_float3 */ar/reference/ios/interface/GARAugmentedFaceMesh#normals;\n``` \nA buffer of 3D normals in `(x, y, z)` packing.\n\nEach `(x, y, z)` is a unit vector of the normal to the surface at each vertex. There is exactly one normal vector for each vertex. These normals are relative to center transform of the face. \n\ntextureCoordinates \n\n```gdscript\n@property(nonatomic, readonly) const simd_float2 */ar/reference/ios/interface/GARAugmentedFaceMesh#texturecoordinates;\n``` \nA float buffer of UV texture coordinates in `(u, v)` packing.\n\nThere is a pair of texture coordinates for each vertex. The [textureCoordinates](/ar/reference/ios/interface/GARAugmentedFaceMesh#texturecoordinates) will not change. \n\ntriangleCount \n\n```transact-sql\n@property(nonatomic, readonly) NSUInteger /ar/reference/ios/interface/GARAugmentedFaceMesh#trianglecount;\n``` \nNumber of triangles in the face mesh.\n\nThis is equivalent to the number of elements in [triangleIndices](/ar/reference/ios/interface/GARAugmentedFaceMesh#triangleindices) divided by 3. The count will not change. \n\ntriangleIndices \n\n```gdscript\n@property(nonatomic, readonly) const uint16_t */ar/reference/ios/interface/GARAugmentedFaceMesh#triangleindices;\n``` \nA buffer of triangles' indices in consecutive `(i0, i1, i2)` triplets.\n\nEvery three consecutive values are indices that represent a triangle. The front face of each triangle is defined by the face where the vertices are in counter clockwise winding order.\n\nThe [triangleIndices](/ar/reference/ios/interface/GARAugmentedFaceMesh#triangleindices) will not change. \n\nvertexCount \n\n```transact-sql\n@property(nonatomic, readonly) NSUInteger /ar/reference/ios/interface/GARAugmentedFaceMesh#vertexcount;\n``` \nNumber of vertices in the Augmented Faces mesh.\n\nThe [vertexCount](/ar/reference/ios/interface/GARAugmentedFaceMesh#vertexcount) will not change. Currently, there are 468 vertices, although this might change in the future. \n\nvertices \n\n```gdscript\n@property(nonatomic, readonly) const simd_float3 */ar/reference/ios/interface/GARAugmentedFaceMesh#vertices;\n``` \nA float buffer of 3D vertex locations in `(x, y, z)` packing.\n\nThese vertices are relative to the center transform of the face. Units are in meters."]]