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 passes it to the Leap nodes in the Node Editor. There, hand movement can drive brightness, color, position, or any other value in a graph.
Hand tracking needs the Ultraleap Tracking Service installed and running, and a supported sensor 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 and stays open while you work elsewhere in the app.
Leap Motion input enabled turns tracking on and off. While it is off, Leap nodes stay in your graphs but every output reads zero, so nothing responds to hand movement.
A status line below the checkbox reports the state of the tracking runtime.
- Active names the connected sensor and confirms that tracking is on.
- 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 on, the dialog shows the Interaction box (mm) controls. They define a tracking volume, measured in millimeters 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 sets the space the sensor tracks, and Spectralite normalizes positions against it. A hand at the box's minimum on an axis reads 0 on that axis, and a hand at the maximum reads 1. The position outputs on the Leap nodes therefore always arrive in the 0 to 1 range that effects expect. 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. The box does not affect raw measures reported in millimeters, radians, or seconds (velocity, pinch distance, grab angle, visible time).
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. You set Handedness when you build the patch and cannot wire it from another node, so a graph that needs both hands uses two nodes.
Every node also has a Present output that reads 1 while its hand is tracked and 0 otherwise. With it, an effect can switch to a fallback when a hand leaves the sensor's view. All outputs use the standard Number and Vector data types and wire into the rest of the graph like any other value. For the full node reference, see Input nodes.
Leap Palm
Most hand effects start with Leap Palm. The node reports the palm's normalized Palm Position (X, Y, Z as a vector in 0 to 1). It also reports a Grab value and a Pinch value. Each runs 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
Leap Digits reports whether each finger is extended. It 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 neither fires without a hand present.
Leap Motion
Leap Motion outputs motion and continuous gesture measures in real-world units. Velocity is the palm's motion in millimeters per second, given as a signed direction vector. Pinch Distance is the gap between thumb and index finger in millimeters. Grab Angle is the average angle between fingers and palm in radians. It runs from 0 with an open hand to about pi with a fist.
Visible Time counts the seconds since tracking of the hand started. Use it to fade an effect in as a hand settles.
Leap Pose
Leap Pose reports the full hand pose. It adds three outputs:
- A smoothed Stable Position that lags the raw Palm Position.
- The orientation vectors Palm Normal and Palm Direction, whose components run around -1 to 1.
- The palm orientation quaternion as Orientation X, Orientation Y, Orientation Z, and Orientation W.
The node also outputs the five fingertip positions, Thumb Tip through Pinky Tip. The interaction box normalizes each one to 0 to 1. Like Leap Palm, Leap Pose outputs the Grab and Pinch measures.
Leap Raw
Leap Raw reads a single bone joint of the hand skeleton. It adds three more fixed dropdowns beside Handedness:
- Finger: Thumb to Pinky.
- Bone: Metacarpal, Proximal, Intermediate, or Distal.
- Joint: Prev or Next, the bone's near or far end.
Leap Raw has these outputs:
- Position: the joint's normalized position (vector, 0 to 1).
- Rotation X to Rotation W: the bone's orientation quaternion.
- Width: the bone width in millimeters.
- Extended: a flag that reads 1 when the selected finger is straight.
The interaction box always normalizes the joint position.
You set Handedness once, when you build the patch. The same applies to the finger, bone, and joint selectors on Leap Raw. When you change one of these controls, Spectralite recompiles the effect, so you cannot animate them from the graph.
Related
- 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.