12 #error "You must include nuiapi.h rather than including nuiskeleton.h directly"
20 #define FLT_EPSILON 1.192092896e-07F
46 #ifndef __NuiSensor_h__
61 #ifndef _Vector4_Functions_
62 #define _Vector4_Functions_
64 inline XMVECTOR XMVectorFromVector4(
const Vector4& vec4)
66 return XMVectorSet(vec4.
x, vec4.
y, vec4.
z, vec4.
w);
69 inline Vector4 XMVectorToVector4(FXMVECTOR V)
71 Vector4 vec4 = { XMVectorGetX(V), XMVectorGetY(V), XMVectorGetZ(V), XMVectorGetW(V) };
108 #define NUI_SKELETON_COUNT 6
110 #endif // __NuiSensor_h__
116 #define NUI_SKELETON_MAX_TRACKED_COUNT 2
122 #define NUI_SKELETON_INVALID_TRACKING_ID 0
124 #ifndef __NuiSensor_h__
150 #endif // __NuiSensor_h__
161 #define NUI_SKELETON_QUALITY_CLIPPED_RIGHT 0x00000001
162 #define NUI_SKELETON_QUALITY_CLIPPED_LEFT 0x00000002
163 #define NUI_SKELETON_QUALITY_CLIPPED_TOP 0x00000004
164 #define NUI_SKELETON_QUALITY_CLIPPED_BOTTOM 0x00000008
166 #ifndef __NuiSensor_h__
167 #pragma pack(push, 16)
187 #endif // __NuiSensor_h__
190 #define NUI_SKELETON_FRAME_FLAG_SEATED_SUPPORT_ENABLED 0x00000008
193 #define NUI_SKELETON_TRACKING_FLAG_SUPPRESS_NO_FRAME_DATA 0x00000001
194 #define NUI_SKELETON_TRACKING_FLAG_TITLE_SETS_TRACKED_SKELETONS 0x00000002
195 #define NUI_SKELETON_TRACKING_FLAG_ENABLE_SEATED_SUPPORT 0x00000004
196 #define NUI_SKELETON_TRACKING_FLAG_ENABLE_IN_NEAR_RANGE 0x00000008
198 #ifndef __NuiSensor_h__
212 #endif // __NuiSensor_h__
264 _In_opt_ HANDLE hNextFrameEvent,
318 _In_ DWORD dwMillisecondsToWait,
357 #define NUI_CAMERA_DEPTH_IMAGE_TO_SKELETON_MULTIPLIER_320x240 (NUI_CAMERA_DEPTH_NOMINAL_INVERSE_FOCAL_LENGTH_IN_PIXELS)
362 #define NUI_CAMERA_SKELETON_TO_DEPTH_IMAGE_MULTIPLIER_320x240 (NUI_CAMERA_DEPTH_NOMINAL_FOCAL_LENGTH_IN_PIXELS)
404 NuiTransformSkeletonToDepthImage(
406 _Out_ LONG *plDepthX,
407 _Out_ LONG *plDepthY,
408 _Out_ USHORT *pusDepthValue,
412 if((plDepthX ==
NULL) || (plDepthY ==
NULL) || (pusDepthValue ==
NULL))
434 *plDepthX =
static_cast<INT
>( width / 2 + vPoint.x * (width/320.f) * NUI_CAMERA_SKELETON_TO_DEPTH_IMAGE_MULTIPLIER_320x240 / vPoint.z + 0.5f);
435 *plDepthY =
static_cast<INT
>( height / 2 - vPoint.y * (height/240.f) * NUI_CAMERA_SKELETON_TO_DEPTH_IMAGE_MULTIPLIER_320x240 / vPoint.z + 0.5f);
442 *pusDepthValue =
static_cast<USHORT
>(vPoint.z *1000) << 3;
488 NuiTransformSkeletonToDepthImage(
490 _Out_ LONG *plDepthX,
491 _Out_ LONG *plDepthY,
492 _Out_ USHORT *pusDepthValue
527 NuiTransformSkeletonToDepthImage(
529 _Out_ FLOAT *pfDepthX,
530 _Out_ FLOAT *pfDepthY,
534 if((pfDepthX ==
NULL) || (pfDepthY ==
NULL))
555 *pfDepthX = width / 2 + vPoint.x * (width/320.f) * NUI_CAMERA_SKELETON_TO_DEPTH_IMAGE_MULTIPLIER_320x240 / vPoint.z;
556 *pfDepthY = height / 2 - vPoint.y * (height/240.f) * NUI_CAMERA_SKELETON_TO_DEPTH_IMAGE_MULTIPLIER_320x240 / vPoint.z;
591 NuiTransformSkeletonToDepthImage(
593 _Out_ FLOAT *pfDepthX,
594 _Out_ FLOAT *pfDepthY
617 NuiTransformDepthImageToSkeleton(
620 _In_ USHORT usDepthValue,
633 FLOAT fSkeletonZ =
static_cast<FLOAT
>(usDepthValue >> 3) / 1000.0f;
641 FLOAT fSkeletonX = (lDepthX - width/2.0f) * (320.0f/width) * NUI_CAMERA_DEPTH_IMAGE_TO_SKELETON_MULTIPLIER_320x240 * fSkeletonZ;
642 FLOAT fSkeletonY = -(lDepthY - height/2.0f) * (240.0f/height) * NUI_CAMERA_DEPTH_IMAGE_TO_SKELETON_MULTIPLIER_320x240 * fSkeletonZ;
670 NuiTransformDepthImageToSkeleton(
673 _In_ USHORT usDepthValue
763 _Check_return_ STDMETHODIMP
765 _In_
const NUI_SKELETON_DATA *pSkeletonData,
struct _NUI_SKELETON_BONE_ORIENTATION NUI_SKELETON_BONE_ORIENTATION
NUI_SKELETON_BONE_ROTATION hierarchicalRotation
struct _NUI_SKELETON_BONE_ROTATION NUI_SKELETON_BONE_ROTATION
FLOAT fMaxDeviationRadius
enum _NUI_SKELETON_POSITION_INDEX NUI_SKELETON_POSITION_INDEX
Vector4 rotationQuaternion
_Check_return_ STDMETHODIMP NuiSkeletonCalculateBoneOrientations(_In_ const NUI_SKELETON_DATA *pSkeletonData, _Out_cap_c_(NUI_SKELETON_POSITION_COUNT) NUI_SKELETON_BONE_ORIENTATION *pBoneOrientations)
Calculate bone orientations for a skeleton.
NUI_SKELETON_POSITION_INDEX startJoint
NUI_SKELETON_TRACKING_STATE eTrackingState
struct _NUI_TRANSFORM_SMOOTH_PARAMETERS NUI_TRANSFORM_SMOOTH_PARAMETERS
NUI_SKELETON_DATA SkeletonData[6]
_Check_return_ HRESULT NUIAPI NuiSkeletonSetTrackedSkeletons(_In_count_c_(2) DWORD TrackingIDs[2])
Sets an array of IDs for skeletal tracking.
NUI_SKELETON_POSITION_TRACKING_STATE eSkeletonPositionTrackingState[20]
_Check_return_ HRESULT NUIAPI NuiTransformSmooth(_Inout_ NUI_SKELETON_FRAME *pSkeletonFrame, _In_opt_ CONST NUI_TRANSFORM_SMOOTH_PARAMETERS *pSmoothingParams)
Filters skeleton positions to reduce jitter between frames.
NUI_SKELETON_POSITION_INDEX endJoint
enum _NUI_SKELETON_TRACKING_STATE NUI_SKELETON_TRACKING_STATE
void NuiImageResolutionToSize(_In_ NUI_IMAGE_RESOLUTION res, _Out_ DWORD &refWidth, _Out_ DWORD &refHeight)
Converts the resolution to a size.
Vector4 SkeletonPositions[20]
enum _NUI_SKELETON_POSITION_TRACKING_STATE NUI_SKELETON_POSITION_TRACKING_STATE
_Check_return_ HRESULT NUIAPI NuiSkeletonTrackingEnable(_In_opt_ HANDLE hNextFrameEvent, _In_ DWORD dwFlags)
Enables skeleton tracking.
_NUI_SKELETON_POSITION_TRACKING_STATE
enum _NUI_SKELETON_POSITION_INDEX NUI_SKELETON_POSITION_INDEX
enum _NUI_SKELETON_POSITION_TRACKING_STATE NUI_SKELETON_POSITION_TRACKING_STATE
enum _NUI_IMAGE_RESOLUTION NUI_IMAGE_RESOLUTION
struct _NUI_SKELETON_FRAME NUI_SKELETON_FRAME
#define NUI_SKELETON_MAX_TRACKED_COUNT
LARGE_INTEGER liTimeStamp
#define NUI_SKELETON_COUNT
_Check_return_ HRESULT NUIAPI NuiSkeletonTrackingDisable()
Disables skeleton tracking.
_NUI_SKELETON_POSITION_INDEX
_Check_return_ HRESULT NUIAPI NuiSkeletonGetNextFrame(_In_ DWORD dwMillisecondsToWait, _Inout_ NUI_SKELETON_FRAME *pSkeletonFrame)
Gets the next frame of data from the skeleton stream.
NUI_SKELETON_BONE_ROTATION absoluteRotation
enum _NUI_SKELETON_TRACKING_STATE NUI_SKELETON_TRACKING_STATE
__declspec(selectany) DWORD NuiSkeletonDataSize
_NUI_SKELETON_TRACKING_STATE
struct _NUI_SKELETON_DATA NUI_SKELETON_DATA