← Manual

Targets and aiming

Points in the room that fixtures can be aimed at or bound to.

A target is a named XYZ point in stage space. Once a fixture is calibrated, you can tell it to point at a target by name rather than typing raw pan/tilt angles - and if the target’s position is updated later, any cue that references it re-solves automatically.


Coordinate system

LMX uses a right-handed coordinate system with the following conventions:

AxisDirection
+XStage left
+YUpstage (away from audience)
+ZUp

Positions are in metres. All POS x y z values follow this convention.


In the GUI

Targets live on the Targets tab. The table lists your targets with their XYZ position and calibration slot; the buttons below manage them.

The Targets tab: the target table and its controls

Create a target

Click Add Target. A new target row appears, which you then position by editing its X / Y / Z cells (in metres) - or by capturing the current aim with Capture.

The 'Add Target' button

Equivalent command: CREATE TARGET [<id>] NAME "…" POS x y z [CALIBRATE <slot>].

Edit a target’s name or position directly in its table cells: double-click a Name / X / Y / Z cell to edit it, exactly as in the fixtures table. Enter commits, Escape puts the old value back, and the desk re-solves any cue that references the target. Delete a target with the trash button (DELETE TARGET <id|name> [FORCE SNAPSHOT|MATERIALIZE]).

Double-click a target’s ID cell - or its icon in the Icons view - to open the live target window for it (SHOW TARGET WINDOW <id>), where you can drag the target around the stage with the fixtures following it. (The Name / X / Y / Z cells are where double-click means “edit this value”, so the gesture lives on the rest of the row.)

List and Icons

The List / Icons buttons under the target list switch between the table and a grid of generated icons. Each icon is a bird’s-eye plan of your stage: a grey box for the stage itself, grey outlines for any scene objects you have defined (trusses and fixtures are left out so they cannot bury the target), and a blue dot for the target, with its exact XYZ underneath.

Icons show the target’s saved position. Dragging a target around the target window moves the live one - output and the 3D view follow the mouse - but the icon only moves when you press Save, so it never advertises a position that closing the window would throw away.

The choice of view is remembered between sessions and is not part of the show.


Full workflow: calibrate → aim → cue

The complete XYZ workflow has three phases:

Phase 1 - Create targets

Define one target for each physical point on the stage you want to use. You need four calibration targets (slots 1–4) that span the rig’s working area. Four points on the floor work fine; spreading them in height as well (say, one on a riser) gives the solver better accuracy. These tell the solver where the fixture physically is in 3D space.

CREATE TARGET 1 NAME "Cal FL"  POS  9.0  2.0 0.0 CALIBRATE 1
CREATE TARGET 2 NAME "Cal FR"  POS  3.0  2.0 0.0 CALIBRATE 2
CREATE TARGET 3 NAME "Cal BL"  POS  9.0  7.0 0.0 CALIBRATE 3
CREATE TARGET 4 NAME "Cal BR"  POS  3.0  7.0 0.0 CALIBRATE 4

Additional non-calibration targets are your working focus points:

CREATE TARGET 10 NAME "Vocal spot"    POS  6.0 3.0 0.0
CREATE TARGET 11 NAME "Drum kit"      POS  7.5 5.0 0.0
CREATE TARGET 12 NAME "Centre stage"  POS  6.0 4.0 0.0

Phase 2 - Calibrate fixtures

Mark your fixture’s own position in the patch so the solver knows where it hangs. Edit the fixture (via the GUI fixture editor or UPDATE FIXTURE) and set its POS x y z and ORI yaw pitch roll to the rig position.

ADD FIXTURE 1 TYPE Chauvet Professional Rogue R3 Spot AT 1/1 POS 4.0 0.0 6.0 ORI 0 -30 0

Then run CALIBRATE to open the calibration window. In the window, point the fixture manually at each calibration target in turn and press Capture for each slot. When all four slots are captured, press Solve - the solver derives the fixture’s precise hanging position and orientation from the four known ground-truth positions.

CALIBRATE

CALIBRATE requires the four calibration target slots to be defined (see Phase 1) and the GUI to be running.

Phase 3 - Aim fixtures at targets

Option A: One-shot solve into the programmer (AIM)

AIM FIXTURE … AT TARGET … solves the pan/tilt angles immediately and writes them into the programmer as concrete values. Use this for a quick manual focus.

AIM FIXTURE 1 AT TARGET "Vocal spot"
AIM FIXTURE SELECTED AT TARGET 12

The programmer then shows explicit pan/tilt values, not a live reference.

Option B: Live target reference in the programmer

CAPTURE AT TARGET <id|name> attaches a live reference to the target in the programmer for the current selection. Name the fixtures explicitly with CAPTURE FIXTURE <ids...> AT TARGET <id|name>. The pan/tilt values resolve each frame, so:

  • If the target position is updated later, all cues that use it update automatically.
  • After re-calibrating a fixture, captured cues re-solve without re-storing.
