10 - Stage Machinery
Module: SuperStage Runtime (ASuperLiftingMachinery / ASuperRailMachinery)
Target Users: Stage designers, machinery control technicians
Prerequisites: 03 - DMX Fixture Base
Last Updated: 2026-04-14
1. Overview
SuperStage provides two DMX-controlled stage machinery Actors for simulating the movement of stage lifts, rotating platforms, rail cars, and other mechanical equipment in virtual scenes:
| Type | Class Name | Axis Count | Description |
|---|---|---|---|
| Lifting Machinery | SuperLiftingMachinery | 6 axes | 3-axis translation + 3-axis rotation, suitable for lift platforms, rotating stages, boom bars |
| Rail Machinery | SuperRailMachinery | 7 axes | Movement along spline curve rail + 6-axis local offset/rotation, suitable for rail cars, hanging trolley |
Both inherit from SuperDmxActorBase with full DMX receiving capability.
Class Inheritance Chain
AActor (UE5 Engine Base Class)
│
└── ASuperBaseActor ·············· SuperStage Root Class (L1)
│ ├ SceneBase / ForwardArrow / UpArrow
│ └ AssetMetaData
│
└── ASuperDmxActorBase ····· DMX Fixture Base Class (L2)
│ ├ DMX Address / Fixture Library / Channel Reading
│ └ SuperDMXTick / Address Label
│
├── ASuperLiftingMachinery ·· Lifting Machinery (L3)
│ ├ 6 DOF (3 translation + 3 rotation)
│ ├ Boot Refresh initialization
│ ├ Absolute rotation / Infinite rotation mode
│ └ PosSpeed / RotSpeed interpolation smoothing
│
└── ASuperRailMachinery ···· Rail Machinery (L3)
├ 7 DOF (rail position + 3 offset + 3 rotation)
├ USplineComponent spline curve rail
├ RailMountPoint mount point → OffsetComponent
├ Closed loop + shortest arc interpolation
└ Orientation lock to rail tangent
Design Note: Both machineries directly inherit
ASuperDmxActorBaserather thanASuperLightBase, because they don’t need the Pan/Tilt rotation axis structure. They use their own multi-axis free motion system, more suitable for stage machinery control requirements.
Use Cases
- Lift Platform — Stage floor up/down lifting (Z-axis translation)
- Rotating Stage — Entire stage area horizontal rotation (Yaw infinite rotation)
- Boom Bar / Light Rack — Up/down lift + forward/backward movement
- Mechanical Arm — Multi-axis coordinated motion
- Rail Car — Light/camera trolley moving along a preset path
- Hanging Trolley — Fixture mount point moving along Truss rails
- Circular Rail — Cyclic motion on a closed loop
Part 1: Lifting Machinery (SuperLiftingMachinery)
2. Basic Principles
Lifting machinery provides 6 degrees of freedom:
3-Axis Translation 3-Axis Rotation
┌─────────────┐ ┌─────────────┐
│ PosX (L/R) │ │ RotX (Pitch) │
│ PosY (F/B) │ │ RotY (Yaw) │
│ PosZ (U/D) │ │ RotZ (Roll) │
└─────────────┘ └─────────────┘
Each axis is controlled by a DMX attribute (0.0 ~ 1.0 normalized value), mapped to a preset motion range.
3. Property Details
3.1 Start Switch
| Parameter | Location | Description | Default |
|---|---|---|---|
| Start | B.DefaultParameter | Machinery start switch. When set to True, begins responding to DMX signals | False |
Important: After placing in the scene, you must set Start to True to begin movement. This is a safety design — preventing sudden machinery movement from misoperation.
3.2 Initialization Button
| Operation | Description |
|---|---|
| Boot Refresh | Click this button to auto-calculate motion range start/end points based on the current Actor position and rotation |
BootRefresh Operations:
- Records current world position as InitialPosition
- Calculates EndPosition = InitialPosition + MovingRange
- Calculates InitialRotation = Current Rotation - RotRange × 0.5
- Calculates EndRotation = Current Rotation + RotRange × 0.5
- Synchronizes all cached values
Usage Steps: First place machinery at the correct starting position → Set MovingRange/RotRange → Click BootRefresh.
3.3 Translation Parameters
| Parameter | Editable | Description | Default | Unit |
|---|---|---|---|---|
| MovingRange | ✅ | X/Y/Z three-axis displacement amount (offset from InitialPosition to EndPosition) | (0, 0, 0) | cm |
| InitialPosition | ❌ Read-only | Start point of translation range (BootRefresh calculated) | — | cm |
| EndPosition | ❌ Read-only | End point of translation range (BootRefresh calculated) | — | cm |
Translation Mapping:
Target Position = Lerp(InitialPosition, EndPosition, DMX Value)
- DMX Value = 0.0 → Actor at InitialPosition (starting position)
- DMX Value = 0.5 → Actor at midpoint between InitialPosition and EndPosition
- DMX Value = 1.0 → Actor at EndPosition (end position)
Example: Lift platform only moves up/down
- Place lift at lowest position
- Set MovingRange = (0, 0, 300) (Z-axis rises 300cm = 3 meters)
- Click BootRefresh
- DMX PosZ = 0.0 → lowest position; DMX PosZ = 1.0 → raised 3 meters
3.4 Rotation Parameters (Absolute Mode)
The following parameters are only shown when PolarRotation = False (absolute rotation mode):
| Parameter | Editable | Description | Default | Unit |
|---|---|---|---|---|
| RotRange | ✅ | Pitch/Yaw/Roll three-axis total rotation range | (360, 360, 360) | degrees |
| InitialRotation | ❌ Read-only | Start angle of rotation range (BootRefresh calculated) | — | degrees |
| EndRotation | ❌ Read-only | End angle of rotation range (BootRefresh calculated) | — | degrees |
Rotation Mapping:
Target Rotation = Lerp(InitialRotation, EndRotation, DMX Value)
3.5 Speed Parameters
| Parameter | Condition | Description | Range | Default |
|---|---|---|---|---|
| PosSpeed | Always visible | Translation interpolation speed | 0.0 - 10.0 | 1.0 |
| RotSpeed | PolarRotation = False | Rotation interpolation speed (absolute mode) | 0.0 - 10.0 | 1.0 |
| PolarRotationSpeed | PolarRotation = True | Infinite rotation max speed | 0.0 - 10.0 | 1.0 |
Parameter Tuning Suggestions:
| Scenario | Recommended PosSpeed | Recommended RotSpeed | Description |
|---|---|---|---|
| Large lift platform (dignified slow) | 0.5 - 1.5 | 0.5 - 1.5 | Simulating hydraulic lift’s steady motion |
| Standard boom lift | 1.0 - 3.0 | — | Light rack up/down, medium speed |
| Quick pop-up effect | 5.0 - 10.0 | — | Sudden pop-up visual effect (pyro/personnel) |
| Rotating stage (slow) | — | 0.3 - 1.0 | Slow rotation display |
| Rotating stage (quick switch) | — | 3.0 - 8.0 | Fast scene transition |
| Mechanical arm multi-axis | 2.0 - 5.0 | 2.0 - 5.0 | Multi-axis coordinated motion |
3.6 Infinite Rotation Mode
| Parameter | Description | Default |
|---|---|---|
| PolarRotation | Infinite rotation mode toggle | False |
- False (Absolute Mode): DMX value maps to a fixed angle range (InitialRotation ~ EndRotation)
- True (Infinite Mode): DMX value controls rotation speed; machinery can rotate continuously without stopping
Infinite Rotation DMX Mapping:
| DMX Value (Normalized) | Rotation Behavior |
|---|---|
| 0.0 | Counter-clockwise at max speed |
| 0.5 | Stop rotation |
| 1.0 | Clockwise at max speed |
| 0.0 ~ 0.5 | Counter-clockwise, decreasing speed |
| 0.5 ~ 1.0 | Clockwise, increasing speed |
3.7 Control Parameters (Runtime Values)
| Parameter | Description | Range | Default |
|---|---|---|---|
| PosX | X-axis translation control | 0.0 - 1.0 | 0.5 |
| PosY | Y-axis translation control | 0.0 - 1.0 | 0.5 |
| PosZ | Z-axis translation control | 0.0 - 1.0 | 0.5 |
| RotX | Pitch rotation control | 0.0 - 1.0 | 0.5 |
| RotY | Yaw rotation control | 0.0 - 1.0 | 0.5 |
| RotZ | Roll rotation control | 0.0 - 1.0 | 0.5 |
3.8 Cache Information (Read-Only)
| Parameter | Description | Unit |
|---|---|---|
| CurrentPosX/Y/Z | Current actual world position (after interpolation smoothing) | cm |
| CurrentRotX/Y/Z | Current actual rotation angle (after interpolation smoothing) | degrees |
4. Blueprint Control
4.1 LiftingMachinery Function
Main control function for lifting machinery, called in the blueprint’s SuperDMXTick event:
| Input Parameter | Description |
|---|---|
| DmxXPos | DMX attribute for X-axis translation |
| DmxYPos | DMX attribute for Y-axis translation |
| DmxZPos | DMX attribute for Z-axis translation |
| DmxXRot | DMX attribute for Pitch rotation |
| DmxYRot | DMX attribute for Yaw rotation |
| DmxZRot | DMX attribute for Roll rotation |
4.2 Typical Blueprint
Event SuperDMXTick(DeltaTime)
│
└─ LiftingMachinery(PosX, PosY, PosZ, RotX, RotY, RotZ)
5. Usage Steps Summary (Lifting Machinery)
- Place Machinery — Drag SuperLiftingMachinery blueprint into the scene at the starting position
- Set Translation Range — MovingRange, e.g., (0, 0, 300) for Z-axis lifting 3 meters
- Set Rotation Range — RotRange (or enable PolarRotation for infinite rotation)
- Set Speed — PosSpeed / RotSpeed / PolarRotationSpeed
- Click BootRefresh — Auto-calculate start/end ranges
- Configure DMX — Set Universe, Start Address, Fixture Library
- Enable — Start = True
- Control from Console — Push corresponding channel faders
Part 2: Rail Machinery (SuperRailMachinery)
6. Basic Principles
Rail machinery adds a rail movement axis on top of lifting machinery, totaling 7 DOF:
Rail Layer (Level 1) Offset Layer (Level 2)
┌─────────────────┐ ┌─────────────────┐
│ RailPos │ │ PosX / PosY / PosZ│
│ Move along spline │ + │ RotX / RotY / RotZ│
│ │ │ In mount point local│
└────────┬────────┘ └────────┬────────┘
│ │
Move along rail path Apply local offset/rotation
(global motion) on top of rail position
Component Hierarchy:
Actor Root
└── RailSpline (spline curve — defines rail path)
└── RailMountPoint (mount point — moves along spline)
└── OffsetComponent (offset component — 6-axis local transform)
└── Child Actor/Light/Camera (mounted here)
7. Rail Components
7.1 RailSpline
| Parameter | Description |
|---|---|
| Type | USplineComponent |
| Location | A.RailComponents group |
| Editing Method | Select Actor in scene viewport → Select spline component → Drag control points |
7.2 RailMountPoint
| Parameter | Description |
|---|---|
| Type | USceneComponent |
| Location | A.RailComponents group |
| Behavior | Automatically moves along spline curve, position determined by RailPos DMX value |
7.3 OffsetComponent
| Parameter | Description |
|---|---|
| Type | USceneComponent |
| Location | A.RailComponents group |
| Behavior | Performs 6-axis offset/rotation in the mount point’s local coordinate system |
Important: Any child Actor (fixtures, cameras, etc.) that needs to follow rail motion should be mounted to OffsetComponent, not the Actor root component.
8. Property Details
8.1 Start & Initialization
| Parameter | Description | Default |
|---|---|---|
| Start | Start switch | False |
| Boot Refresh | Initialize range calculation (button) | — |
8.2 Rail Parameters
| Parameter | Description | Default |
|---|---|---|
| LockOrientationToRail | Lock orientation to rail tangent direction | False |
| ClosedLoop | Whether the rail is closed (ends connected) | False |
8.3 Offset Parameters
| Parameter | Editable | Description | Default | Unit |
|---|---|---|---|---|
| OffsetRange | ✅ | Offset range in mount point local coordinates | (0, 0, 0) | cm |
| InitialOffset | ❌ Read-only | Start value of offset range | — | cm |
| EndOffset | ❌ Read-only | End value of offset range | — | cm |
8.4 Speed Parameters
| Parameter | Description | Range | Default |
|---|---|---|---|
| RailSpeed | Rail movement interpolation speed | 0.0 - 10.0 | 1.0 |
| OffsetSpeed | Offset movement interpolation speed | 0.0 - 10.0 | 1.0 |
| RotSpeed | Rotation interpolation speed (absolute mode) | 0.0 - 10.0 | 1.0 |
| PolarRotationSpeed | Infinite rotation speed | 0.0 - 10.0 | 1.0 |
8.5 Control Parameters
| Parameter | Description | Range | Default |
|---|---|---|---|
| RailPos | Rail position (0=start, 1=end) | 0.0 - 1.0 | 0.0 |
| PosX | X-axis local offset | 0.0 - 1.0 | 0.5 |
| PosY | Y-axis local offset | 0.0 - 1.0 | 0.5 |
| PosZ | Z-axis local offset | 0.0 - 1.0 | 0.5 |
| RotX | Pitch rotation | 0.0 - 1.0 | 0.5 |
| RotY | Yaw rotation | 0.0 - 1.0 | 0.5 |
| RotZ | Roll rotation | 0.0 - 1.0 | 0.5 |
9. Blueprint Control
9.1 RailMachinery Function (7-axis full control)
| Input Parameter | Description |
|---|---|
| DmxRailPos | DMX attribute for rail position |
| DmxXPos | DMX attribute for X-axis offset |
| DmxYPos | DMX attribute for Y-axis offset |
| DmxZPos | DMX attribute for Z-axis offset |
| DmxXRot | DMX attribute for Pitch rotation |
| DmxYRot | DMX attribute for Yaw rotation |
| DmxZRot | DMX attribute for Roll rotation |
9.2 RailPositionOnly Function (rail position only)
| Input Parameter | Description |
|---|---|
| DmxRailPos | DMX attribute for rail position |
9.3 Typical Blueprint
Event SuperDMXTick(DeltaTime)
│
└─ RailMachinery(RailPos, PosX, PosY, PosZ, RotX, RotY, RotZ)
Or simplified:
Event SuperDMXTick(DeltaTime)
│
└─ RailPositionOnly(RailPos)
10. DMX Channel Planning Suggestions
Lifting Machinery (6 axes)
| Channel | Attribute | Precision | Description |
|---|---|---|---|
| 1-2 | PosX | 16-bit | X-axis translation |
| 3-4 | PosY | 16-bit | Y-axis translation |
| 5-6 | PosZ | 16-bit | Z-axis translation |
| 7-8 | RotX | 16-bit | Pitch rotation |
| 9-10 | RotY | 16-bit | Yaw rotation |
| 11-12 | RotZ | 16-bit | Roll rotation |
Rail Machinery (7 axes)
| Channel | Attribute | Precision | Description |
|---|---|---|---|
| 1-2 | RailPos | 16-bit | Rail position |
| 3-4 | PosX | 16-bit | X offset |
| 5-6 | PosY | 16-bit | Y offset |
| 7-8 | PosZ | 16-bit | Z offset |
| 9-10 | RotX | 16-bit | Pitch |
| 11-12 | RotY | 16-bit | Yaw |
| 13-14 | RotZ | 16-bit | Roll |
Tip: If not all axes are needed, define only the required attributes in the fixture library to save channels.
11. FAQ
Q: Machinery won’t move?
- Check if Start is True
- Check if BootRefresh was clicked
- Confirm DMX network configuration is correct
- Confirm corresponding attributes are defined in the fixture library
Q: Movement direction reversed?
Adjust the positive/negative sign of the corresponding axis in MovingRange / OffsetRange. For example, changing (0, 0, 300) to (0, 0, -300) reverses the Z-axis direction.
Q: Movement jittery?
Lower PosSpeed / RotSpeed / RailSpeed values (makes interpolation smoother), or use 16-bit precision DMX attributes.
Q: Rail machinery’s child Actor not following?
Confirm the child Actor is mounted to OffsetComponent rather than the Actor root component. OffsetComponent is the default attachment point returned by GetDefaultAttachComponent.
Next Steps: Read 11 - Laser System to learn about Beyond laser visualization.