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

# ARPlaneGeometry

A 3D mesh describing the shape of a detected plane in world-tracking AR sessions.

```
class ARPlaneGeometry
```

## Overview

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

Unlike the [`ARPlaneAnchor`](/documentation/ARKit/ARPlaneAnchor) [`center`](/documentation/ARKit/ARPlaneAnchor/center) and [`extent`](/documentation/ARKit/ARPlaneAnchor/extent) properties, which estimate only a rectangular area for a detected plane, a plane anchor’s [`geometry`](/documentation/ARKit/ARPlaneAnchor/geometry) property provides a more detailed estimate of  the 2D area covered by that plane. For example, if ARKit detects a circular tabletop, the resulting [`ARPlaneGeometry`](/documentation/ARKit/ARPlaneGeometry) objects roughly match the general shape of the table. As the session continues to run, ARKit provides updated plane anchors whose associated geometry refines the estimated shape of the plane.

You can use this model to more precisely place 3D content that should appear only on a detected flat surface. For example, to ensure that virtual objects don’t fall off the edge of a table. You can also use this model to create occlusion geometry, which hides other virtual content behind the detected surface in the camera image.

The shape of a plane geometry is always convex. That is, the boundary polygon for a plane geometry is a minimal convex hull enclosing all points that ARKit recognizes or estimates are part of the plane.

## Topics

### Accessing Mesh Data

[`var vertices: [simd_float3]`](/documentation/ARKit/ARPlaneGeometry/vertices-43kle)

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

[`var textureCoordinates: [vector_float2]`](/documentation/ARKit/ARPlaneGeometry/textureCoordinates-p801)

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

[`@property (nonatomic, readonly) const simd_float3 * vertices;`](/documentation/ARKit/ARPlaneGeometry/vertices-3kgkm)

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

[`@property (nonatomic, readonly) NSUInteger vertexCount;`](/documentation/ARKit/ARPlaneGeometry/vertexCount)

The number of elements in the [`vertices`](/documentation/ARKit/ARPlaneGeometry/vertices-3kgkm) buffer.

[`@property (nonatomic, readonly) const simd_float2 * textureCoordinates;`](/documentation/ARKit/ARPlaneGeometry/textureCoordinates-91pbc)

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

[`@property (nonatomic, readonly) NSUInteger textureCoordinateCount;`](/documentation/ARKit/ARPlaneGeometry/textureCoordinateCount)

The number of elements in the [`textureCoordinates`](/documentation/ARKit/ARPlaneGeometry/textureCoordinates-91pbc) buffer.

[`@property (nonatomic, readonly) const int16_t * triangleIndices;`](/documentation/ARKit/ARPlaneGeometry/triangleIndices-1azi3)

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

[`var triangleCount: Int`](/documentation/ARKit/ARPlaneGeometry/triangleCount)

The number of triangles described by the [`triangleIndices`](/documentation/ARKit/ARPlaneGeometry/triangleIndices-1azi3) buffer.

[`var triangleIndices: [Int16]`](/documentation/ARKit/ARPlaneGeometry/triangleIndices-64epx)

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

### Finding Boundary Points

[`var boundaryVertices: [simd_float3]`](/documentation/ARKit/ARPlaneGeometry/boundaryVertices-3h98l)

An array of vertex positions for each point along the plane’s boundary.

[`@property (nonatomic, readonly) const simd_float3 * boundaryVertices;`](/documentation/ARKit/ARPlaneGeometry/boundaryVertices-6nbee)

A buffer of vertex positions for each point along the plane’s boundary.

[`@property (nonatomic, readonly) NSUInteger boundaryVertexCount;`](/documentation/ARKit/ARPlaneGeometry/boundaryVertexCount)

The number of elements in the [`boundaryVertices`](/documentation/ARKit/ARPlaneGeometry/boundaryVertices-6nbee) buffer.

### Initializers

[`init?(coder: NSCoder)`](/documentation/ARKit/ARPlaneGeometry/init(coder:))

## Relationships

### Conforms To

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

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

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

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

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

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

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

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

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

[`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)