CAPTURE AT TARGET "Vocal spot"                  # attach reference to the selection
CAPTURE FIXTURE 1 THRU 8 + 12 AT TARGET "Vocal spot"   # or name fixtures explicitly
CAPTURE GROUP 5 AT TARGET "Vocal spot"          # or a group, resolved to its members
STORE CUE 10 "Vocal look"

CAPTURE reads as the live-binding counterpart of AIM, which aims once and lets go:

AIM     FIXTURE 5 6 7 AT TARGET 1   # solve pan/tilt once, then release
CAPTURE FIXTURE 5 6 7 AT TARGET 1   # keep them bound to the target

To remove a live reference and go back to raw angles:

RELEASE FROM TARGET "Vocal spot"                # release the current selection
RELEASE FIXTURE 5 6 7 FROM TARGET "Vocal spot"  # or name fixtures explicitly
RELEASE GROUP 5 FROM TARGET "Vocal spot"        # or a group

Editing a cue’s target bindings directly

CAPTURE and RELEASE work on the programmer, so changing a stored cue means loading it back, editing, and re-storing. The CUE forms edit the cue in place instead - same selection clause, no programmer involved:

CUE 10 CAPTURE FIXTURE 5 AT TARGET 1        # cue 10 now aims fixture 5 at target 1
CUE 10 CAPTURE GROUP 5 AT "Vocal spot"      # group resolves to its members
CUE 10 CAPTURE AT TARGET 1                  # binds the current selection
CUE 10 RELEASE FIXTURE 5 FROM TARGET 1      # unbind one fixture
CUE 10 RELEASE FROM TARGET 1                # drop the whole binding (ALL is a synonym)
CUE 10 RELEASE SELECTED FROM TARGET 1       # ... or just the current selection
CUE 10 PART 2 CAPTURE FIXTURE 5 AT TARGET 1 # a specific part

A binding left with no fixtures is dropped, so the cue stops referencing the target at all. CAPTURE lands on part 1 unless PART names another - the same routing STORE/UPDATE CUE use for target references - while RELEASE covers every part of the cue unless PART narrows it. A fixture already captured by a different target in that part is left alone with a warning, exactly as in the programmer.

The one place the cue form reads differently from the programmer’s RELEASE: naming no fixtures releases the cue’s whole binding, not the current selection. A stored cue holds its own fixture list, so the desk’s live selection has no bearing on it - SELECTED asks for the selection explicitly when you do want it.


Full CLI command reference

CREATE  TARGET [<id>] [NAME <name>] POS <x> <y> <z> [CALIBRATE <1-4>]
UPDATE  TARGET <id|name> POS <x> <y> <z>
UPDATE  TARGET <id|name> NAME <name>
UPDATE  TARGET <id|name> CALIBRATE <1-4>|REMOVE
CAPTURE [FIXTURE <ids>] [GROUP <ids>] [HEAD <f.h>] AT   [TARGET] <id|name>
CAPTURE AT   TARGET <id|name>                     (captures the current selection)
RELEASE [FIXTURE <ids>] [GROUP <ids>] [HEAD <f.h>] FROM [TARGET] <id|name>
RELEASE FROM TARGET <id|name>                     (releases the current selection)

