Skip to main content
Documentation

Leap Motion Input

Enable Ultraleap hand tracking and feed it into effects through the Leap nodes.

Leap Motion turns an Ultraleap tracking sensor into a live input source. The sensor watches the space above it and reports the position and pose of each hand it sees. Spectralite normalizes that data and hands it to the effect engine, where the Leap nodes expose it inside the Node Editor so hand movement can drive brightness, color, position, or any other value in a graph.

Hand tracking runs only while the Ultraleap Tracking Service is installed and running and a supported sensor is connected. Without that software the input stays idle and the Leap nodes read zero.

Open the dialog

Open the dialog from Edit > Inputs > Leap Motion. Like the other input dialogs, it is non-modal, so it stays open while you work elsewhere in the app.

Leap Motion input enabled turns tracking on and off. While it is off, the Leap nodes still exist in a graph but every output reads zero, so nothing responds to hand movement.

Below the checkbox, a status line reports what the tracking runtime is doing:

  • Active names the connected sensor and confirms tracking is running.
  • No Leap Motion device detected means the software is ready but no sensor is plugged in.
  • If the runtime is missing, the line offers an Install Ultraleap button that opens Ultraleap's download page.
  • If the runtime is installed but its service is stopped, the line offers an Open Ultraleap button instead.
  • An error state shows the message the runtime reported.

Interaction box

When tracking is enabled, the dialog shows the Interaction box (mm) controls: a tracking volume measured in millimetres from the sensor. Six fields set its bounds, Min X, Max X, Min Y, Max Y, Min Z, and Max Z. The default box runs from -250 to 250 on X, 100 to 600 on Y, and 100 to 500 on Z.

The box does two things. It sets the reach the sensor pays attention to, and it defines the range that positions are normalized against. A hand at the box's minimum on an axis reads 0 there, a hand at the maximum reads 1, so the position outputs on the Leap nodes always arrive in the 0 to 1 range the shader expects. Widen the box for a large gesture area, or tighten it so a small hand movement sweeps the whole 0 to 1 range.

Reset to defaults restores the six fields to the values above.

The interaction box only affects the normalized position outputs. Raw measures reported in millimetres, radians, or seconds (velocity, pinch distance, grab angle, visible time) ignore the box.

The Leap nodes

Five input nodes read the tracked hands inside an effect graph. Each one picks a hand with a Handedness control set to Left or Right. Handedness is fixed when you build the patch and cannot be wired from another node, so a graph that needs both hands uses two nodes. Every node also carries a Present output that reads 1 while its hand is tracked and 0 otherwise, which lets an effect fall back gracefully when a hand leaves the sensor's view. All outputs are the standard Number and Vector data types, so they wire into the rest of the graph like any other value. For the full node reference, see Input nodes.

Leap Palm

The starting point for most hand effects. Leap Palm reports the palm's normalized Palm Position (X, Y, Z as a vector in 0 to 1), plus a Grab value and a Pinch value that each run from 0 when the hand is open to 1 when it is closed. Wire Palm Position into a position based effect to follow the hand, or use Grab or Pinch as a one handed fader.

Leap Digits

Per finger extension state. Leap Digits outputs Thumb, Index, Middle, Ring, and Pinky, each 1 when the tracking model sees that finger as straight and 0 when it is curled. Extended Count totals how many fingers are extended, from 0 to 5. Open reads 1 only when all five are extended, and Fist reads 1 only when none are. Open and Fist both read 0 while no hand is tracked, so they work as clean gesture triggers.

Leap Motion

Motion and analog gesture measures in real world units. Velocity is the palm's motion in millimetres per second, given as a signed direction vector rather than a position. Pinch Distance is the thumb to index gap in millimetres, and Grab Angle is the average finger to palm angle in radians, running from 0 with an open hand to about pi with a fist. Visible Time is how long the hand has been tracked, in seconds, which is useful for fading an effect in as a hand settles.

Leap Pose

Full hand pose on top of the basic palm data. Leap Pose adds a smoothed Stable Position that lags the raw Palm Position, orientation vectors Palm Normal and Palm Direction whose components run around -1 to 1, and the palm orientation quaternion as Orientation X, Orientation Y, Orientation Z, and Orientation W. It also exposes the five fingertip positions, Thumb Tip through Pinky Tip, each normalized 0 to 1 by the interaction box, alongside the same Grab and Pinch measures as Leap Palm.

Leap Raw

Direct access to a single bone joint of the skeleton. Leap Raw adds three more fixed dropdowns beside Handedness: Finger (Thumb to Pinky), Bone (Metacarpal, Proximal, Intermediate, or Distal), and Joint (Prev or Next, the bone's near or far end). It outputs that joint's normalized Position (vector, 0 to 1), the bone's orientation quaternion as Rotation X to Rotation W, the bone Width in millimetres, and an Extended flag that reads 1 when the selected finger is straight. Raw millimetre joint positions are not exposed; the joint position always arrives normalized by the interaction box.

Handedness, and on Leap Raw the finger, bone, and joint selectors, are set once when the patch is built. Changing one recompiles the effect, so they cannot be animated from the graph.

  • Input nodes: the full node reference, including the Leap nodes.
  • Node data types: how the Node Editor colors ports and wires by type.
  • Inputs overview: the other input sources Spectralite can bring into a show.