---
title: SCNTube
framework: scenekit
role: symbol
role_heading: Class
path: scenekit/scntube
---

# SCNTube

A tube or pipe geometry—a right circular cylinder with a circular hole along its central axis.

## Declaration

```swift
class SCNTube
```

## Overview

Overview

The outer surface of a tube is a cylinder. Define the size of the cylinder’s cross section in the x- and z-axis dimensions of its local coordinate space with the outerRadius property, and its extent in the y-axis dimension with the height property. A cylinder becomes a tube through the subtraction of a cylindrical volume along its central axis. Define the size of this circular hole using the tube’s innerRadius property. To position and orient a tube in a scene, attach it to the geometry property of an SCNNode object. Control the level of detail with the radialSegmentCount and heightSegmentCount properties. A higher radial segment count creates a smoother curve for the tube’s circular inner and outer surfaces. A higher segment count in either direction produces more vertices, which can improve rendering quality for certain lighting models or custom shader effects, but at a cost to rendering performance. A tube contains four SCNGeometryElement objects: one each for its base and top, one that wraps around its outer surface, and one that wraps around its inner surface. SceneKit can render each element using a different material. For details, see the materials property in SCNGeometry.

## Topics

### Creating a Tube

- [init(innerRadius:outerRadius:height:)](scenekit/scntube/init(innerradius:outerradius:height:).md)

### Adjusting a Tube’s Dimensions

- [outerRadius](scenekit/scntube/outerradius.md)
- [innerRadius](scenekit/scntube/innerradius.md)
- [height](scenekit/scntube/height.md)

### Adjusting Geometric Detail

- [radialSegmentCount](scenekit/scntube/radialsegmentcount.md)
- [heightSegmentCount](scenekit/scntube/heightsegmentcount.md)

## Relationships

### Inherits From

- [SCNGeometry](scenekit/scngeometry.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)
- [SCNAnimatable](scenekit/scnanimatable.md)
- [SCNBoundingVolume](scenekit/scnboundingvolume.md)
- [SCNShadable](scenekit/scnshadable.md)

## See Also

### Basic Shapes

- [SCNFloor](scenekit/scnfloor.md)
- [SCNBox](scenekit/scnbox.md)
- [SCNCapsule](scenekit/scncapsule.md)
- [SCNCone](scenekit/scncone.md)
- [SCNCylinder](scenekit/scncylinder.md)
- [SCNPlane](scenekit/scnplane.md)
- [SCNPyramid](scenekit/scnpyramid.md)
- [SCNSphere](scenekit/scnsphere.md)
- [SCNTorus](scenekit/scntorus.md)
