<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/SkeletonResource/Joint",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation16SkeletonResourceC5JointV"
  },
  "title" : "SkeletonResource.Joint"
}
-->

# SkeletonResource.Joint

Describes a single joint of a `Skeleton`

```
struct Joint
```

## Overview

Joints form the hierarchical structure of a skeleton. Each joint has a unique name,
a rest pose transform relative to its parent, and an optional list of child joints.
The hierarchy is expressed through nesting using the `JointBuilder` result builder.

```swift
typealias Joint = SkeletonResource.Joint
// Create a simple arm hierarchy
let arm = try Joint("shoulder") {
    try Joint("upperArm", restPoseTransform: Transform(translation: [0, -0.3, 0])) {
        try Joint("forearm", restPoseTransform: Transform(translation: [0, -0.3, 0]))
    }
}
```

## Topics

### Creating a joint

[`init(String, restPoseTransform: Transform, children: () throws -> [SkeletonResource.Joint]) throws`](/documentation/RealityKit/SkeletonResource/Joint/init(_:restPoseTransform:children:))

Creates a joint with the provided name, rest pose transform, and optional children.

### Inspecting a joint

[`var id: String`](/documentation/RealityKit/SkeletonResource/Joint/id)

The identifier of the joint, automatically derived from the joint name.

[`var restPoseTransform: Transform`](/documentation/RealityKit/SkeletonResource/Joint/restPoseTransform)

The rest pose transform of the joint.
Defines position, rotation, and scale relative to the parent joint in local space.
Used as the reference pose for all animations and deformations.

[`let children: [SkeletonResource.Joint]`](/documentation/RealityKit/SkeletonResource/Joint/children)

The child joints of this joint.
All children must have unique names within the same parent.
`JointBuilder` preserves the order children are declared in the closure body, so
iteration over `children` is deterministic.

### Instance Properties

[`let name: String`](/documentation/RealityKit/SkeletonResource/Joint/name)

The unique name of the joint.
Names should be unique within a skeleton.

## Relationships

### Conforms To

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

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

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

---

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)