CUE <n> [PART <p>] CAPTURE [<selection>] AT   [TARGET] <id|name>
CUE <n> [PART <p>] RELEASE [<selection>] FROM [TARGET] <id|name>
CUE <n> [PART <p>] RELEASE FROM TARGET <id|name>  (releases the cue's whole binding)
LIST    TARGETS
DELETE  TARGET <id|name> [FORCE SNAPSHOT|MATERIALIZE]
SHOW    TARGET <id|name>
WHERE   TARGET <id|name>

AIM     FIXTURE <ids...|SELECTED> AT TARGET <id|name>
AIM     GROUP <ids...> AT TARGET <id|name>
AIM     AT TARGET <id|name>                    (aims the current selection)

CALIBRATE    (opens the calibration GUI - requires four calibration slots)

Every target command follows the desk’s usual VERB NOUN shape, so it reads the same way as DELETE FIXTURE, LIST GROUPS or AIM FIXTURE … AT TARGET ….

CAPTURE, RELEASE and AIM all take the same selection clause as SELECT: FIXTURE, GROUP and HEAD are sticky keywords that may appear in any order and repeat, ids accept + / THRU expressions, and target names are matched case-insensitively.

The FIXTURE and TARGET keywords are both optional, so these are all the same command:

CAPTURE FIXTURE 1 THRU 4 AT TARGET 3
CAPTURE 1 THRU 4 AT TARGET 3
CAPTURE 1 THRU 4 AT 3

A GROUP clause resolves to the group’s member fixtures, and a HEAD ref resolves to its parent fixture. A target owns fixtures, not a group reference - so unlike a cue or a preset, capturing a group is always absolute, and later edits to the group’s membership do not change what the target holds:

CAPTURE GROUP 5 AT TARGET 1
CAPTURE 1 THRU 4 GROUP 5 AT TARGET 1   # mix both; order does not matter
AIM     1 THRU 4 AT 3                  # AIM takes the identical clause

The same applies when you capture the current selection: a selected group is resolved to its members regardless of CONFIG GROUP REFERENCE|ABSOLUTE.

Aliases. TARGET CREATE, STORE TARGET and RECORD TARGET are accepted for CREATE TARGET; TARGET UPDATE, TARGET LIST and TARGET DELETE are accepted for their canonical spellings. TARGET CAPTURE and TARGET RELEASE were removed - use CAPTURE … AT TARGET and RELEASE … FROM TARGET.

DELETE TARGET refuses to delete a target that is referenced by a cue. To delete anyway, choose what happens to those cue references:

  • FORCE SNAPSHOT - each cue keeps an XYZ reference, frozen to the target’s final position (no longer linked to the deleted target). Fixtures still re-solve to that point after re-calibration.
  • FORCE MATERIALIZE - each cue reference is replaced by the explicit pan/tilt values solved at delete time.

DELETE TARGET also takes an id list, so a block of targets goes in one command - DELETE TARGET 1 THRU 8. A target named rather than numbered is always a single target (DELETE TARGET "Vocal spot"). Any target in the range that a cue still references is skipped with its reason and the rest are deleted; re-run with FORCE SNAPSHOT/FORCE MATERIALIZE to take those too.


Worked example - vocalist spot in a cue

# 1. Define the stage point
CREATE TARGET 20 NAME "Vocalist" POS 6.0 3.5 0.0

# 2. Capture reference for fixture 5 into the programmer
CAPTURE FIXTURE 5 AT TARGET 20

# 3. Confirm the resolved angles
SHOW TARGET 20

# 4. Store the cue
INTENSITY 100
STORE CUE 5 "Vocal spot"
CLEAR PROGRAMMER

# 5. Move the vocalist's mic stand forward, update the target
TARGET UPDATE "Vocalist" POS 6.0 3.0 0.0
# Cue 5 now re-solves to the new position automatically - no re-store needed.

Behaviour when a target is unreachable

If the solved pan/tilt falls outside the fixture’s physical range, the output depends on CONFIG TARGET UNREACHABLE:

ModeBehaviour
ON (default)Drives the fixture as close as it can get (angles clamped to the physical range); intensity is untouched
OFFDrives as close as it can get, but forces the fixture’s intensity to 0 while the target is unreachable - the fixture blacks out rather than pointing at the wrong place
FADEDims the fixture progressively as the solved angles approach a physical limit: intensity scales from full down to 0 across the safezone band
CONFIG TARGET UNREACHABLE ON
CONFIG TARGET UNREACHABLE OFF
CONFIG TARGET UNREACHABLE FADE
CONFIG TARGET SAFEZONE 5     # width in degrees of the FADE dimming band (default 10)

INSPECT FIXTURE <id> reports the reachability state either way.


Moving between two targets

When one cue captures a fixture at a target and the next cue that captures it uses a different position, the beam travels the straight line between them at constant speed, rather than fading pan and tilt separately (which bows the path and varies its speed). LMX works out in advance whether the fixture can perform each such move and quietly falls back to the ordinary pan/tilt fade when it cannot - for instance when the path would run past a pan limit, or when a line passing close under the fixture would need a faster pan sweep than a head can track.

CONFIG LINEARMOVE ON            # default
CONFIG LINEARMOVE OFF
CONFIG LINEARMOVE MAXPANRATE 300   # degrees per second, default 300

SHOW CUE <n> reports, per captured fixture, whether the move to the next capturing cue is linear and why not if it isn’t. Full detail - including the neighbour rules and the fire-time checks - is in Configuration (CONFIG LINEARMOVE).


Fixture pose metadata

For the solver to work, each fixture must know where it hangs. Set this at patch time:

ADD FIXTURE 1 TYPE Chauvet Professional Rogue R3 Spot AT 1/1 POS 4.0 0.0 6.0 ORI 0 -30 0

Or update later:

UPDATE FIXTURE 1 POS 4.0 0.0 6.0
UPDATE FIXTURE 1 ORI 0 -30 0

ORI yaw pitch roll is in degrees, right-hand rule around each axis. yaw rotates around Z (up), pitch around Y, roll around X; rotations are applied roll, then pitch, then yaw.


Diagnostics

LIST TARGETS                     # list all targets with positions and calibration slot
SHOW TARGET <id|name>            # full details: position, calibration slot, usage count
INSPECT FIXTURE <id> CAP pan     # show how pan/tilt was solved for a target reference
WHERE TARGET <id|name>           # list cue parts that reference this target

Related topics