Docs CHOPs & sensing

KinectSinglePlayer

Picks one player out of a Kinect skeleton stream: whoever stands inside the bounds you set becomes the active player, and their joints ride out as clean channels until they leave.

∿ CHOPs & sensing ◆ Patreon:Base

This tool unlocks with Patreon. It installs through the same picker as everything else and unlocks with the Patreon Base tier or higher, connected from inside TouchDesigner. Everything else in the toolkit stays free and MIT, and the membership is what keeps that work moving.

Join on Patreon → How unlocking works →

What it is

A Kinect CHOP reports every body it sees, and an installation usually wants exactly one. KinectSinglePlayer watches a chosen joint of every tracked player, keeps the players whose joint sits inside a box you define, and promotes one of them to the active player. That player's channels come out under a stable name, so the rest of the network never has to know which of the six Kinect slots they occupy. When they walk out of the box the next one in range takes over.

It is a member of the FNS operator family: pick it from the FNS tab of the OP Create dialog and it lands as one node.

Outputs

  • OUT_ACTIVE (CHOP): whether a player is active right now.
  • OUT_SINGLE_PLAYER (CHOP): the active player's joints.

Parameters

Custom

ControlType / defaultWhat it does
Kinect DataKinectdata operatorempty Kinect CHOP (or any CHOP with Kinect-style channels such as p1/spine:tx, p1/id) to pick the single player from. Output channels follow the locked template in null1 (TouchDesigner Kinect v2 names with world, depth-space, bone rotation and length channels); input channels outside that set are not passed through.
JointJoint textspine Kinect joint tested against the bounds, matched as the whole joint name (p/:tx/ty/tz), so 'spine' does not also catch 'spine_mid'. TouchDesigner's Kinect CHOP names: hip, spine, neck, head, shoulder_c, shoulder_l/_r, elbow_l/_r, wrist_l/_r, hand_l/_r, hip_l/_r, knee_l/_r, ankle_l/_r, foot_l/_r.
X BoundsBoundx number-0.5 X range (min, max) in metres, Kinect camera space (0 = straight in front of the sensor). The joint must sit inside it for the player to count as in range.
Y BoundsBoundy number-1 Y range (min, max) in metres, Kinect camera space (0 = sensor height, + = up). The joint must sit inside it for the player to count as in range.
Z BoundsBoundz number1 Z range (min, max) in metres: distance in front of the sensor (Kinect reports 0.5 to about 4.5). The joint must sit inside it for the player to count as in range.

Edit this page on GitHub →