Hands Generator
C Reference » Production Nodes Functionality

## Functions

XN_C_API XnStatus XN_C_DECL | xnCreateHandsGenerator (XnContext *pContext, XnNodeHandle *phHandsGenerator, XnNodeQuery *pQuery, XnEnumerationErrors *pErrors)
XN_C_API XnStatus XN_C_DECL | xnRegisterHandCallbacks (XnNodeHandle hInstance, XnHandCreate CreateCB, XnHandUpdate UpdateCB, XnHandDestroy DestroyCB, void *pCookie, XnCallbackHandle *phCallback)
XN_C_API void XN_C_DECL | xnUnregisterHandCallbacks (XnNodeHandle hInstance, XnCallbackHandle hCallback)
XN_C_API XnStatus XN_C_DECL | xnStopTracking (XnNodeHandle hInstance, XnUserID user)
XN_C_API XnStatus XN_C_DECL | xnStopTrackingAll (XnNodeHandle hInstance)
XN_C_API XnStatus XN_C_DECL | xnStartTracking (XnNodeHandle hInstance, const XnPoint3D *pPosition)
XN_C_API XnStatus XN_C_DECL | xnSetTrackingSmoothing (XnNodeHandle hInstance, XnFloat fFactor)

## Detailed Description

A Hands Generator node is a Generator that tracks hand points. It supports all Generator functions, and adds additional functions.

## Function Documentation

## xnCreateHandsGenerator()

XN_C_API XnStatus XN_C_DECL xnCreateHandsGenerator | ( | XnContext * | pContext,
|  | XnNodeHandle * | phHandsGenerator,
|  | XnNodeQuery * | pQuery,
|  | XnEnumerationErrors * | pErrors )

Creates an hands generator.

Parameters

  pContext | [in] The context in which to create the hands generator.
  phHandsGenerator | [out] A handle to the created hands generator.
  pQuery | [in] Optional. Can be used to select which hands generator to create. If not specified, this function may create any hands generator that is available.
  pErrors | [in] Optional. If provided, will be filled with information about hands generators that could not be created.

## xnRegisterHandCallbacks()

XN_C_API XnStatus XN_C_DECL xnRegisterHandCallbacks | ( | XnNodeHandle | hInstance,
|  | XnHandCreate | CreateCB,
|  | XnHandUpdate | UpdateCB,
|  | XnHandDestroy | DestroyCB,
|  | void * | pCookie,
|  | XnCallbackHandle * | phCallback )

Register to hands callbacks.

Parameters

  hInstance | [in] A handle to the instance
  CreateCB | [in] Callback to be called when a new hand is created
  UpdateCB | [in] Callback to be called when an existing hand has a new position
  DestroyCB | [in] Callback to be called when an existing hand has vanished
  pCookie | [in] User's cookie, to be delivered to the callbacks
  phCallback | [out] The handle to these callbacks, to allow unregistration

## xnSetTrackingSmoothing()

XN_C_API XnStatus XN_C_DECL xnSetTrackingSmoothing | ( | XnNodeHandle | hInstance,
|  | XnFloat | fFactor )

Change smoothing factor.

Parameters

  hInstance | [in] A handle to the instance
  fFactor | [in] Smoothing factor, in the range 0..1. 0 Means no smoothing, 1 means infinite smoothing. Inside the range is generator dependent.

## xnStartTracking()

XN_C_API XnStatus XN_C_DECL xnStartTracking | ( | XnNodeHandle | hInstance,
|  | const XnPoint3D * | pPosition )

Start tracking at a specific position.

Parameters

  hInstance | [in] A handle to the instance
  pPosition | [in] The position at which there is a new hand

## xnStopTracking()

XN_C_API XnStatus XN_C_DECL xnStopTracking | ( | XnNodeHandle | hInstance,
|  | XnUserID | user )

Stop tracking a specific hand.

Parameters

  hInstance | [in] A handle to the instance
  user | [in] The hand to stop tracking

## xnStopTrackingAll()

XN_C_API XnStatus XN_C_DECL xnStopTrackingAll | ( | XnNodeHandle | hInstance | ) |

Stop tracking all hands.

Parameters

  hInstance | [in] A handle to the instance

## xnUnregisterHandCallbacks()

XN_C_API void XN_C_DECL xnUnregisterHandCallbacks | ( | XnNodeHandle | hInstance,
|  | XnCallbackHandle | hCallback )

Unregister from hands callbacks.

Parameters

  hInstance | [in] A handle to the instance
  hCallback | [in] The handle received from registration