113 lines
3.3 KiB
C++
113 lines
3.3 KiB
C++
#pragma once
|
|
#ifndef __KINECTGESTUREDETECTOR_H__
|
|
#define __KINECTGESTUREDETECTOR_H__
|
|
|
|
#if defined( GESTURE_TRAINER )
|
|
|
|
#if defined( TARGET_X360 )
|
|
|
|
#include <windows.h>
|
|
#include <XnaMath.h>
|
|
#include <NuiTools.h>
|
|
#define VECTOR_TYPE XMVECTOR
|
|
|
|
#elif defined( TARGET_DURANGO )
|
|
|
|
#include <DirectXMath.h>
|
|
|
|
#elif defined( TARGET_ORBIS )
|
|
|
|
#include "SK_iisu/PS4/include/HumanTrackingCTypes.h"
|
|
#include "Kinect/PS4/commontypes.h"
|
|
|
|
#elif defined ( TARGET_WIN32 )
|
|
#include <DirectXMath.h>
|
|
#else
|
|
#error unsuported platform
|
|
#endif
|
|
|
|
#else // defined( GESTURE_TRAINER )
|
|
|
|
#if defined( _XBOX ) || defined( ITF_X360 )
|
|
|
|
#include <xtl.h>
|
|
#include <XnaMath.h>
|
|
#include <nuiapi.h>
|
|
#define VECTOR_TYPE XMVECTOR
|
|
|
|
#elif defined( DURANGO ) || defined( ITF_DURANGO )
|
|
|
|
#include <windows.h>
|
|
#include <Kinect/Durango/NuiCore.h>
|
|
|
|
#elif defined( __ORBIS__ ) || defined( ITF_ORBIS )
|
|
|
|
#include "SK_iisu/PS4/include/HumanTrackingCTypes.h"
|
|
#include "Kinect/PS4/commontypes.h"
|
|
|
|
#elif defined ( WIN32 ) ||defined( ITF_WIN32)
|
|
|
|
#include <windows.h>
|
|
#include <DirectXMath.h>
|
|
#include <NuiApi.h>
|
|
#define VECTOR_TYPE XMVECTOR
|
|
|
|
#else
|
|
#error unsuported platform
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#define INVALID_GESTURE_HANDLE ( 0xffffffff )
|
|
|
|
#define KINECT_GESTURE_VELOCITY_GRID_X (3)
|
|
#define KINECT_GESTURE_VELOCITY_GRID_Y (3)
|
|
|
|
#define KINECT_GESTURE_VELOCITY_GRID_WIDTH ( 2.0f )
|
|
#define KINECT_GESTURE_VELOCITY_GRID_HEIGHT ( 2.0f )
|
|
|
|
#define KINECT_GESTURE_MAX_SIMULTANEOUS_GESTURES ( 10 ) // IDENTITY_MAX_IDENTITIES
|
|
|
|
namespace KinectGesture
|
|
{
|
|
typedef unsigned int GestureHandle;
|
|
|
|
// aligned malloc
|
|
typedef void* (*MallocFunction)( unsigned int, unsigned int );
|
|
// aligned free
|
|
typedef void (*FreeFunction)( void* );
|
|
// error reporting
|
|
typedef void (*AssertFunction)( bool, const char* );
|
|
|
|
void SetEndianSwapOnRead( bool endianSwapOnRead );
|
|
bool GetEndianSwapOnRead();
|
|
|
|
struct VelocityGrid
|
|
{
|
|
float mVelocity[ KINECT_GESTURE_VELOCITY_GRID_X ][ KINECT_GESTURE_VELOCITY_GRID_Y ][ 2 ];
|
|
};
|
|
#ifdef GESTURE_EVALUATOR
|
|
void Initialise(unsigned gestureCount);
|
|
#endif
|
|
void Initialise( unsigned int gestureCount, MallocFunction mallocFunction, FreeFunction freeFunction, AssertFunction assertFunction );
|
|
void Shutdown();
|
|
|
|
GestureHandle CreateGesture( void* buffer );
|
|
void DestroyGesture( GestureHandle gesture );
|
|
|
|
void SetNormalToGravity( const float* normalToGravity );
|
|
|
|
void Update( unsigned int playerIndex, const void* pSkeletonData, float fDeltaTimeInSeconds, const VelocityGrid* opticalFlowGrid );
|
|
void NewPlayer( unsigned int playerIndex, const void* pSkeletonData );
|
|
|
|
float DetectGesture( GestureHandle gesture, unsigned int playerIndex );
|
|
|
|
void GetGestureBoneWeights( GestureHandle gesture, float *weights, unsigned int numWeights );
|
|
float GetGestureEnergyMean( GestureHandle gesture );
|
|
float GetGestureEnergyStdDev( GestureHandle gesture );
|
|
|
|
float GetEnergyLevel( unsigned int playerIndex );
|
|
}
|
|
|
|
#endif // #ifndef __KINECTGESTUREDETECTOR_H__
|
|
|