I wish to be able to get a curser working in unity using Kinect. its essential that i do this by using the kinect sdk as a plugin into unity and not to use openni , ive managed to get it half working however its not really perfected. At the moment ive got it working along the x axis but it doesnt cover the whole screen. It would be more ideal to have the cursor start at the center of the screen the move accordingly. At the moment when moving more towards the right side of the screen it only goes halfway. I rather not hard code in a float number, but to rather calculate according to screen. In unity there was a function where you could scale to world
void Update () {
if (sw.pollSkeleton())
{
distance.x=sw.bonePos[0,2].x - sw.bonePos[0,7].x;//bonpos 0,2 is the spine 0,7 is the left hand
//spine position will usually be around (0.1,1.2,0.3)
/*
Debug.Log("the distance is"+distance.x);
*/
/*
* (-0.2,1.4,0.7) hand over head on left side// essentially by this trime
* (-0.3,1.0,0.6) hand near shoulders resonably high (-0.4,1.0,0.7) shoulders meaning anything 1.0 region
* (-0.2,0.6,0.7) hand lower torso level curser should then be alive
* (-)
* (-0.1,0.7,0.3)hand at the side shouldnt record curser (-0.1,0.5,0.3) 0.0 -0.1
*
*/
/*
* (0.3,1.3,0.8)left hand over head on right side
* (0.2,1.0,0.8) hand higher up on the other side right shoulder (0.4,1.0,0.7) further right
* (0.3,0.9,0.7) hand lower then shoullder but pointing towards the right
* (0.3,0.7,0.6) hand lower right below waist
* (0.2,0.7,0.5) hand close to groin and spine
*/
//if the left hands x axis is less than that of the spine
//
if(sw.bonePos[0,7].x<sw.bonePos[0,2].x)
{
//distance being 0.2053766 * -0.5f
difference = -0.5f*distance.x;
//difference being -0.1026883
Debug.Log("hand is over by the left");
}
if(sw.bonePos[0,7].x>=sw.bonePos[0,2].x)
{
difference = -0.8f*distance.x;
Debug.Log("hand is over by the right");
}
Debug.Log("Dist: " + distance.x + ", Diff: " + difference);
Debug.Log("The spine is positioned at :" +sw.bonePos[0,2]+"The left hand is at :" +sw.bonePos[0,7]+" the position of the cursor"+transform.position);
}
}
void OnGUI() {
//left top width height
Rect r = new Rect(Screen.width * (difference + 0.3f),0.5f*Screen.height,100,100);
/*screen.width 480 * 0.1973117,0.5f*1280,100,100
*
*
*/
GUI.Label(r,cursor);
//GUI.DrawTexture();
}
}