---
generated_by: gdlink-build
generated_at: 2026-06-23T12:34:28Z
do_not_edit: true
title: SpringArm3D
brick_type: executor
tier: Plus
generated: true
---
# SpringArm3D
**Category:** Executor
**Tier:** Plus
## Purpose
The SpringArm3D Executor provides a native interface to control a SpringArm3D node's collision behavior and length.
## Visual Reference
```{raw} html
```
## Runtime Behavior
**Inputs**
- **Activate** (Boolean): When true, the executor updates properties and handles movement smoothing.
- **Target Length** (Float): A dynamic input to drive `spring_length` via variable binding.
**Outputs**
None
**Properties**
**Core Configuration**
- **Spring Length** (Float, 2.0): The maximum distance the arm extends if no collision is hit.
- **Margin** (Float, 0.01): The offset from the collision point to prevent the camera from clipping inside geometry.
- **Collision Mask** (Integer Bitmask): Defines which physics layers the arm should collide with.
**Smoothing And Catch-Up Logic**
- **Enable Smoothing** (Boolean, false): When true, the arm follows its tree parent using the authored local transform as the target.
- **Smoothing Mode** (Option: `Location`, `Rotation`, `Both`; default `Location`): Chooses which channels interpolate while detached. Channels not selected by the mode snap directly to the authored follow target each tick.
- **Rotation Follow Mode** (Option: `Absolute`, `Additive`; default `Absolute`): When rotation smoothing is active, `Absolute` lets the executor fully own the arm's rotation, while `Additive` preserves extra local camera-look rotation applied to the same `SpringArm3D` and composes it on top of the parent-follow pose.
- **Smoothing Speed** (Float, 5.0): How quickly the arm catches up to the parent.
- **Auto Top-Level** (Boolean, true): If enabled, the executor automatically enables **Top Level** at runtime so the arm can move independently.
**Debug And UX (v0.8.98.1-dev11)**
...
```{raw} html
```
## Properties
| Property | Type | Default | Notes |
|---|---|---|---|
| Length | float | 2.0 | Maximum arm length when unobstructed |
| Margin | float | 0.01 | Offset from collision point to avoid clipping |
| Mask | int | 1 | Raw physics layer bitmask used by SpringArm3D collision checks |
| Smoothing | bool | False | Enable detached positional catch-up smoothing |
| Smooth Mode | option | Location | Which follow channels interpolate while detached. Unselected channels snap to the authored follow transform. |
| Rot Follow | option | Absolute | When smoothing rotation, choose whether the spring arm owns rotation outright or preserves extra local look input on top of the follow pose. |
| Smooth Spd | float | 5.0 | Catch-up speed when smoothing is enabled |
| Auto TopLvl | bool | True | Temporarily enable Top Level at runtime so the arm can lag behind its parent |
| Verbose | bool | False | Log SpringArm3D target, hit length, compression, and smoothing state (controlled by ladybug button) |