---
title: "unprojectPoint(_:ontoPlane:orientation:viewportSize:)"
framework: arkit
role: symbol
role_heading: Instance Method
path: "arkit/arcamera/unprojectpoint(_:ontoplane:orientation:viewportsize:)"
---

# unprojectPoint(_:ontoPlane:orientation:viewportSize:)

Returns the projection of a point from the 2D space of a view rendering the scene onto a plane in the 3D world space detected by ARKit.

## Declaration

```swift
@nonobjc func unprojectPoint(_ point: CGPoint, ontoPlane planeTransform: simd_float4x4, orientation: UIInterfaceOrientation, viewportSize: CGSize) -> simd_float3?
```

## Parameters

- `point`: The point in 2D view space to project onto a plane. The coordinate space for this point has its origin is in the upper left corner and a size matching the viewportSize parameter.
- `planeTransform`: A transform matrix specifying the position and orientation of a plane (with infinite extent) in 3D world space. The plane is the xz-plane of the local coordinate space this transform defines.
- `orientation`: The orientation in which the camera image is to be presented.
- `viewportSize`: The size, in points, of the view in which the camera image is to be presented.

## Return Value

Return Value The 3D point in world space where a ray projected from the specified 2D point intersects the specified plane, or nil if the ray does not intersect the plane.

## Discussion

Discussion If you display AR content with SceneKit, the ARSCNView class provides an otherwise equivalent unprojectPoint(_:ontoPlane:) method that requires fewer parameters (because the view can infer its orientation and size).

## See Also

### Applying Camera Geometry

- [projectionMatrix](arkit/arcamera/projectionmatrix.md)
- [projectionMatrix(for:viewportSize:zNear:zFar:)](arkit/arcamera/projectionmatrix(for:viewportsize:znear:zfar:).md)
- [viewMatrix(for:)](arkit/arcamera/viewmatrix(for:).md)
- [projectPoint(_:orientation:viewportSize:)](arkit/arcamera/projectpoint(_:orientation:viewportsize:).md)
