<!--
{
  "availability" : [
    "iOS: 8.0.0 - 26.0.0",
    "iPadOS: 8.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "macOS: 10.8.0 - 26.0.0",
    "tvOS: 9.0.0 - 26.0.0",
    "visionOS: 1.0.0 - 26.0.0",
    "watchOS: 3.0.0 - 26.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "SceneKit",
  "identifier" : "/documentation/SceneKit/SCNVector3",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:@S@SCNVector3"
  },
  "title" : "SCNVector3"
}
-->

# SCNVector3

A representation of a three-component vector.

```
struct SCNVector3
```

## Overview

SceneKit uses three-component vectors for a variety of purposes, such as describing node or vertex positions, surface normals, and scale or translation transforms. The different vector components should be interpreted based on the context in which the vector is being used.

> Important:
> In macOS, the `x`, `y`, and `z` fields in this structure are <doc://com.apple.documentation/documentation/CoreFoundation/CGFloat-swift.struct> values. In iOS, tvOS, and watchOS, these fields are `float` values.

## Topics

### Components

[`var x: Float`](/documentation/SceneKit/SCNVector3/x)

The first component in the vector.

[`var y: Float`](/documentation/SceneKit/SCNVector3/y)

The second component in the vector.

[`var z: Float`](/documentation/SceneKit/SCNVector3/z)

The third component in the vector.

### Creating Vectors

[`func SCNVector3Make(Float, Float, Float) -> SCNVector3`](/documentation/SceneKit/SCNVector3Make(_:_:_:))

Returns a new three-component vector created from individual component values.

### Converting Vector Types

[`func SCNVector3FromGLKVector3(GLKVector3) -> SCNVector3`](/documentation/SceneKit/SCNVector3FromGLKVector3(_:))

Returns a three-element SceneKit vector structure corresponding to a GLKit vector structure.

[`func SCNVector3ToGLKVector3(SCNVector3) -> GLKVector3`](/documentation/SceneKit/SCNVector3ToGLKVector3(_:))

Returns a three-element GLKit vector structure corresponding to a SceneKit vector structure.

[`static SCNVector3 SCNVector3FromFloat3(simd_float3 v);`](/documentation/SceneKit/SCNVector3FromFloat3)

[`static simd_float3 SCNVector3ToFloat3(SCNVector3 v);`](/documentation/SceneKit/SCNVector3ToFloat3)

### Comparing Vectors

[`func SCNVector3EqualToVector3(SCNVector3, SCNVector3) -> Bool`](/documentation/SceneKit/SCNVector3EqualToVector3(_:_:))

Returns a Boolean value that indicates whether the corresponding components of two vectors are equal.

### Zero Constant

[`let SCNVector3Zero: SCNVector3`](/documentation/SceneKit/SCNVector3Zero)

The three-component vector whose every component is `0.0`.

### Initializers

[`init()`](/documentation/SceneKit/SCNVector3/init())

[`init(SIMD3<Double>)`](/documentation/SceneKit/SCNVector3/init(_:)-10rap)

[`init(SIMD3<Float>)`](/documentation/SceneKit/SCNVector3/init(_:)-9wg16)

[`init(Int, Int, Int)`](/documentation/SceneKit/SCNVector3/init(_:_:_:)-2hhr6)

[`init(CGFloat, CGFloat, CGFloat)`](/documentation/SceneKit/SCNVector3/init(_:_:_:)-50jm7)

[`init(Double, Double, Double)`](/documentation/SceneKit/SCNVector3/init(_:_:_:)-7clbx)

[`init(Float, Float, Float)`](/documentation/SceneKit/SCNVector3/init(_:_:_:)-8cwh7)

[`init(x: CGFloat, y: CGFloat, z: CGFloat)`](/documentation/SceneKit/SCNVector3/init(x:y:z:)-28n6q)

[`init(x: Float, y: Float, z: Float)`](/documentation/SceneKit/SCNVector3/init(x:y:z:)-mn27)

## Relationships

### Conforms To

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

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

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

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

---

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)